一連の記事
序文
Pythonを使って3匹のラブポケモンを実現しよう!
赤ちゃんカメ
Turtle in Python は、さまざまなグラフィックスをプログラムで描画できるようにする、シンプルで使いやすい描画ライブラリです。内部にタートルを実装しており、タートルの移動方向や長さなどのパラメータを制御して描画することができるので、初心者の入門に最適です。この記事では、初心者がすぐに始められるように、タートルの基本的な描画機能と作例を紹介します。
1.タートルをインストールする
Turtle は Python に付属している標準ライブラリなので、何もインストールする必要はなく、Python ターミナルまたはエディタに Turtle ライブラリをインポートするだけで使用を開始できます。
import turtle
2. Turtleの基本的な描画機能
Turtle には基本的な描画関数が多数ありますが、よく使用される関数をいくつか紹介します。
- Turtle.forward( distance): タートルを現在の方向に指定された距離だけ移動します。
- タートル.バックワード(距離): タートルを反対方向に指定された距離だけ移動します。
- Turtle.right(angle): 現在の方向を指定された角度だけ右に回転します。
- Turtle.left(angle): 現在の方向を指定された角度だけ左に回転します。
- Turtle.penup(): ブラシを持ち上げると、タートルの軌道は描画されなくなります。
- Turtle.pendown(): ブラシを置き、タートルの軌跡を描き続けます。
- Turtle.pensize(width): ブラシの幅を指定したサイズに設定します。
- Turtle.pencolor(color): ブラシの色を指定した色に設定します。
- Turtle.fillcolor(color): 塗りつぶしの色を指定した色に設定します。
- Turtle.begin_fill(): 塗りつぶしを開始します。
- Turtle.end_fill(): 塗りつぶしを終了します。
- Turtle.circle(radius): 指定された半径の円を描画します。
3.カメの実例
以下は、上記の基本的な描画関数をよりよく理解するのに役立ついくつかのタートルの例です。
3.1 簡単な描画
まずは簡単な図形を描きましょう 亀を前方に 100 ピクセル移動し、次に左に 90 度回転し、さらに前に 100 ピクセル移動し、最後に左に 90 度回転して正方形を形成します。
import turtle
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.done() # 表示绘图结束
3.2 カラフルなスパイラルグラフィックを描く
次に、亀を前進と回転を繰り返しながら、角度や色を変えながらカラフルな螺旋を描いていき、最終的には美しい螺旋を描きます。
import turtle
turtle.speed(10)
for i in range(200):
turtle.forward(i)
turtle.right(98)
turtle.pencolor('red')
turtle.pencolor('orange')
turtle.pencolor('yellow')
turtle.pencolor('green')
turtle.pencolor('cyan')
turtle.pencolor('blue')
turtle.pencolor('purple')
turtle.done()
3.3 五芒星を描く
次に、五芒星を描きましょう。カメを前方に 100 ピクセル移動し、左に 72 度回転することを 5 回繰り返して、五芒星を作成します。
import turtle
turtle.pensize(5)
turtle.pencolor('purple')
turtle.fillcolor('yellow')
turtle.begin_fill()
for i in range(5):
turtle.forward(100)
turtle.right(72)
turtle.forward(100)
turtle.left(144)
turtle.end_fill()
turtle.done()
3.4 円と四角形を描く
次に、円と四角を描きましょう。最初に円を描き、次に円の中心から四角を描きます。
import turtle
turtle.circle(50) # 画一个圆形
turtle.penup() # 将画笔抬起
turtle.goto(0, -50) # 将海龟移动到圆心下面的位置
turtle.pendown() # 将画笔放下
for i in range(4):
turtle.forward(100)
turtle.left(90)
turtle.done()
上記の例を通して、Turtle ライブラリが初心者の使用に非常に適していることがわかります。そのシンプルで使いやすいインターフェイスとリアルタイムの描画効果により、Python プログラミングの基本的な考え方と方法をすぐに理解して習得できます。 。
ピカチュウ
ミニバージョン
プログラミング
import turtle as t
import time
# 基础设置
t.setup(500, 500) # 设置画布大小
t.bgcolor("pink")
t.title("pikachu")
t.pensize(1) # 设置画笔的大小
# 画左偏曲线函数
def left(ang, dis, step, n):
for i in range(n):
dis += step # dis增大step
t.lt(ang) # 向左转ang度
t.fd(dis) # 向前走dis的步长
def right(ang, dis, step, n):
for i in range(n):
dis += step
t.rt(ang) # 向左转ang度
t.fd(dis) # 向前走dis的步长
# 画耳朵
def Ears():
t.color("black", "yellow")
# 左耳朵曲线
t.pu() # 提笔
t.goto(-50, 100) # 笔头初始位置
t.pd() # 下笔
t.setheading(110) # 画笔角度
t.begin_fill()
left(1.2, 0.4, 0.1, 40)
t.setheading(270) # 画笔角度
left(1.2, 0.4, 0.1, 40)
t.setheading(44) # 画笔角度
t.forward(32)
t.end_fill()
# 右耳朵曲线
t.pu() # 提笔
t.goto(50, 100) # 笔头初始位置
t.pd() # 下笔
t.setheading(70) # 画笔角度
t.begin_fill()
right(1.2, 0.4, 0.1, 40)
t.setheading(270) # 画笔角度
right(1.2, 0.4, 0.1, 40)
t.setheading(136) # 画笔角度
t.forward(32)
t.end_fill()
# 耳朵黑
t.begin_fill()
t.fillcolor("black")
t.pu() # 提笔
t.goto(88, 141) # 笔头初始位置
t.pd() # 下笔
t.setheading(35) # 画笔角度
right(1.2, 1.6, 0.1, 16)
t.setheading(270) # 画笔角度
right(1.2, 0.4, 0.1, 25)
t.setheading(132) # 画笔角度
t.forward(31)
t.end_fill()
t.begin_fill()
t.fillcolor("black")
t.pu() # 提笔
t.goto(-88, 141) # 笔头初始位置
t.pd() # 下笔
t.setheading(145) # 画笔角度
left(1.2, 1.6, 0.1, 16)
t.setheading(270) # 画笔角度
left(1.2, 0.4, 0.1, 25)
t.setheading(48) # 画笔角度
t.forward(31)
t.end_fill()
# 画尾巴
def Tail():
# 尾巴
t.begin_fill()
t.fillcolor("yellow")
t.pu() # 提笔
t.goto(64, -140) # 笔头初始位置
t.pd() # 下笔
t.setheading(10) # 画笔角度
t.forward(20)
t.setheading(90) # 画笔角度
t.forward(20)
t.setheading(10) # 画笔角度
t.forward(10)
t.setheading(80) # 画笔角度
t.forward(100)
t.setheading(35) # 画笔角度
t.forward(80)
t.setheading(260) # 画笔角度
t.forward(100)
t.setheading(205) # 画笔角度
t.forward(40)
t.setheading(260) # 画笔角度
t.forward(37)
t.setheading(205) # 画笔角度
t.forward(20)
t.setheading(260) # 画笔角度
t.forward(25)
t.setheading(175) # 画笔角度
t.forward(30)
t.setheading(100) # 画笔角度
t.forward(13)
t.end_fill()
# 画脚
def Foots():
# 脚
t.begin_fill()
t.fillcolor("yellow")
t.pensize(2)
t.pu() # 提笔
t.goto(-70, -200) # 笔头初始位置
t.pd() # 下笔
t.setheading(225) # 画笔角度
left(0.5, 1.2, 0, 12)
left(35, 0.6, 0, 4)
left(1, 1.2, 0, 18)
t.setheading(160) # 画笔角度
t.forward(13)
t.end_fill()
t.begin_fill()
t.fillcolor("yellow")
t.pensize(2)
t.pu() # 提笔
t.goto(70, -200) # 笔头初始位置
t.pd() # 下笔
t.setheading(315) # 画笔角度
right(0.5, 1.2, 0, 12)
right(35, 0.6, 0, 4)
right(1, 1.2, 0, 18)
t.setheading(20) # 画笔角度
t.forward(13)
t.end_fill()
# 画身体
def Body():
# 外形轮廓
t.begin_fill()
t.pu() # 提笔
t.goto(112, 0) # 笔头初始位置
t.pd() # 下笔
t.setheading(90) # 画笔角度
t.circle(112, 180)
t.setheading(250) # 画笔角度
left(1.6, 1.3, 0, 50)
left(0.8, 1.5, 0, 25)
t.setheading(255) # 画笔角度
left(0.4, 1.6, 0.2, 27)
left(2.8, 1, 0, 45)
right(0.9, 1.4, 0, 31)
t.setheading(355) # 画笔角度
right(0.9, 1.4, 0, 31)
left(2.8, 1, 0, 45)
left(0.4, 7.2, -0.2, 27)
t.setheading(10) # 画笔角度
left(0.8, 1.5, 0, 25)
left(1.6, 1.3, 0, 50)
t.end_fill()
def Eyes_Open():
# 左眼睛
t.begin_fill()
t.fillcolor("black")
t.pu() # 提笔
t.goto(-46, 10) # 笔头初始位置
t.pd() # 下笔
t.setheading(90) # 画笔角度
t.circle(5, 360)
t.end_fill()
# 右眼睛
t.begin_fill()
t.fillcolor("black")
t.pu() # 提笔
t.goto(46, 10) # 笔头初始位置
t.pd() # 下笔
t.setheading(-90) # 画笔角度
t.circle(5, 360)
t.end_fill()
# 画脸
def Face():
# 脸蛋
t.begin_fill()
t.fillcolor("red")
t.pu() # 提笔
t.goto(-63, -10) # 笔头初始位置
t.pd() # 下笔
t.setheading(90) # 画笔角度
t.circle(10, 360)
t.end_fill()
t.begin_fill()
t.fillcolor("red")
t.pu() # 提笔
t.goto(63, -10) # 笔头初始位置
t.pd() # 下笔
t.setheading(-90) # 画笔角度
t.circle(10, 360)
t.end_fill()
# 嘴巴
t.pensize(2.2)
t.pu() # 提笔
t.goto(0, 0) # 笔头初始位置
t.pd() # 下笔
t.setheading(235) # 画笔角度
right(5, 0.8, 0, 30)
t.pu() # 提笔
t.goto(0, 0) # 笔头初始位置
t.pd() # 下笔
t.setheading(305) # 画笔角度
left(5, 0.8, 0, 30)
# 画手
def Hands():
# 左手
t.pensize(2)
t.pu() # 提笔
t.goto(-46, -100) # 笔头初始位置
t.pd() # 下笔
t.setheading(285) # 画笔角度
right(0.4, 1.2, 0, 26)
right(5, 0.35, 0, 26)
right(0.3, 1.2, 0, 15)
# 右手
t.pu() # 提笔
t.goto(46, -100) # 笔头初始位置
t.pd() # 下笔
t.setheading(255) # 画笔角度
left(0.4, 1.2, 0, 26)
left(5, 0.35, 0, 26)
left(0.3, 1.2, 0, 15)
def Eyes_Close():
# 左眼睛
t.pu() # 提笔
t.goto(-46, 12) # 笔头初始位置
t.pd() # 下笔
t.setheading(180) # 画笔角度
t.forward(10)
# 右眼睛
t.pu() # 提笔
t.goto(46, 12) # 笔头初始位置
t.pd() # 下笔
t.setheading(0) # 画笔角度
t.forward(10)
# 爱心
def Love(): # 画爱心函数,就是用turtle画爱心
t.pensize(1)
t.penup()
t.color("pink")
t.goto(-2.5, -100)
t.pendown()
t.begin_fill()
t.fillcolor('pink')
t.setheading(120)
t.circle(20, 195)
t.fd(20 * 2.4)
t.lt(90)
t.fd(20 * 2.4)
t.circle(20, 195)
t.end_fill()
# 初始化
def Init():
Ears()
Tail()
Foots()
Body()
Face()
Hands()
Eyes_Open()
Love()
# 眨眼睛
def Close():
Ears()
Tail()
Foots()
Body()
Face()
Hands()
Eyes_Close()
def Open():
Ears()
Tail()
Foots()
Body()
Face()
Hands()
Eyes_Open()
Love()
def main():
# 初始化皮卡丘
Init()
# 眨眼睛动画
for i in range(30):
if i % 2 == 0:
t.reset()
t.hideturtle()
Close()
t.update()
time.sleep(0.3)
else:
t.reset()
t.hideturtle()
Open()
t.update()
time.sleep(1)
t.tracer(0)
main()
t.done()
プログラム分析
Pythonのturtleライブラリを使ってピカチュウを描くプログラムです。プログラムの分析は次のとおりです。
1. 基本設定
まず、プログラムはキャンバス サイズ、背景色、ウィンドウ タイトルなどの基本設定を設定します。
2. 左傾き曲線関数と右傾き曲線関数を描く
このプログラムは、左右の曲線を描画するための 2 つの関数 left() と right() を定義します。これら 2 つの関数は、回転角度、前進距離、増加した前進距離、および曲線セグメントの数という 4 つのパラメーターをそれぞれ受け入れます。これら 2 つの関数は、turtle ライブラリによって提供される関数を使用して曲線を描画します。
3. 耳、尻尾、足、体を描く
このプログラムでは、Ears()、Tail()、Foots()、Body() の 4 つの関数を定義し、これらの関数を使用してピカチュウの基本的な輪郭を描画します。これらの関数は、前に定義した left() 関数と right() 関数を使用して曲線を描画します。
4.目と口を描く
プログラムは関数 Face() を定義し、目や口などのピカチュウの顔の特徴を描画します。
5. 画手
プログラムではHands()という関数を定義し、left()、right()関数と、前進、回転などの基本的な操作関数を利用して手描きを実現しています。このうち、左手と右手は対称に描かれています。
6. 点滅アニメーション
このプログラムでは、目の開閉アニメーション効果を実現するために Open() 関数と Close() 関数を定義します。これら 2 つの関数を継続的に呼び出すことで、プログラムはピカチュウが目を瞬くアニメーション効果を実現します。
7. 愛
プログラムは、関数 Love() を定義します。この関数は、タートル ライブラリによって提供される関数と、転送、回転、描画と塗りつぶしなどの基本操作を使用して、愛を描画します。
8. 初期化とメイン関数
このプログラムは Init() 関数を定義します。この関数は、以前に定義された関数を呼び出してピカチュウの描画を完了するために使用されます。このプログラムでは、メイン関数 main() も定義しています。この関数では、Init() 関数を使用してピカチュウを初期化し、点滅アニメーション効果を実現します。
大まかに言うと、タートルライブラリが提供する関数や基本操作関数を利用してピカチュウの各部を描画し、関数を呼び出して基本操作の順序やパラメータを制御することで、かわいいピカチュウ描画プログラムを実現します。
プレミアムバージョン
プログラミング
from turtle import *
import turtle as t
def infoPrt():
print('coordinate: ' + str(t.pos()))
print('angle: ' + str(t.heading()))
t.tracer(0)
t.pensize(3)
t.hideturtle()
t.colormode(255)
t.color("black")
t.setup(700, 650)
t.speed(1)
t.st()
#t.dot()
t.pu()
#t.goto(-150,100)
t.goto(-210,86)
t.pd()
infoPrt()
……(完整代码文末公众号免费获取哦)
プログラム分析
これはタートルライブラリを使ってピカチュウを描くプログラムです。プログラムの分析は次のとおりです。
1. 基本設定
プログラムはturtleライブラリが提供する関数や基本的な操作関数を利用して描画を行います。描画を開始する前に、プログラムはいくつかの基本設定を実行します。たとえば、キャンバス サイズ、ブラシの太さ、ブラシの非表示などを設定します。
2.グラフィックを描く
このプログラムは、タートルライブラリが提供する関数や基本操作機能を利用して、ピカチュウの頭、胴体、手足、顔などの各部位を描画します。描画プロセス中に、プログラムは、タートル ライブラリによって提供される円の描画、直線の描画、色の塗りつぶしなどの関数を使用します。
3. テキストを描画する
プログラムはタートルライブラリが提供する関数や基本操作関数を利用して「ピカ!」という文字を描画し、キャンバス上に配置します。プログラムは描画に Turtle インスタンスを使用します。
4.ハートを描く
プログラムは、タートルライブラリが提供する関数と基本的な操作関数を使用して、ピンクのハートを描画します。描画プロセス中に、プログラムは、タートル ライブラリによって提供される円の描画、直線の描画、色の塗りつぶしなどの関数を使用します。
5. まとめ
要約すると、これはタートルライブラリを使用してピカチュウを描画するプログラムです。このプログラムは、タートルライブラリが提供する関数や基本操作関数を利用して、さまざまな描画機能を実装し、かわいいピカチュウを描画します。また、プログラムは Turtle インスタンスを使用してテキストを描画し、キャンバスの上にピンクのハートを配置します。このプログラムは、Python と Turtle ライブラリの能力を実証すると同時に、ピカチュウのかわいい画像をユーザーに示します。
デラックスエディション
プログラミング
import turtle
turtle.setup(999, 777)
turtle.title('Pikachu')
pikachu = Pikachu()
pikachu.start()
turtle.penup()
turtle.goto(-444,200)
turtle.bgcolor("blue")
turtle.color("gold")
turtle.write("Pika !", move = True, align="left", font=("Comic Sans MS", 66, "bold"))
turtle.pensize(1)
turtle.penup()
turtle.color("skyblue")
turtle.goto(-2.5, -100)
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor('skyblue')
turtle.setheading(120)
turtle.circle(30, 195)
turtle.fd(30 * 2.4)
turtle.lt(90)
turtle.fd(30 * 2.4)
turtle.circle(30, 195)
turtle.end_fill()
turtle.pendown()
turtle.mainloop()
……(完整代码文末公众号免费获取哦)
プログラム分析
これは、タートルライブラリを使用してピカチュウを描画するプログラムであり、プログラムを分析すると次のようになります。
1. プログラムの基本設定
プログラムは描画を開始する前に、キャンバス サイズの設定、ブラシの太さ、速度の設定、タートル描画トラックとドラッグ イベントの非表示など、キャンバス上でいくつかの基本設定を実行します。
2.各部の描画
このプログラムは、タートル ライブラリを使用して、左右の目、口、赤い頬、左右の耳などを含む、さまざまなメソッドを定義してピカチュウのさまざまな部分を描画します。描画プロセス中に、プログラムは、タートル ライブラリによって提供される円の描画、直線の描画、色の塗りつぶしなどの関数を使用します。
3.体のパーツを描く
プログラムは、bodyメソッドを定義することで、タートルライブラリを使用してピカチュウの胴体部分を描画します。描画プロセスでは、プログラムは円弧の描画、曲線の描画、直線の描画、タートル ライブラリが提供する色の塗りつぶしなどの機能を使用して、体の詳細な描画を完成させます。
4.帽子を描く
帽子の描き方はキャップで、帽子の形や赤い部分、つばなどの細部をタートルライブラリを使って描きます。描画プロセス中に、プログラムは、タートル ライブラリによって提供される円の描画、直線の描画、色の塗りつぶしなどの関数を使用します。
5. 文字や模様を描く
このプログラムは、タートルライブラリが提供する関数と基本操作関数を利用して「ピカ!」という文字を描画したり、タートルライブラリが提供する関数を利用して小さな模様を描画したりします。描画が完了すると、プログラムは Turtle インスタンスを使用してテキストを描画し、キャンバス上に配置します。
6. まとめ
要約すると、これはタートルライブラリを使用してピカチュウを描画するプログラムです。このプログラムは、タートルライブラリが提供する関数や基本操作関数を利用して、さまざまな描画機能を実装し、かわいいピカチュウを描画します。また、プログラムは Turtle インスタンスを使用してテキストを描画し、キャンバス上にかわいい小さなパターンを配置します。このプログラムは Python と Turtle ライブラリの能力を実証し、ピカチュウのかわいい画像をユーザーに提示します。
終わり
ご協力ありがとうございます!