13時間目タイトル

「かめののろい」でPython #13時間目

13時間目 座標(ざひょう)を操って多角形を書く

こんにちは!筋肉痛が2日おくれできて、4日続いているヒラバヤシヤスキです!
12時間目までで前半が終わり、今日から後半に入っていきます!

後 半 では 算数 ・ 数学 に 役 立 つプログラムを 考 えてゆきます。 それに は、 座 標 の 知 識 が 不可 欠 になります。

ということなので、ここからは座標を学んでいきます!
まずは、スクリーンの大きさを測るところからスタートするもよう!
IDLEを開いて、以下を入力します。

from turtle import*
window_width()
window_height()

使っているPCなどの環境によって変わるみたいですが、僕の場合はこんな感じになりました。

縦も横も684ピクセルの正方形のスクリーンのようです。

これを座標で表すと、中心が(x,y)=(0,0)となり、端は±324になるようです。
例えば、A座標(-150,200)、B座標(200,100)、C座標(-150,-300)とすると以下のようになるようです。

※テキストから引用のため、縦の長さが僕のスクリーンとは異なります。

座標までカメさんをすすめるgoto()の登場!

ここで、カメを任意の座標へ移動できるメソッドgoto(x,y)が登場です!
例えば、C座標に行かせたい場合には、goto(-150,-300)とすればよいんですね。

早速以下の課題に取り組みます。

goto(-150,-300)を 使 ってカメに 一 辺 300 ピクセルの 正方形 (正 四角 形) を 描 かせるプログラムを 作 ってみましょう。

テキストにはいくつかヒントがありましたが、今回はノーヒントで挑戦してみます!

書き方はいろいろパターンがありそうですが、せっかく座標をならったので、座標で書いてみます!

まず、goto(-150,-300)を使うのであれば、正方形の4つの座標は
C(-150,-300)
D(150,-300)
E(150,0)
F(-150,0)

の4点を結ぶように動けばいいことになりますね。

書くべき図形はこんな感じですね。
プログラムの方向性としては、「for文で繰り返し&変数リストから各点のx座標とy座標を取り出して描く」で考えていこうと思います。

まず、書く順番ですが、今回はFからスタートさせれば、原点からの軌道が、辺EFで上書きされるため、penup()する必要がないので、Fからスタートさせます!(例えばCからスタートするのであれば、penup()をしないと、不要な線が残ってしまいます。)

ですので、F→C→D→E→Fの順番でx座標とy座標をそれぞれ変数リストにします。

x=[-150,-150,150,150,-150]
y=[0,-300,-300,0,0]

それを for文で取り出せばよいので、プログラムは以下の通りになりそうです。

from turtle import *
shape('turtle')
shapesize(2,2)

#F→C→D→E→Fの座標を変数リストに入れる
x=[-150,-150,150,150,-150]
y=[0,-300,-300,0,0]

#iを0→1→2→3→4の5回繰り返す
for i in range(5):
   goto(x[i],y[i])

順番が0からスタートする点に注意ですね。
さて、実行します!

カメさんの方向が変わらないのが気味が悪いですが、うまくいきました!!!
気持ちいですね!

模範解答もご紹介します!

from turtle import *
shape('turtle')
shapesize(2,2)
penup()
goto(-150,-300)
pendown()
pencolor('red')
for i in range(4):
    forward(300)
    left(90) 

なるほど、座標指定は最初だけで、あとは
forward()とleft()でプログラムしているんですね。
これを実行すると…

ちゃんと、カメさんが方向を変えていますね笑

さて、今日はここまでです!お読みいただきありがとうございました^^


【今回の学び】
・座標を指定してカメさんを移動させることができる(ただしカメさんの向きはそのまま)
【未解決の疑問】
・kame=turtle と kame=turtle.Turtle() は同じ働きをする。テキストではあえて後者なのはなぜか?
・長い動画をアップする方法はあるか?
・undo()の挙動が良くわからない
 (どの時点までやり直し?)


「かめののろい」の目次

0時間目 まずパソコンにPythonをインストール
1時間目 IDLEを起ち上げ まずはコマンドラインでカメさん登場
2時間目 楽してカメさん エディターを使いこなそう!
3時間目 変数(箱)を使ってturtleを操ってみる
4時間目 同じ命令の繰り返しfor を使ってturtleを操ってみる
5時間目 for を使ってturtleをさらに操ってみる②
6時間目 for を入れ子にしてturtleをさらに操ってみる③
7時間目 for と変数でturtleをさらにさらに操ってみる④
8時間目 randomを使ってturtleを操ってみる①
9時間目 randomを使ってturtleをさらに操ってみる②
10時間目 条件文if elseともう1つのくり返しwhileで数当てゲームを作る
11時間目 条件文ifとelif・elseでおみくじを作る
12時間目 おみくじの結果でカメがよろこぶ
13時間目 座標(ざひょう)を操って多角形を書く
14時間目 座標(ざひょう)を操って多角形を書く②
15時間目 今まで学習したメソッドを駆使して図形を描く①
16時間目 今まで学習したメソッドと演算子で図形を描く
17時間目 今まで学習したメソッドを駆使して図形を描く②
18時間目 同じ模様の書き方をアルゴリズムのちがいで書いてみる
19時間目 inputを使って大きさのちがう複雑な図形を描いてみる
20時間目 少し複雑な図形を描いてみる
21時間目 変数とfor・if文で少し複雑な図形を書いてみる
22時間目 図形から離れて少し遊んでみる
23時間目 関数を作って遊んでみる
24時間目 自動計算とループ処理で多角形を書く


この記事が気に入ったらサポートをしてみませんか?