turtleを使用して疫病給油図案を描く
34756 ワード
turtleというライブラリは、子供たちにプログラミングの知識を紹介するために最もよく使われる方法ライブラリとして紹介されています.それは主にプログラム設計の入門に用いられ、標準ライブラリの一つです.公式ドキュメントは以下の通りです.turtleを利用して多くの複雑な絵を作ることができます.本文は疫病の間、武漢を応援する図案を簡単に描きます.
ライブラリファイルのインポート
えんけいを描く
サイクル回転微小角度により円弧を形成する.
移動ブラシを関数にカプセル化
愛の主体部分を描く
正のn角形の描画を関数にカプセル化
国旗に描かれた五角星を関数にカプセル化
国旗上の五角星の位置が変化するため、外接円に基づいて五角星の位置を決定することができる.
国旗をかく
国旗と愛の相対的な大きさと位置はパラメータlarge,large 1を調整することができる.
文末署に自署する
位置の調整に注意する.
応援メッセージを印刷
よびだし
Pythonのif name=“main”:の役割と原理について、以下に分かりやすいブログを推薦して参考にします:if name=“main”
以下に完全なコードを添付して参考にします.gitにはすでに描かれたgif図があります.gitリンク
ライブラリファイルのインポート
import turtle
import math
import time
えんけいを描く
サイクル回転微小角度により円弧を形成する.
def hart_arc():
''' '''
for i in range(200):
turtle.right(1)
turtle.forward(3)
移動ブラシを関数にカプセル化
def move_pen_position(x,y):
''' '''
turtle.hideturtle() #
turtle.up() #
turtle.goto(x,y) # ( 0,0)
turtle.down() #
turtle.showturtle() #
愛の主体部分を描く
def draw_main():
''' '''
#
turtle.setup(width=1200, height=750) #
turtle.color('pink', 'pink') #
turtle.pensize(5) #
turtle.speed(1) #
#
move_pen_position(x=0, y=-270) #
turtle.left(140) # 140
turtle.begin_fill() #
# ( )
turtle.forward(336) # , 224
#
turtle.speed(0) # ,
hart_arc() #
turtle.left(120) #
hart_arc() #
# ( )
turtle.speed(1) #
turtle.forward(336)
time.sleep(0.8)
turtle.end_fill() #
#
move_pen_position(0, 0) #
turtle.hideturtle() #
turtle.color('#CD5C5C', 'black') #
time.sleep(0.5)
# font: 、 ( ) align:
turtle.write(love, font=('times new roman', 30, 'bold'), align="center")
正のn角形の描画を関数にカプセル化
def draw_n_angle(turtle, size=50, num=5, color=None):
''' n
args:
turtle: turtle
size: int ,
n: int ,
color: str, ,
'''
if color:
turtle.begin_fill()
turtle.fillcolor(color)
for i in range(num):
turtle.forward(size)
turtle.left(360.0 / num)
turtle.forward(size)
turtle.right(2 * 360.0 / num)
if color:
turtle.end_fill()
国旗に描かれた五角星を関数にカプセル化
国旗上の五角星の位置が変化するため、外接円に基づいて五角星の位置を決定することができる.
def draw_5_angle(turtle=None, start_pos=(0, 0), end_pos=(0, 10), radius=120, color=None):
''' 、
args:
turtle: turtle
start_pos: int tuple,
end_pos: int tuple,
radius:
color: str, ,
'''
turtle = turtle or turtle.Turtle()
size = radius * math.sin(math.pi / 5) / math.sin(math.pi * 3 / 10)
angle = math.degrees(math.atan2(end_pos[1] - start_pos[1], end_pos[0] - start_pos[0]))
print(angle)
turtle.penup()
turtle.goto(start_pos)
turtle.setheading(0)
turtle.left(angle)
turtle.fd(radius)
turtle.pendown()
turtle.right(math.degrees(math.pi * 9 / 10))
draw_n_angle(turtle, size, 5, color)
国旗をかく
国旗と愛の相対的な大きさと位置はパラメータlarge,large 1を調整することができる.
def draw_flag():
large1 = 1.18 #
large = 1 #
# , 30*20
width, height = 300*large1, 200*large1
#
# window = turtle.Screen()
# turtle = turtle.Turtle()
#turtle.reset()#
turtle.pensize(1)
turtle.color("red")
degree = 0
turtle.setheading(degree)# ,degree
turtle.hideturtle()
turtle.speed(10)
#
turtle.penup()
turtle.goto(-300*large1 / 2, 200*large1 / 2) #
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor('red')
turtle.fd(width)
turtle.right(90)
turtle.fd(height)
turtle.right(90)
turtle.fd(width)
turtle.right(90)
turtle.fd(height)
turtle.right(90)
turtle.end_fill()
#
draw_5_angle(turtle, start_pos=(-100*large, 50*large), end_pos=(-100*large, 80*large), radius=30, color='yellow')
#
stars_start_pos = [(-5*large, 8*large), (-3*large, 6*large), (-3*large, 3*large), (-5*large, 1*large)]
for pos in stars_start_pos:
draw_5_angle(turtle, start_pos=(pos[0] * 10*large, pos[1] * 10*large), end_pos=(-10 * 10*large*large, 5 * 10*large*large), radius=10,
color='yellow')
文末署に自署する
位置の調整に注意する.
def draw_signature():
''' '''
if signature != '':
turtle.color('red', 'blue')
time.sleep(0.2)
move_pen_position(270, -270)
turtle.hideturtle() #
turtle.write(signature, font=('Microsoft YaHei', 20), align="center")
応援メッセージを印刷
def draw_word(words,positionx=500,alignstyle="right"):
''' '''
turtle.color('red', 'blue')
time.sleep(0.2)
move_pen_position(positionx, 0)
turtle.hideturtle() #
turtle.write(words, font=('KaiTi', 90), align=alignstyle)
よびだし
if __name__ == "__main__":
love = "
, " #
signature = "----- " #
draw_main() #
time.sleep(2)
draw_flag() #
time.sleep(0.5)
draw_word(" ",-500,"left") #
draw_word(" ")
time.sleep(0.5)
draw_signature() #
time.sleep(1)
turtle.reset()
turtle.exitonclick() #
Pythonのif name=“main”:の役割と原理について、以下に分かりやすいブログを推薦して参考にします:if name=“main”
以下に完全なコードを添付して参考にします.gitにはすでに描かれたgif図があります.gitリンク