#-*- coding: UTF-8 -*-
import turtle as t
import datetime
import time
import math
import random
# 设置背景颜色,窗口位置以及大小
t.colormode(255)# 颜色模式
t.speed(0)
t.screensize(900,760,"#010812")#画布大小背景颜色
t.setup(width=900, height=760,startx=None, starty=None) #绘图窗口的大小和起始坐标
#t.bgpic("cmx4_di1.gif")
t.title("逆境清醒草莓熊!")#设置绘图窗口的标题
t.resizemode('noresize') #大小调整模式:auto,user,noresize
t.tracer(1)
def mlingpen(x, y):
t.penup()
t.goto(x, y)
t.pendown()
def rose(): #rose
t.seth(90)
mlingpen(-225, -60)
t.pensize(10)
t.pencolor("#035025")
t.circle(300,30)
mlingpen(-240, 70)
t.pensize(2)
t.color("#000000", "#22ac38")
t.seth(12)
mlingpen(-235,40)
t.lt(40)
t.fd(50)
t.begin_fill()
t.circle(-150,30)
t.circle(-2,140)
t.circle(-150,43)
t.up()
t.end_fill()
mlingpen(-235,40)
t.lt(330)
t.fd(50)
t.begin_fill()
t.circle(-150,30)
t.circle(-2,140)
t.circle(-150,43)
t.up()
t.end_fill()
mlingpen(-235,40)
t.lt(260)
t.fd(50)
t.begin_fill()
t.circle(-150,30)
t.circle(-2,140)
t.circle(-150,43)
t.up()
t.end_fill()
t.pensize(2)
t.seth(12)
mlingpen(-210,60)
t.begin_fill()
t.color("#000000", "#f8c0c8")
t.circle(50,150)
t.rt(20)
t.fd(40)
t.rt(40)
t.circle(15,130)
t.fd(50)
t.circle(15,80)
t.up()
t.end_fill()
t.pensize(2)
t.seth(12)
mlingpen(-210,65)
t.begin_fill()
t.color("#f5aab5", "#f5aab5")
t.circle(34,150)
t.rt(20)
t.fd(30)
t.rt(40)
t.circle(10,130)
t.fd(50)
t.circle(15,80)
t.up()
t.end_fill()
t.pensize(2)
t.seth(12)
mlingpen(-210,65)
t.begin_fill()
t.color("#f198a5", "#f198a5")
t.circle(30,150)
t.rt(20)
t.fd(30)
t.rt(40)
t.circle(10,130)
t.fd(50)
t.circle(15,80)
t.up()
t.end_fill()
t.pensize(2)
t.seth(12)
mlingpen(-210,65)
t.begin_fill()
t.color("#ee8998", "#ee8998")
t.circle(20,150)
t.rt(20)
t.fd(30)
t.rt(40)
t.circle(10,130)
t.fd(50)
t.circle(15,80)
t.up()
t.end_fill()
mlingpen(-220,80)
t.begin_fill()
t.color("#e56e7f", "#e56e7f")
t.circle(15,200)
t.rt(20)
t.fd(30)
t.rt(40)
t.circle(10,130)
t.fd(50)
t.circle(15,80)
t.up()
t.end_fill()
t.seth(35)
mlingpen(-230,90)
t.begin_fill()
t.color("#000000", "#fda7b5")
t.circle(50,50)
t.rt(40)
t.circle(25,200)
t.up()
t.end_fill()
t.seth(130)
mlingpen(-294.51,142.14)
t.begin_fill()
t.color("#000000", "#fdadb8")
t.circle(20,100)
t.rt(90)
t.circle(10,180)
t.rt(90)
t.circle(15,130)
t.rt(110)
t.circle(30,130)
t.rt(50)
t.circle(50,80)
t.up()
t.end_fill()
t.seth(80)
mlingpen(-240,140)
t.begin_fill()
t.color("#000000", "#fe8e9e")
t.circle(10,100)
t.rt(90)
t.circle(12,150)
t.rt(90)
t.circle(15,130)
t.rt(50)
t.circle(50,80)
t.rt(10)
t.circle(50,80)
t.goto(-240,140)
t.up()
t.end_fill()
t.seth(80)
mlingpen(-250,140)
t.begin_fill()
t.color("#f9788b", "#f9788b")
t.circle(5,130)
t.rt(90)
t.circle(10,170)
t.rt(100)
t.circle(10,130)
t.rt(70)
t.circle(40,80)
t.rt(40)
t.circle(30,30)
t.goto(-250,140)
t.up()
t.end_fill()
t.seth(10)
mlingpen(-245, 80)
t.begin_fill()
t.color("#000000", "#ef5f7a")
t.seth(35)
t.circle(30,80)
t.rt(80)
t.circle(10,150)
t.rt(80)
t.circle(17,200)
t.rt(60)
t.circle(29,120)
t.goto(-245, 80)
t.up()
t.end_fill()
t.seth(10)
mlingpen(-250, 85)
t.begin_fill()
t.color("#ef758c", "#ef758c")
t.seth(35)
t.circle(25,80)
t.rt(80)
t.circle(6,150)
t.rt(80)
t.circle(12,210)
t.rt(60)
t.circle(23,120)
t.goto(-250, 85)
t.up()
t.end_fill()
t.seth(0)
mlingpen(-250,125)
t.pensize(5)
t.dot("#ff4969")
t.pensize(2)
mlingpen(-266.97,121.26)
t.pencolor("#321320")
t.fillcolor("#f04969")
t.begin_fill()
t.rt(80)
t.circle(12,150)
t.rt(80)
t.circle(6,270)
t.rt(150)
t.circle(10,180)
t.up()
t.end_fill()
#t.color("#000000", "#f04969")
t.seth(-70)
mlingpen(-210,100)
t.begin_fill()
t.color("#000000", "#f04969")
t.rt(20)
t.fd(30)
t.circle(-40,170)
t.lt(20)
t.fd(20)
t.goto(-210,100)
t.up()
t.end_fill()
t.seth(-70)
mlingpen(-215,90)
t.begin_fill()
t.color("#ee627d", "#ee627d")
t.rt(20)
t.fd(20)
t.circle(-35,170)
t.lt(20)
t.fd(15)
t.goto(-220,90)
t.up()
t.end_fill()
t.seth(-70)
mlingpen(-220,80)
t.begin_fill()
t.color("#f47a91", "#f47a91")
t.rt(20)
t.fd(10)
t.circle(-28,170)
t.lt(20)
t.fd(10)
t.goto(-220,90)
t.up()
t.end_fill()
t.seth(150)
mlingpen(-220,100)
t.begin_fill()
t.color("#000000", "#f7cad1")
t.circle(20,80)
t.rt(10)
t.circle(-40,70)
t.rt(10)
t.circle(20,80)
t.rt(5)
t.circle(5,180)
t.rt(80)
t.circle(20,70)
t.rt(80)
t.circle(40,60)
t.rt(10)
t.circle(40,110)
t.goto(-220,100)
t.up()
t.end_fill()
t.seth(150)
mlingpen(-220,98)
t.begin_fill()
t.color("#ffe9f2", "#ffe9f2")
t.circle(15,80)
t.rt(7)
t.circle(-45,75)
t.rt(8)
t.circle(20,50)
t.rt(5)
t.circle(2,200)
t.rt(80)
t.circle(15,85)
t.rt(80)
t.circle(40,60)
t.rt(20)
t.circle(30,70)
t.goto(-220,98)
t.up()
t.end_fill()
t.seth(150)
mlingpen(-180,55)
t.begin_fill()
t.color("#000000", "#f7cad1")
t.circle(30,80)
t.rt(10)
t.circle(-60,70)
t.rt(5)
t.circle(30,80)
t.rt(5)
t.circle(5,180)
t.rt(90)
t.circle(30,80)
t.rt(80)
t.circle(40,70)
t.circle(20,50)
t.rt(90)
t.circle(20,95)
t.goto(-180,55)
t.up()
t.end_fill()
t.seth(150)
mlingpen(-190,50)
t.begin_fill()
t.color("#f7e0e3", "#f7e0e3")
t.circle(25,80)
t.rt(8)
t.circle(-55,75)
t.rt(3)
t.circle(25,60)
t.rt(6)
t.circle(5,200)
t.rt(90)
t.circle(30,80)
t.rt(80)
t.circle(22,80)
t.circle(20,40)
t.rt(80)
t.circle(15,90)
t.goto(-190,50)
t.up()
t.end_fill()
mling_circle_list = iter([ # 每段弧线(半径,弧角度数)
(18, 360), (14, 360), (10, 360), (6, 360),
(18, 360), (14, 360), (10, 360), (6, 360),
])
def mling_draw_eyeball(zb1,zb2,zb3,zb4):
for zb, color_ in zip([zb1,zb2,zb3,zb4], ['#ffffff', '#482d08', '#000000', '#ffffff']):
t.penup()
t.goto(*zb)
t.pendown()
t.begin_fill()
t.setheading(0)
t.color(color_)
t.pencolor('#000000')
t.pensize(2)
t.circle(*next(mling_circle_list))
t.end_fill()
t.penup()
p = t.home()
t.pencolor("#321320")
t.fillcolor("#cb3263")
t.pensize(4)
t.goto(120,110)
t.pendown()
t.begin_fill()
t.goto(200,0)
t.left(-40)
t.circle(-110,105)
t.left(75)
t.goto(170,-110)
t.left(-80)
t.circle(30,40)
t.left(60)
t.circle(-80,70)
t.left(83)
t.circle(-35,95)
t.goto(60,-270)
t.left(-80)
t.circle(-65,70)
t.left(63)
t.circle(35,30)
t.left(130)
t.circle(-65,70)
t.goto(-120,-270)
t.left(-110)
t.circle(-35,80)
t.left(83)
t.circle(-80,50)
t.left(60)
t.circle(-80,60)
t.left(60)
t.circle(30,30)
t.left(20)
t.circle(80,80)
t.left(-105)
t.circle(-70,150)
t.left(50)
t.circle(-170,50)
t.goto(120,110)
#Author:Adversity Awake
t.end_fill()
t.penup()
p = t.home()
t.pencolor("#321320")
t.fillcolor("#ffffff")
t.pensize(4)
t.goto(90,60)
t.pendown()
t.begin_fill()
t.right(30)
t.circle(-130,360)
t.end_fill()
t.penup()
p = t.home()
t.pencolor("#321320")
#t.fillcolor("#f3d2ad")
t.fillcolor("#015426")
t.pensize(4)
t.goto(-250,-55)
t.dot("blue")
t.seth(0)
t.pendown()
t.begin_fill()
t.right(-55)
#t.circle(-45,270)
t.circle(-35,70)
t.goto(-200,-165)
t.goto(-250,-165)
t.goto(-220,-75)
t.goto(-250,-55)
t.end_fill()
rose()
t.penup()
p = t.home()
t.pencolor("#321320")
#t.fillcolor("#f3d2ad")
t.fillcolor("#f3d2ad")
t.pensize(4)
t.goto(185,-90)
t.pendown()
t.begin_fill()
t.right(140)
t.circle(43,95)
t.goto(185,-90)
t.end_fill()
t.penup()
t.seth(0)
t.pencolor('#321320')
t.fillcolor('#cb3263')
t.pensize(4)
t.begin_fill()
t.goto(21,0)
t.pendown()
t.circle(123,134)
t.left(-90)
t.circle(40,185)
t.left(-60)
t.circle(120,60)
t.left(-90)
t.circle(50,200)
t.left(-90)
t.circle(100,100)
t.left(-12)
t.circle(100,40)
t.goto(21,0)
t.penup()
#Author:Adversity Awake
t.end_fill()
t.penup()
t.goto(0, 0)
t.seth(0)
t.pencolor('#321320')
t.fillcolor('#ffffff')
t.pensize(4)
t.begin_fill()
t.goto(-70,210)
t.left(140)
t.pendown()
t.circle(30,200)
t.goto(-70,210)
t.penup()
t.end_fill()
t.penup()
t.goto(0, 0)
t.seth(0)
t.pencolor('#321320')
t.fillcolor('#ffffff')
t.pensize(4)
t.begin_fill()
t.goto(90,220)
t.left(45)
t.pendown()
t.circle(22,200)
t.goto(90,220)
t.penup()
t.end_fill()
t.penup()
t.goto(0, 0)
t.seth(0)
t.pencolor('#321320')
t.fillcolor('#ffffff')
t.pensize(4)
t.begin_fill()
t.left(-98)
t.left(90)
t.goto(18,10)
t.pendown()
t.circle(100,134)
t.left(10)
t.circle(110,30)
t.left(10)
t.circle(160,40)
t.circle(85,40)
t.left(2)
t.circle(95,40)
t.left(5)
t.circle(95,60)
t.goto(18,10)
t.penup()
t.end_fill()
t.penup()
p = t.home()
t.pencolor("#321320")
t.fillcolor("#8f3a52")
t.pensize(2)
t.goto(25,240)
t.pendown()
t.begin_fill()
t.goto(60,235)
t.left(30)
t.fd(8)
t.left(90)
t.fd(22)
t.circle(90, 8)
t.left(20)
t.circle(90, 8)
t.left(20)
t.circle(90, 20)
t.left(40)
t.circle(50, 20)
t.end_fill()
t.penup()
t.pensize(12)
t.goto(-2,250)
t.pencolor("#4D1F00")
t.fillcolor("#4D1F00")
t.pendown()
t.goto(60,240)
t.end_fill()
t.penup()
p = t.home()
t.pencolor("#321320")
t.fillcolor("#8f3a52")
t.pensize(2)
t.goto(-55,193)
t.pendown()
t.begin_fill()
t.left(65)
t.circle(-90, 25)
t.goto(-10,230)
t.left(30)
t.fd(8)
t.left(90)
t.fd(18)
t.circle(90, 8)
t.left(20)
t.circle(90, 10)
t.left(40)
t.circle(90, 30)
t.left(30)
t.circle(40, 20)
t.penup()
t.end_fill()
t.pensize(12)
t.goto(-63,195)
t.pencolor("#4D1F00")
t.fillcolor("#4D1F00")
t.pendown()
t.left(100)
t.circle(-85,45)
t.end_fill()
mling_draw_eyeball((-20,180), (-23,185), (-25,188), (-30,200))
mling_draw_eyeball((30, 193), (27, 200), (25,203), (20,213))
t.penup()
p = t.home()
t.pencolor("#321320")
t.fillcolor("#8f3a52")
t.pensize(3)
t.goto(25,105)
p = t.pos()
t.pendown()
t.begin_fill()
t.circle(85, 65)
t.left(16)
t.circle(30, 55)
t.left(20)
t.circle(145, 58)
t.left(8)
t.circle(20, 55)
t.left(8)
t.circle(50, 65)
t.left(-5)
t.circle(310, 8)
t.end_fill()
t.penup()
t.goto(0, 0)
t.seth(0)
t.pencolor('#321320')
t.fillcolor('#a93e54')
t.pensize(3)
t.begin_fill()
t.left(-20)
t.goto(9,66)
t.pendown()
t.circle(68,40)
t.left(10)
t.circle(65,40)
t.left(160)
t.circle(-75,85)
t.left(158)
t.circle(48,37)
t.goto(9,66)
t.penup()
t.end_fill()
t.color('#987824')
t.penup()
#t.goto(260,60)
#t.pendown()
mlingpen(260,60)
t.write("祝\n你\n节\n日\n快\n乐\n",align="center",font=("黑体",22,"normal"))
t.penup()
t.goto(300,195)
t.pendown()
t.write("逆\n境\n清\n醒\n",align="center",font=("黑体",15,"normal"))
def liwuhe(): #liwuhe
#AdversityAwake
t.seth(-90)
t.pencolor('#ca7124')
t.fillcolor('#fddeaf')
t.pensize(3)
mlingpen(266,-55)
t.begin_fill()
t.fd(130)
t.rt(80)
t.fd(80)
t.rt(100)
t.fd(132)
t.rt(80)
t.goto(266,-55)
t.up()
t.end_fill()
#AdversityAwake
t.seth(-90)
t.pencolor('#ca7124')
t.fillcolor('#f8b756')
t.pensize(3)
mlingpen(186,-70)
t.begin_fill()
t.fd(130)
t.rt(110)
t.fd(110)
t.rt(70)
t.fd(110)
t.rt(80)
t.goto(186,-70)
t.up()
t.end_fill()
#AdversityAwake
t.seth(0)
t.pencolor('#ca7124')
t.fillcolor('#e8a846')
t.pensize(3)
mlingpen(186,-35)
t.begin_fill()
t.lt(6)
t.fd(86)
t.lt(170)
t.fd(90)
t.goto(80,-23)
t.goto(186,-35)
t.end_fill()
t.up()
#AdversityAwake
t.seth(-90)
t.pencolor('#ca7124')
t.fillcolor('#fce3b8')
t.pensize(3)
mlingpen(270,-25)
t.begin_fill()
t.fd(30)
t.rt(80)
t.fd(85)
t.rt(105)
t.fd(34)
t.rt(80)
t.goto(270,-25)
t.end_fill()
t.up()
#AdversityAwake
t.seth(-90)
t.pencolor('#ca7124')
t.fillcolor('#e8a846')
t.pensize(3)
mlingpen(186,-34)
t.begin_fill()
t.fd(34)
t.rt(100)
t.fd(110)
t.rt(78)
t.fd(30)
t.rt(75)
t.goto(186,-34)
t.end_fill()
t.up()
#AdversityAwake
t.seth(90)
t.pencolor('#fe000b')
t.fillcolor('#fe000b')
t.pensize(20)
mlingpen(130,-55)
t.fd(26)
t.rt(80)
t.fd(90)
t.bk(40)
t.rt(25)
t.fd(50)
t.rt(80)
t.goto(240,-60)
t.dot(30,"white")
mlingpen(170,-20)
t.goto(130,10)
t.goto(110,-10)
t.goto(170,-20)
mlingpen(170,-20)
t.goto(230,15)
t.goto(250,-10)
t.goto(170,-20)
t.up()
t.dot(30,"white")
mlingpen(190,-10)
t.dot(30,"white")
mlingpen(130,-55)
t.dot(30,"white")
liwuhe()
def julispring(): #julichunjie
#springdate = time.strftime(2023, 1, 22, 0, 0, 0) # 新的一年的日期
springdate = datetime.datetime(2023, 12, 31)
springdate1 = datetime.datetime(2024,2,10)
today = datetime.datetime.now() # 获取当前的日期
day = (springdate - today).days # 元旦日期减去当前日期
day1 = (springdate1 - today).days # 新年日期减去当前日期
mlingpen(-350,235)
t.write('距离元旦还有:', font=("黑体", 12, "bold"))
mlingpen(-220,245)
for i in str(day):
draw7Dight(eval(i))
mlingpen(-133,220)
t.write('天\n', font=("黑体", 12, "bold"))
mlingpen(-350,200)
t.write('距离春节还有:', font=("黑体", 12, "bold"))
mlingpen(-220,205)
for i in str(day1):
draw7Dight(eval(i))
mlingpen(-133,185)
t.write('天\n', font=("黑体", 12, "bold"))
def julishengdanjie(): #julishengdanjie
shengdandate = datetime.datetime(2023, 12, 25, 0, 0, 0) # 新的一年的日期
today = datetime.datetime.now() # 获取当前的日期
day = (shengdandate - today).days # 新年日期减去当前日期
#print("离圣诞节还有" + str(day) + "天" + '\r')
t.write('距离圣诞还有:', font=("黑体", 12, "bold"))
mlingpen(-220,280)
for i in str(day):
draw7Dight(eval(i))
mlingpen(-133,260)
t.write('天\n', font=("黑体", 12, "bold"))
# 数码管
def drawLine(draw):#绘制某单段(行或列)数码管的函数
t.pd() if draw else t.pu()#如果有就落笔,没有就抬笔
t.fd(10)# 向前绘制10
t.right(90)#顺时针转90度
def draw7Dight(dight):#根据数字绘制七段数码管
drawLine(True) if dight in [2, 3, 4, 5, 6, 8, 9] else drawLine(False) #判断第1段数码管(如果数字为2, 3, 4, 5, 6, 8, 9中的一个则需要落笔绘制)
drawLine(True) if dight in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False) #判断第2段数码管,(如果数字为0, 1, 3, 4, 5, 6, 7, 8, 9中的一个则需要落笔绘制)
drawLine(True) if dight in [0, 2, 3, 5, 6, 8, 9] else drawLine(False) #判断第3段数码管(如果数字为0, 2, 3, 5, 6, 8, 9中的一个则需要落笔绘制)
drawLine(True) if dight in [0, 2, 6, 8] else drawLine(False) #判断第4段数码管,(如果数字为0, 2, 6, 8中的一个则需要落笔绘制)
t.left(90) #走完1234段数码管,到第5段时需直走,在原来right90的基础上恢复过来就left90
drawLine(True) if dight in [0, 4, 5, 6, 8, 9] else drawLine(False) #判断第5段数码管(如果数字为0, 4, 5, 6, 8, 9则需要落笔绘制)
drawLine(True) if dight in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False) #判断第6段数码管,(如果数字为0, 2, 3, 5, 6, 7, 8, 9则需要落笔绘制)
drawLine(True) if dight in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False) #判断第7段数码管,(如果数字为0, 1, 2, 3, 4, 7, 8, 9则需要落笔绘制)
t.right(180)#调整方向,让下一个绘制回归原点
t.penup()#抬笔,停止绘制
t.fd(20)#前进20,为后续数字确定绘制位置
def draw7DightDate(date):#将取得的日期数据按七段数码管的形式处理显示,
t.pencolor("red")
for i in date:
if i == '-':#按分隔符处理年
t.write('年', font=("黑体", 12, "normal"))
#t.pencolor("green")
t.fd(40)
elif i == '=':#按分隔符处理月
t.write('月', font=("黑体", 12, "normal"))
#t.pencolor("blue")
t.fd(40)
elif i == '+':#按分隔符处理日
t.write('日', font=("黑体", 12, "normal"))
t.pencolor("red")
t.fd(40)
elif i == '/':#按分隔符处理时
t.write('时', font=("黑体", 12, "normal"))
#t.pencolor("green")
t.fd(40)
elif i == '*':#按分隔符处理分
t.write('分', font=("黑体", 12, "normal"))
#t.pencolor("blue")
t.fd(40)
elif i == '.':#按分隔符处理秒
t.write('秒', font=("黑体", 12, "normal"))
t.fd(40)
else: #绘制数码管数字
draw7Dight(eval(i))
mlingpen(-350,330)
t.pencolor("white")
t.write('现在是:', font=("黑体", 12, "bold"))
mlingpen(-280,330)
t.seth(0)
t.pensize(5)
draw7DightDate(time.strftime('%Y-%m=%d+', time.localtime()))
t.pencolor("white")
mlingpen(-350,290)
t.write('不算今天', font=("黑体", 10, "normal"))
mlingpen(-350,270)
julishengdanjie()
mlingpen(-350,250)
julispring()
t.pensize(1)
for j in range(100):
x = random.randint(-400, 400)
y = random.randint(-300,300)
dx = random.randint(1,10)
for i in range(6):
t.penup()
t.goto(x, y)
t.pendown()
t.pencolor('white')
t.forward(dx)
t.left(60)
t.circle(2)
t.goto(x, y)
t.hideturtle()
t.done()