[光-Hikari-のPython]03章-02 turtle グラフィックス（turtleの動作）

#[Python]03章-02 turtleの動作
前回、3章-01では、turtleを作成して終了しました。今回はそのturtleを動かしていきたいと思います。

なお、[3章-01](https://qiita.com/ko0821/items/ecc5af7cfa097f3fa3a7)で扱ったプログラムを使用します。前回、<font color="#00cccc">chap03</font>の中に、<font color="#00cccc">03-01-01.py</font>というファイル名でファイルを作成し、以下のコードを書きました。

```03-01-01.py
#turtleプログラムを動かすために外部からプログラムを読み込んでいる
import turtle

#taroという名前でturtle（亀）を作る。
taro = turtle.Turtle()

#形を亀に、色を緑にする
taro.shape('turtle')
taro.color('green')

#いったんここでプログラムを止める。
turtle.done()
```

今回は章立て上、<font color="#00cccc">chap03</font>の中に、<font color="#00cccc">03-02-01.py</font>というファイル名でプログラムを作成していきたいと思います。
<font color="#00cccc">03-02-01.py</font>を作成し、<font color="#00cccc">03-01-01.py</font>のプログラムをコピーし、<font color="#00cccc">03-02-01.py</font>に貼り付けてください。

```03-02-01.py
#turtleプログラムを動かすために外部からプログラムを読み込んでいる
import turtle

#taroという名前でturtle（亀）を作る。
taro = turtle.Turtle()

#形を亀に、色を緑にする
taro.shape('turtle')
taro.color('green')

#いったんここでプログラムを止める。
turtle.done()
```

##turtleを動かす
では早速turtle（taroと名付けました）を動かしてみましょう。
その前に、1つ確認しておきます。中学校の数学で関数を習ったと思いますが、taroは最初に(0, 0)の位置にいます。

そして、前回実行した通り、以下のように右を向いているため、x軸方向（右方向）に向いていることになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602679/c5c6e053-237e-3238-b35c-f16703a524b7.png)

したがって、最初動かすときには右方向に動くことになります。実際に右方向に動かしてみましょう。以下のコードを追加してください。

```03-02-01.py
#turtleプログラムを動かすために外部からプログラムを読み込んでいる
import turtle

#taroという名前でturtle（亀）を作る。
taro = turtle.Turtle()

#形を亀に、色を緑にする
taro.shape('turtle')
taro.color('green')

#亀をx軸方向に200動かす
taro.forward(200)   #＜＜＜＜追加

#いったんここでプログラムを止める。
turtle.done()

```

そして実行してみてください。taroが右方向に200動いたかと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602679/5df3c5fc-2c53-9f7b-2a53-44da482c5373.png)

taro.forward(*distance*)メソッドは、*distance*に距離を入力し、その分だけ前方向に動かすことができます。
詳細は以下のforwardメソッドのマニュアルをご確認ください。

※なお、forward()はfd()でも可能です。

[forward()メソッド](https://docs.python.org/ja/3/library/turtle.html#turtle.forward)

そして、*distance*の値を変えて動く距離が変わるかを見てみましょう。

#動きを遅くする
今、taroの動きを確認できたと思いますが、（亀なのに）少しスピードが速いので、ゆっくり動かしてみたいと思います。

以下のspeed()メソッドを先ほど入力したforward()メソッドの前に入力してみましょう。

```.py
#turtleの速度を遅くする
taro.speed(speed=1) 
```

[speed()メソッド](https://docs.python.org/ja/3/library/turtle.html#turtle.speed)

【マニュアルより】
タートルのスピードを 0 から 10 までの範囲の整数に設定します。引数が与えられない場合は現在のスピードを返します。

##turtleの方向転換をする
turtleは動かせましたが、これでは一方向しか動いていません。方向を変えることを考えてみます。

```03-02-01.py
#turtleプログラムを動かすために外部からプログラムを読み込んでいる
import turtle

#taroという名前でturtle（亀）を作る。
taro = turtle.Turtle()

#形を亀に、色を緑にする
taro.shape('turtle')
taro.color('green')

#速度を遅くする
taro.speed(speed=1) 

#亀をx軸方向に200動かす
taro.forward(200)
taro.left(90)    #＜追加

#いったんここでプログラムを止める。
turtle.done()
```
すると、最後にturtleが左周りに90°回転したと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602679/3cfa4001-39b0-975d-3b67-df226f61bdfc.png)

taro.left(*angle*)メソッドは、*angle*に角度を入力し、その分だけ回転させることができます。
詳細は以下のleftメソッドのマニュアルをご確認ください。

[left()メソッド](https://docs.python.org/ja/3/library/turtle.html#turtle.left)

【マニュアルより】
タートルを angle 単位だけ左に回します。 (単位のデフォルトは度ですが、 degrees() と radians() 関数を使って設定できます。) 角度の向きはタートルのモードによって意味が変わります。 mode() を参照してください。

※left()はlt()でも可能です。

なお、今回は扱いませんが、左があるということは、右もありますので、よろしければ試してください。

[right()メソッド](https://docs.python.org/ja/3/library/turtle.html#turtle.right)
【マニュアルより】
タートルを angle 単位だけ右に回します。 (単位のデフォルトは度ですが、 degrees() と radians() 関数を使って設定できます。) 角度の向きはタートルのモードによって意味が変わります。 mode() を参照してください。

※rightはrt()でも可能です。

#正方形を作る
ここまで作成したので、正方形を作成してみましょう。
以下のコードを入力してください。

```.py
#turtleプログラムを動かすために外部からプログラムを読み込んでいる
import turtle

#taroという名前でturtle（亀）を作る。
taro = turtle.Turtle()

#形を亀に、色を緑にする
taro.shape('turtle')
taro.color('green')

#速度を遅くする
taro.speed(speed=1)

#亀をx軸方向に200動かす
taro.forward(200)
taro.left(90)
taro.forward(200)   #＜追加
taro.left(90)   #＜追加
taro.forward(200)   #＜追加
taro.left(90)   #＜追加
taro.forward(200)   #＜追加
taro.left(90)   #＜追加

#いったんここでプログラムを止める。
turtle.done()
```

すると、以下のように正方形ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602679/f42a3eca-9068-fb6e-b96e-6618455de088.png)


##演習問題
<font color=blue>・以下の正三角形を描くプログラムを作成してください。（一辺は200です）</font>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602679/82db2bb4-1239-d5ac-0139-f53ebdd1afe2.png)

<font color=blue>・以下の正三角形を描くプログラムを作成してください。（一辺は100です、ペンの太さ5です。）
1つ習っていないメソッドがありますが、メソッドを調べてみましょう。
[メソッドリンク](https://docs.python.org/ja/3/library/turtle.html)
</font>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602679/db670bb9-227d-c821-3ea2-134cb9d7896b.png)

##最後に
今回は実際にturtleを動かしてみました。マニュアルを見てわかる通り、様々な処理があったかと思います。
最初はマニュアルを見てもわからないような用語があると思いますが、読んでいくうちに慣れてくると思います。
実際に**実務でもプログラムを書くよりかはマニュアルを読んで調べるといった作業のほうがほとんどといってもいい**ほどです。今のうちにマニュアルを読んで慣れておきましょう。プログラマは調べることが仕事だと思っています。

そして、マニュアルを読んでいろいろな動きを試してみてください。

###[【目次リンク】へ戻る](https://qiita.com/ko0821/items/379e8bd9e6ea01089419)