當我們學了turtle后,就想嘗試為自己心里喜歡的人畫一顆一顆愛心,想用代碼逗自己的小豬豬女孩開心,表達自己的愛意,那么福利來了,動動小手指,復制粘貼即可,不過有些地方需要適當修改,快給自己心愛的女孩看看吧💖
代碼如下:
import turtle import time # 實現清屏 def clear_screen(): turtle.penup() #畫筆抬起 turtle.goto(0,0) #定位到(0,0) turtle.color('white') turtle.pensize(800) #畫筆粗細 turtle.pendown() #畫筆落下 turtle.setheading(0) #設置朝向 turtle.fd(300) #前進 turtle.bk(600) #后退 # 初始化海龜的位置 def go_start(x, y, state): turtle.pendown() if state else turtle.penup() turtle.goto(x, y) #畫線,state為真時海龜回到原點,為假時不回到原來的出發點 def draw_line(length, angle, state): turtle.pensize(1) turtle.pendown() turtle.setheading(angle) turtle.fd(length) turtle.bk(length) if state else turtle.penup() turtle.penup() # 畫出發射愛心的小人 def draw_people(x, y): turtle.penup() turtle.goto(x, y) turtle.pendown() turtle.pensize(2) turtle.color('black') turtle.setheading(0) turtle.circle(35, 360) turtle.penup() turtle.pensize(3) turtle.setheading(90) turtle.fd(45) turtle.setheading(180) turtle.fd(20) turtle.setheading(0) turtle.fd(35) turtle.pendown() turtle.circle(4, 360) turtle.penup() turtle.goto(x, y) turtle.pensize(2) turtle.setheading(0) turtle.fd(20) turtle.setheading(90) turtle.fd(20) turtle.setheading(-90) turtle.pendown() turtle.circle(5, 180) turtle.penup() turtle.goto(x, y) turtle.setheading(-90) turtle.pendown() turtle.fd(20) turtle.setheading(0) turtle.fd(35) turtle.setheading(60) turtle.fd(10) turtle.penup() turtle.goto(x, y) turtle.setheading(-90) turtle.pendown() turtle.fd(40) turtle.setheading(0) turtle.fd(35) turtle.setheading(-60) turtle.fd(10) turtle.penup() turtle.goto(x, y) turtle.setheading(-90) turtle.pendown() turtle.fd(60) turtle.setheading(-135) turtle.fd(60) turtle.bk(60) turtle.setheading(-45) turtle.fd(30) turtle.setheading(-135) turtle.fd(35) turtle.penup() # 畫愛心 def draw_heart(size): turtle.color('red', 'pink') turtle.pensize(2) turtle.pendown() turtle.setheading(150) turtle.begin_fill() turtle.fd(size) turtle.circle(size * -3.745, 45) turtle.circle(size * -1.431, 165) turtle.left(120) turtle.circle(size * -1.431, 165) turtle.circle(size * -3.745, 45) turtle.fd(size) turtle.end_fill() # 畫箭羽 def draw_feather(size): angle = 30 # 箭的傾角 feather_num = size // 6 # 羽毛的數量 feather_length = size // 3 # 羽毛的長度 feather_gap = size // 10 # 羽毛的間隔 for i in range(feather_num): draw_line(feather_gap, angle + 180, False) # 箭柄,不折返 draw_line(feather_length, angle + 145, True) # 羽翼,要折返 draw_line(feather_length, angle + 145, False) draw_line(feather_num * feather_gap, angle, False) draw_line(feather_length, angle + 145 + 180, False) for i in range(feather_num): draw_line(feather_gap, angle + 180, False) # 箭柄,不折返 draw_line(feather_length, angle - 145, True) # 羽翼,要折返 draw_line(feather_length, angle - 145, False) draw_line(feather_num * feather_gap, angle, False) draw_line(feather_length, angle - 145 + 180, False) # 畫一箭穿心,最后箭的頭沒有畫出來,用海龜來代替 def arrow_heart(x, y, size): go_start(x, y, False) draw_heart(size * 1.15) turtle.setheading(-150) turtle.penup() turtle.fd(size * 2.2) draw_heart(size) turtle.penup() turtle.setheading(150) turtle.fd(size * 2.2) turtle.color('black') draw_feather(size) turtle.pensize(4) turtle.setheading(30) turtle.pendown() turtle.fd(size * 2) turtle.penup() turtle.setheading(29) turtle.fd(size * 5.7) turtle.color('black') turtle.pensize(4) turtle.pendown() turtle.fd(size * 1.2) #顯示倒數3,2,1 def draw_0(i): turtle.speed(0) turtle.penup() turtle.hideturtle() # 隱藏箭頭顯示 turtle.goto(-50, -100) turtle.color('red') write = turtle.write(i, font=('宋體', 200, 'normal')) time.sleep(1) # 顯示文字 def draw_1(): turtle.penup() turtle.hideturtle() #隱藏箭頭顯示 turtle.goto(-250, 0) turtle.color('red') write = turtle.write('臭豬豬,接招', font=('宋體', 60, 'normal')) time.sleep(2) # 顯示發射愛心的小人兒 def draw_2(): turtle.speed(3) draw_people(-250, 20) turtle.penup() turtle.goto(-150, -30) draw_heart(14) turtle.penup() turtle.goto(-20, -60) draw_heart(25) turtle.penup() turtle.goto(205, -100) draw_heart(43) turtle.hideturtle() time.sleep(2) def draw_3(): turtle.penup() turtle.hideturtle() # 隱藏箭頭顯示 turtle.goto(-220, 50) turtle.color('red') write = turtle.write('💕不離', font=('宋體', 60, 'normal')) turtle.penup() turtle.goto(0, -50) write = turtle.write('不棄💕', font=('宋體', 60, 'normal')) time.sleep(2) # 顯示一箭穿心 def draw_4(): turtle.speed(10) turtle.penup() turtle.goto(-210, -200) turtle.color('blue') turtle.pendown() turtle.write('YRB CQZ', font=('wisdom', 50, 'normal')) turtle.speed(1) turtle.penup() turtle.color("red") turtle.goto(-31, -200) turtle.write('❤',font=('wisdom', 50, 'normal')) arrow_heart(20, -60, 51) turtle.showturtle() number=[3,2,1] #儲存顯示界面倒數數字1,2,3 if __name__ == '__main__': turtle.setup(900, 500) #調畫布的尺寸 for i in number: draw_0(i) clear_screen() draw_1() clear_screen() draw_2() clear_screen() draw_3() clear_screen() draw_4() turtle.done()
部分效果展示: