1 Star 0 Fork 0

暮恋冰/节日祝福

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
mid autumn.py 16.88 KB
一键复制 编辑 原始数据 按行查看 历史
暮恋冰 提交于 2023-10-27 01:38 . add mid autumn.py.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771
import turtle as t
import time
import random as r
import math
skin = '#ffffeb'
def draw_bg():
t.penup()
t.goto(-700, -350)
t.pendown()
t.color((30, 30, 60), (30, 30, 60))
t.begin_fill()
t.goto(700, -350)
t.goto(700, 350)
t.goto(-700, 350)
t.goto(-700, -350)
t.end_fill()
t.penup()
def init_draw():
t.setup(1400, 700, startx=100, starty=100)
t.title('国庆中秋,节日快乐')
t.colormode(255)
t.bgcolor((8, 46, 84))
draw_bg()
def draw_moon():
t.penup()
t.goto(-510, 300)
t.pendown()
t.color('yellow', 'yellow')
t.begin_fill()
# 圆月
t.right(15)
t.circle(-100)
t.end_fill()
def draw_star(s):
t.begin_fill()
for _ in range(6):
t.forward(s)
t.right(270)
t.forward(s)
t.right(150)
t.end_fill()
def draw_stars(sn):
for _ in range(sn):
t.penup()
t.goto(r.randint(-500, 600), r.randint(-100, 300))
t.pendown()
t.color('yellow')
t.seth(10)
draw_star(r.randint(2, 5))
def draw_mount(d, a):
t.penup()
t.goto(-700 - a * d, math.cos(a * (-700 +700 ) / d) * d - 200 * a)
t.pendown()
t.begin_fill()
for x in range(-700, 1000):
t.goto(x - a * d, math.cos(a * (x + 700) / d) * d - 200 * a)
t.goto(700, -700)
t.goto(-700, -700)
t.goto(-700 - a * d, math.cos(a * (-700 + 700) / d) * d - 200 * a)
t.end_fill()
def draw_mounts():
t.color('#90EE90', '#90EE90')
draw_mount(80, 1)
t.color('#87CEEB', '#87CEEB')
draw_mount(80, 1.27)
def draw_tree(s, f=7, h=90):
if f == 0:
return
t.pendown()
t.seth(h)
t.fd(s + 10 if f == 7 else s)
draw_tree(s >> 1, f - 1, h + 45)
t.penup()
t.seth(h + 45 + 180);
t.fd(s >> 1)
t.penup()
draw_tree(s >> 1, f - 1, h - 45)
t.penup()
t.seth(h - 45 + 180);
t.fd(s >> 1)
t.penup()
def draw_frool(y, j, w, h):
# 房框
t.penup()
t.goto(y, j)
t.pendown()
t.goto(y - w, j)
t.goto(y - w, j + h)
t.goto(y, j + h)
t.goto(y, j)
# 左房檐
t.penup()
t.goto(y - w, j + h)
t.seth(180)
t.pendown()
t.circle(-(int(w / 3)), 60)
# 右房檐
t.penup()
t.goto(y, j + h)
t.seth(0)
t.pendown()
t.circle(int(w / 3), 60)
# 房门
if y == -480:
t.penup()
t.goto(y - int(w * 0.3), j)
t.pendown()
t.goto(y - int(w * 0.3), j + int(h / 2))
t.goto(y - w + int(w * 0.3), j + int(h / 2))
t.goto(y - w + int(w * 0.3), j)
t.penup()
t.goto(y - int(w * 0.5), j + int(h / 2))
t.pendown()
t.goto(y - int(w * 0.5), j)
t.penup()
t.goto(y - int(w * 0.42), j + int(h / 4))
t.pendown()
t.circle(0.5)
t.penup()
t.goto(y - int(w * 0.58), j + int(h / 4))
t.pendown()
t.circle(0.5)
# 画窗户
else:
t.penup()
t.goto(y - int(w * 0.2), j + int(h * 0.2))
t.pendown()
t.goto(y - w + int(w * 0.2), j + int(h * 0.2))
t.goto(y - w + int(w * 0.2), j + h - int(h * 0.2))
t.goto(y - int(w * 0.2), j + h - int(h * 0.2))
t.goto(y - int(w * 0.2), j + int(h * 0.2))
t.penup()
t.goto(y - int(w * 0.5), j + int(h * 0.2))
t.pendown()
t.goto(y - int(w * 0.5), j + h - int(h * 0.2))
t.penup()
t.goto(y - int(w * 0.2), j + int(h * 0.5))
t.pendown()
t.goto(y - w + int(w * 0.2), j + int(h * 0.5))
def draw_palace():
t.color('white')
t.width(4)
draw_frool(-480, 160, 100, 60)
draw_frool(-500, 220, 60, 25)
draw_frool(-510, 245, 40, 20)
draw_frool(-518, 265, 24, 12)
draw_frool(-524, 277, 12, 8)
draw_frool(-528, 285, 4, 2)
def draw_ChangE():
lx, ly = -530, 170
# 左手
t.penup()
t.color(skin)
t.width(4)
t.goto(lx, ly)
t.seth(50)
t.pendown()
t.fd(10)
t.circle(-3, 180)
t.right(170)
t.circle(-6, 180)
t.circle(-50, 20)
# 左袖
t.penup()
t.color('red')
t.goto(lx, ly)
t.seth(-140)
t.pendown()
t.fd(16)
t.penup()
t.goto(lx, ly)
t.seth(-50)
t.pendown()
t.fd(30)
t.right(90)
t.fd(10)
t.circle(-50, 40)
# 衣服
t.color('#f3dd64')
t.penup()
t.right(90)
t.fd(10)
t.right(180)
t.pendown()
t.circle(-100, 8)
t.circle(-20, 80)
t.circle(-100, 11)
# 衣服2
t.penup()
t.circle(-100, -11)
t.circle(-20, -80)
t.fd(8)
t.pendown()
t.circle(-100, 6)
t.circle(-15, 82)
t.circle(-40, 35)
# 衣服-裙
t.color('red')
t.penup()
t.circle(-40, -35)
t.circle(-15, -82)
t.fd(10)
t.right(10)
t.pendown()
t.circle(-100, 60)
t.right(60)
t.circle(-100, 60)
t.right(60)
t.circle(-200, 2)
# 右袖
t.penup()
t.circle(-200, -2)
t.right(-60)
t.circle(-100, -60)
t.right(-60)
t.circle(-100, -60)
t.right(-10)
t.fd(-6)
t.circle(-100, -6)
t.fd(-8)
t.circle(-20, 80)
t.circle(-100, 12)
t.right(110)
t.fd(10)
t.right(180)
t.pendown()
t.circle(-50, 50)
t.right(70)
t.circle(-50, 40)
t.right(57)
t.circle(-200, 10)
# 右手
t.penup()
t.circle(-200, -10)
t.right(-57)
t.circle(-50, -4)
t.color(skin)
t.left(80)
t.circle(10, 15)
t.pendown()
t.circle(10, 190)
# 下方飘带
t.penup()
t.circle(10, -90)
t.seth(-140)
t.color('#f3dd64')
t.circle(-10, 10)
t.pendown()
t.circle(-10, 100)
t.circle(-40, 20)
t.circle(40, 70)
t.left(80)
t.circle(60, 40)
t.left(60)
t.circle(-30, 50)
t.circle(20, 80)
t.fd(25)
# 脸
t.penup()
t.goto(lx, ly)
t.seth(-140)
t.fd(16)
t.seth(-100)
t.color(skin)
t.pendown()
t.circle(-30, 100)
t.color('black')
t.begin_fill()
t.circle(-30, 30)
# 耳朵
t.left(100)
t.circle(-10, 180)
t.circle(-2, 60)
t.circle(-40, 20)
# 头发
t.left(150)
t.circle(-10, 90)
t.circle(80, 10)
t.circle(30, 60)
t.right(100)
t.circle(-20, 70)
t.circle(3, 160)
t.circle(25, 90)
t.left(20)
t.fd(20)
t.right(80)
t.circle(20, 150)
t.right(80)
t.circle(8, 180)
t.right(90)
t.fd(10)
t.right(110)
t.circle(10, 100)
t.right(110)
t.fd(12)
t.circle(8, 110)
t.right(50)
t.circle(12, 70)
t.circle(2, 50)
t.circle(180, 25)
t.end_fill()
# 发髻
t.penup()
t.circle(180, -25)
t.circle(2, -50)
t.circle(12, -70)
t.right(-50)
t.circle(8, -110)
t.fd(-12)
t.right(-110)
t.circle(10, -100)
t.right(-110)
t.fd(-10)
t.right(-90)
t.circle(8, -180)
t.fd(-25)
t.left(20)
t.color('yellow')
t.width(1)
t.pendown()
t.begin_fill()
t.fd(8)
t.right(90)
t.circle(-4, 180)
t.end_fill()
# 脸
t.penup()
t.width(1)
t.goto(lx, ly)
t.seth(-140)
t.fd(16)
t.seth(-100)
t.color(skin)
t.pendown()
t.begin_fill()
t.circle(-30, 130)
t.left(100)
t.circle(-10, 180)
t.circle(-2, 60)
t.circle(-40, 20)
t.left(150)
t.circle(-10, 90)
t.circle(80, 10)
t.circle(30, 60)
t.right(100)
t.circle(-20, 70)
t.left(3)
t.circle(-200, 9)
t.end_fill()
# 眼睛
t.penup()
t.width(6)
t.goto(lx, ly)
t.color('black')
t.seth(170)
t.fd(25)
t.pendown()
t.seth(120)
t.fd(4)
t.penup()
t.left(90)
t.fd(30)
t.left(90)
t.pendown()
t.fd(4)
# 嘴
t.penup()
t.circle(100, 10)
t.width(4)
t.left(40)
t.color('red')
t.pendown()
t.circle(100, 3)
t.circle(15, 90)
t.circle(100, 3)
def draw_rabbit():
t.penup()
t.goto(400, -600)
t.pendown()
t.color('white')
t.speed(100)
t.pu()
R = 0.05 # 设置比例因子, 用数据的1/3大小绘制
t.goto(R * 300, R * 475)
t.width(2)
t.pd()
t.seth(110)
t.circle(R * 364, 165) # 画头部
t.rt(60)
t.circle(R * 233, 90)
t.circle(R * 438, 65)
t.lt(2)
t.pu()
t.fd(R * 200)
t.lt(3)
t.circle(R * 438, 10)
t.pd()
t.circle(R * 438, 55)
t.circle(R * 233, 90)
t.pu()
t.goto(-R * 100, -R * 280) # 画前手(左前腿)
t.seth(60)
t.pd()
t.circle(-R * 340, 90)
t.circle(-R * 212, 15)
t.circle(-R * 77, 135)
t.circle(-R * 176, 65)
t.rt(180)
t.circle(R * 176, 30)
t.rt(70)
t.circle(-R * 196, 90)
t.rt(168)
t.pu()
t.fd(R * 400)
t.rt(142)
t.pd()
t.circle(R * 105, 100) # 画后手(左前腿)
t.circle(R * 65, 85)
t.circle(R * 125, 45)
t.circle(R * 196, 90)
t.lt(115)
t.circle(-R * 400, 60) # 画腹部
t.circle(-R * 280, 50) # 画前腿(左后腿)
t.rt(120)
t.circle(R * 190, 100)
t.rt(180)
t.circle(-R * 190, 130)
t.circle(-R * 320, 80)
t.rt(180)
t.circle(R * 320, 80)
t.circle(-R * 190, 65)
t.rt(95)
t.circle(-R * 465, 45)
t.circle(-R * 520, 40)
t.circle(-R * 320, 110) # 画屁股
t.circle(R * 400, 50) # 画后背
t.rt(180)
t.circle(-R * 400, 50)
t.circle(R * 320, 20)
t.rt(110)
t.fillcolor('#ed9e4c') # 画尾巴
t.begin_fill()
t.circle(R * 140, 65)
t.lt(150)
t.circle(-R * 60, 120)
t.end_fill()
t.circle(R * 140, 135)
t.rt(8)
t.pu()
t.fd(R * 710) # 画后腿(右后腿)
t.pd()
t.lt(10)
t.circle(R * 380, 50)
t.lt(95)
t.circle(R * 190, 65)
t.lt(167)
t.circle(R * 190, 90)
t.pu()
t.goto(-R * 410, R * 400) # 画耳朵
t.lt(80)
t.pd()
t.fillcolor('#ffd7d7') # 画右耳(左侧)
t.begin_fill()
t.circle(-R * 270, 45)
t.circle(-R * 320, 45)
t.circle(R * 50, 45)
t.circle(-R * 150, 120)
t.rt(180)
t.circle(R * 120, 145)
t.fd(R * 150)
t.circle(-R * 235, 66)
t.end_fill()
t.lt(146)
t.circle(-R * 360, 15)
t.lt(58)
t.circle(R * 235, 37) # 画左耳(右侧)
t.circle(R * 540, 28)
t.circle(-R * 150, 14)
t.circle(-R * 90, 135)
t.pu()
t.fd(R * 250)
t.rt(50)
t.pd()
t.circle(-R * 200, 65)
t.circle(R * 340, 46)
t.lt(85)
t.circle(-R * 360, 15)
t.lt(130)
t.begin_fill()
t.circle(-R * 180, 40)
t.circle(-R * 280, 30)
t.circle(R * 140, 110)
t.rt(180)
t.circle(-R * 140, 67)
t.circle(R * 180, 45)
t.circle(-R * 235, 72)
t.circle(-R * 140, 21)
t.end_fill()
t.pu()
t.goto(-R * 40, R * 200) # 画鼻嘴
t.seth(-20)
t.pd()
t.circle(R * 230, 30)
t.rt(60)
t.fd(R * 30)
t.fillcolor('red')
t.begin_fill()
t.circle(-R * 40, 170)
t.rt(180)
t.circle(R * 40, 80)
t.rt(105)
t.circle(R * 230, 15)
t.circle(R * 10, 140)
t.circle(R * 230, 15)
t.rt(105)
t.circle(R * 40, 80)
t.rt(180)
t.circle(-R * 40, 170)
t.end_fill()
t.fd(R * 30)
t.rt(50)
t.circle(R * 230, 30)
t.pu()
t.goto(-R * 140, R * 120) # 绘右须(左侧)
t.seth(-175)
t.pd()
t.circle(R * 1400, 18)
t.pu()
t.goto(-R * 150, R * 95)
t.seth(-165)
t.pd()
t.circle(R * 1400, 15)
t.pu()
t.goto(-R * 135, R * 82)
t.seth(-155)
t.pd()
t.circle(R * 1400, 16)
t.pu()
t.goto(R * 300, R * 270) # 绘左须(右侧)
t.seth(30)
t.pd()
t.circle(-R * 1400, 13)
t.pu()
t.goto(R * 310, R * 250)
t.seth(20)
t.pd()
t.circle(-R * 1400, 10)
t.pu()
t.goto(R * 310, R * 230)
t.seth(10)
t.pd()
t.circle(-R * 1400, 11)
t.pu() # 画右眼(左侧)
t.goto(-R * 380, R * 400)
t.seth(15)
t.pd()
t.begin_fill()
t.circle(-R * 150, 100)
t.circle(-R * 55, 60)
t.circle(-R * 35, 90)
t.lt(60)
t.circle(-R * 90, 135)
t.end_fill()
t.lt(180)
t.circle(R * 110, 130)
t.circle(R * 50, 70)
t.pu()
t.goto(-R * 340, R * 340)
t.dot(R * 20, 'white')
t.goto(-R * 320, R * 300)
t.dot(R * 40, 'white')
t.goto(R * 150, R * 580) # 画左眼(右侧)
t.seth(-135)
t.color('black', 'red')
t.pd()
t.begin_fill()
t.circle(R * 150, 100)
t.circle(R * 55, 60)
t.circle(R * 35, 90)
t.rt(60)
t.circle(R * 90, 135)
t.end_fill()
t.lt(180)
t.circle(-R * 110, 130)
t.circle(-R * 50, 70)
t.pu()
t.goto(R * 200, R * 500)
t.dot(R * 20, 'white')
t.goto(R * 220, R * 460)
t.dot(R * 40, 'white')
t.goto(-R * 100, R * 550)
t.pd()
t.color('silver', '#ed9e4c') # 画小花
t.rt(20)
t.begin_fill()
for i in range(6):
t.lt(180)
t.circle(R * 30)
t.lt(180)
t.circle(R * 30, 60)
t.end_fill()
t.begin_fill()
t.color('white', '#fb66a4')
t.begin_fill()
t.circle(R * 30)
t.end_fill()
t.ht()
# 写诗
def writePoetry():
t.penup()
t.goto(600, 140)
t.pencolor('white')
# 诗句
potery = ["人\n\n\n\n\n\n", "月\n\n\n\n\n\n", "此\n\n\n\n\n \n",
"\n\n\n\n\n\n \n", "千\n\n\n\n\n \n"]
coordinates = [(550, 140), (500, 140), (450, 140), (400, 140)]
for i, p in enumerate(potery):
t.write(p, align="center", font=("STXingkai", 20, "bold"))
if (i + 1) != len(potery):
time.sleep(5)
t.goto(coordinates[i])
def write_happy():
t.penup()
t.goto(-200, 200)
t.pencolor('yellow')
word1 = ["国庆中秋"]
for i in word1:
t.write(i, align='center', font=("STXingkai", 50, "bold"))
word2 = ["节日快乐"]
t.goto(-100, 120)
for j in word2:
t.write(j, align='center', font=("STXingkai", 50, "bold"))
def writeword():
t.penup()
A = 300
t.goto(600-A, 140)
t.pencolor('white')
# 诗句
potery = ["祝\n\n\n \n", "阖\n\n\n\n", "愿\n\n\n \n", "繁\n\n\n\n"]
coordinates = [(550-A, 140), (500-A, 140), (450-A, 140), (400-A, 140)]
for i, p in enumerate(potery):
t.write(p, align="center", font=("STXingkai", 20, "bold"))
if (i + 1) != len(potery):
time.sleep(5)
t.goto(coordinates[i])
def guoqi():
# 绘制旗面
t.penup()
t.speed(50)
t.pencolor('red')
t.pendown()
t.pu()
B = 0.5 # 比例调节
X = 500
Y = 200
t.goto(-300*B+X, -200*B+Y)
t.left(5)
t.pd()
t.fillcolor('red')
t.begin_fill()
for i in range(0, 2): # 画矩形
t.fd(600*B)
t.lt(90)
t.fd(400*B)
t.lt(90)
t.end_fill()
# 绘制大五角星
t.pu()
t.pencolor('yellow')
t.goto(-260*B+X, 120*B+Y)
t.pd()
t.fillcolor('yellow')
t.begin_fill()
for i in range(0, 5):
t.fd(113.137*B) # 大星一划的边长
t.rt(144)
t.end_fill()
# 绘制四个小五角星
list1 = [(-100*B+X, 160*B+Y), (-60*B+X, 120*B+Y), (-60*B+X, 60*B+Y), (-100*B+X, 20*B+Y)] # 四个五角星的中心坐标
list2 = [31.98, 8.13, -15.59, -38.66] # 相对角度0的后退1.111需要左转的角度
for j in range(0, 4):
t.seth(0) # 这是海龟头部的角度为0
t.pu()
t.goto(list1[j]) # 定位到五角星中心
t.lt(list2[j]) # 旋转角度,以背向指向大五角星的角尖
t.bk(20) # 从五角星中心到指向大五角星的角尖(龟倒着爬)退一个小圆半径
t.lt(18) # 五角星的半角角度
t.pd()
t.begin_fill()
for i in range(0, 5):
t.fd(113.137*B / 3) # 小星一划的边长
t.rt(144)
t.end_fill()
t.ht()
def add_moon_palace():
# 画月宫
draw_palace()
# 画树
t.penup()
t.color('brown')
t.goto(-500, 110)
t.width(3)
draw_tree(80)
draw_ChangE()
draw_rabbit()
def save_draw():
ts = t.getscreen()
ts.getcanvas().postscript(file='o.eps')
if __name__ == '__main__':
t.speed(100)
init_draw()
t.speed(100)
draw_stars(10)
t.speed(100)
draw_mounts()
t.speed(10)
draw_moon()
t.speed(40)
guoqi()
t.speed(100)
add_moon_palace()
t.speed(40)
writeword()
# writePoetry()
write_happy()
t.penup()
t.speed(100)
t.goto(0, -700)
save_draw()
time.sleep(9)
t.mainloop()
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/twilight-love/festival-blessings.git
git@gitee.com:twilight-love/festival-blessings.git
twilight-love
festival-blessings
节日祝福
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385