「かめののろい」で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時間目 自動計算とループ処理で多角形を書く
この記事が気に入ったらサポートをしてみませんか?