Python使用turtle模塊繪制愛(ài)心圖案
程序員的浪漫,你懂嗎?
今天使用python小海龜實(shí)現(xiàn)愛(ài)心圖案的繪制,代碼如下:
import turtleimport time # 清屏函數(shù)def clear_all(): turtle.penup() turtle.goto(0, 0) turtle.color(’white’) turtle.pensize(800) turtle.pendown() turtle.setheading(0) turtle.fd(300) turtle.bk(600) # 重定位海龜?shù)奈恢胐ef go_to(x, y, state): turtle.pendown() if state else turtle.penup() turtle.goto(x, y) # 畫(huà)線# state為真時(shí)海龜回到原點(diǎn),為假時(shí)不回到原來(lái)的出發(fā)點(diǎn)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() # 畫(huà)箭羽def draw_feather(size): angle = 30 # 箭的傾角 feather_num = size//6 # 羽毛的數(shù)量 feather_length = size // 3 # 羽毛的長(zhǎng)度 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) # 畫(huà)愛(ài)心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() # 畫(huà)箭def draw_arrow(size): angle = 30 turtle.color(’black’) draw_feather(size) turtle.pensize(4) turtle.setheading(angle) turtle.pendown() turtle.fd(size*2) # 一箭穿心# 箭的頭沒(méi)有畫(huà)出來(lái),而是用海龜來(lái)代替def arrow_heart(x, y, size): go_to(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) draw_arrow(size) # 畫(huà)出發(fā)射愛(ài)心的小人def draw_people(x, y): turtle.penup() turtle.goto(x, y) turtle.pendown() turtle.pensize(2) turtle.color(’black’) turtle.setheading(0) turtle.circle(60, 360) turtle.penup() turtle.setheading(90) turtle.fd(75) turtle.setheading(180) turtle.fd(20) turtle.pensize(4) turtle.pendown() turtle.circle(2, 360) turtle.setheading(0) turtle.penup() turtle.fd(40) turtle.pensize(4) turtle.pendown() turtle.circle(-2, 360) 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() # 第一個(gè)畫(huà)面,顯示文字def page0(): turtle.penup() turtle.goto(-350, 0) turtle.color(’black’) turtle.write(’專(zhuān)屬于我們的情人節(jié)’, font=(’宋體’, 60, ’normal’)) time.sleep(3) # 第二個(gè)畫(huà)面,顯示發(fā)射愛(ài)心的小人def page1(): turtle.speed(10) 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(250, -100) draw_heart(45) turtle.hideturtle() time.sleep(3) # 最后一個(gè)畫(huà)面,一箭穿心def page2(): turtle.speed(1) turtle.penup() turtle.goto(-200, -200) turtle.color(’blue’) turtle.pendown() turtle.write(’ZBT CJH’, font=(’wisdom’, 50, ’normal’)) turtle.penup() turtle.goto(0, -180) draw_heart(10) arrow_heart(20, -60, 51) turtle.showturtle() def main(): turtle.setup(900, 500) page0() clear_all() page1() clear_all() page2() turtle.done() main()
運(yùn)行截圖如下圖所示,其中的姓名縮寫(xiě)可以自行修改。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Python+unittest+requests 接口自動(dòng)化測(cè)試框架搭建教程2. Java GZip 基于內(nèi)存實(shí)現(xiàn)壓縮和解壓的方法3. jsp+servlet簡(jiǎn)單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))4. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼5. Springboot 全局日期格式化處理的實(shí)現(xiàn)6. 利用CSS制作3D動(dòng)畫(huà)7. 一款功能強(qiáng)大的markdown編輯器tui.editor使用示例詳解8. .Net加密神器Eazfuscator.NET?2023.2?最新版使用教程9. SpringBoot+TestNG單元測(cè)試的實(shí)現(xiàn)10. PHP利用COM對(duì)象訪問(wèn)SQLServer、Access
