Pythonの学習 7章 Pythonで画を描く

Pythonスタートブック7章 Pythonで画を描く

基本

  • 画を書くためにturtleモジュールを使用する
import turtle
  • 末尾の待機動作のためtimeのインポート
import time
  • turtleモジュールの中のTurtle型の初期化メソッドを呼び出す。この操作でできたTurtle型のインスタンスにKameという変数名をつけることにする。
Kame=turtle.Turtle()
  • このままだと表示される図形は矢印なので、turtle.Turtle型のshapeメソッドを使って亀の形にする。
Kame.shape('turtle')
  • 大きさはturtle.Turtle型のshapesizeメソッドで変更できる。引数は縦、横、輪郭の線の太さの順
Kame.shapesize(2,2,3)

亀を動かす

  • turtle.Turtle型のforwardメソッドで亀を前進させられる(下は150ピクセル移動)
Kame.forward(150)
  • turtle.Turtle型のshapesizeメソッドで亀を前進させられる(下は150ピクセル移動)
Kame.backward(150)
  • 左右への方向転換(90度回転する)
Kame.left(90)
Kame.right(90)
Kame.circle(150)

操作する

  • 一つ前の動作の取り消し
Kame.undo()
  • 亀を中央に戻して、全ての記載を削除する
Kame.home()
Kame.clear()
  • 表示されるウィンドウの現在のサイズを把握するメソッド
a=Kame.getscreen().window_height
b=Kame.getscreen().window_width
#表示する
print("縦=",a,",横=",b)
  • 亀の現在いる位置を把握するメソッド
c=Kame.position()
#表示する
print(c)

三角形を描く

  • 普通に三角形を描いてみる(1辺200)
Kame.forward(200)
Kame.left(120)
Kame.forward(200)
Kame.left(120)
Kame.forward(200)

Kame.home()
  • for文を使用して三角形(一辺120)を描く
    この例では、三角形(一辺120)を描くためにfor文で書かれたコードを三回繰り返すのでrange関数で長さ3のリストをつくる(for文の書き方はfor文参照)
for i in range(3):
    Kame.right(120)
    Kame.forward(120)

星を描く

Kame.home()
Kame.clear()
for i in range(5):
    Kame.right(144)
    Kame.forward(200)

ランダムに亀を動かしてみる

Kame.home()
Kame.clear()

#方向性をランダムにするには以下で可能
a=random.randint(1,360)
  • Tureの間、永遠に繰り返すので、半径200の円をはみ出したら、動作終了とするランダム動作を作る。
    まず、半径200の円を描く(オリジナルの関数を作成して、呼び出した。作り方は8章参照)
import cycle200
cycle200.cycle()
  • 半径200の円をはみ出さない限り、繰り返し
while True:
    Kame.pencolor('red')
    Kame.left(random.randint(1,360))
    Kame.forward(25)
    #永遠に動かないように条件を追加する
    #半径200の円をはみ出したら、動作終了とする
    if Kame.distance(0,0)>200:
        Kame.home()
        #3秒待ってから、whileから抜け出す
        time.sleep(3)
        break
  • 200を超えたら、円内に亀が戻るプログラム
while True:
    Kame.pencolor('green')
    Kame.left(random.randint(1,360))
    Kame.forward(50)
    #永遠に動かないように条件を追加する
    #半径200の円をはみ出したら一つ前の動作へ戻る
    #戻るので、線が円をはみ出さない
    if Kame.distance(0,0)>200:
        #whileから抜け出す
        Kame.undo()
  • 5秒待つ。これを書かないとすぐにウィンドウが閉じてしまう
time.sleep(5)