Python圣诞树代码

# 小黄 2023/12/25import turtle as t# as就是取个别名,后续调用的t都是turtlefrom turtle import *import random as rn = 100.0speed(20)# 定义速度pensize(5)# 画笔宽度screensize(800, 800, bg='black')# 定义背景颜色,可以自己换颜色left(90)forward(250)# 开始的高度color("orange", "yellow")# 定义最上端星星的颜色,外圈是orange,内部是yellowbegin_fill()left(126)for i in range(5):# 画五角星forward(n / 5)right(144)# 五角星的角度forward(n / 5)left(72)# 继续换角度end_fill()right(126)def drawlight():# 定义画彩灯的方法if r.randint(0, 50) == 0:# 如果觉得彩灯太多,可以把取值范围加大一些,对应的灯就会少一些color('tomato')# 定义第一种颜色circle(3)# 定义彩灯大小elif r.randint(0, 30) == 1:color('orange')# 定义第二种颜色circle(4)# 定义彩灯大小elif r.randint(0, 50) == 2:color('blue')# 定义第三种颜色circle(2)# 定义彩灯大小elif r.randint(0, 30) == 3:color('white')# 定义第四种颜色circle(4)# 定义彩灯大小else:color('dark green')# 其余的随机数情况下画空的树枝color("dark green")# 定义树枝的颜色backward(n * 4.8)def tree(d, s):# 开始画树if d <= 0: returnforward(s)tree(d - 1, s * .8)right(120)tree(d - 3, s * .5)drawlight()# 同时调用小彩灯的方法right(120)tree(d - 3, s * .5)right(120)backward(s)tree(15, 100)backward(50)for i in range(200):# 循环画最底端的小装饰a = 200 - 400 * r.random()b = 10 - 20 * r.random()up()forward(b)left(90)forward(a)down()if r.randint(0, 1) == 0:color('tomato')else:color('wheat')circle(2)up()backward(a)right(90)backward(b)def drawsnowman(n,m,a,b):# 画雪人 (n,m)是头和身子交点的坐标,a是头的大小,m是身体的大小t.goto(n, m)t.pencolor("white")t.pensize(2)t.fillcolor("white")t.seth(0)t.begin_fill()t.circle(a)t.end_fill()t.seth(180)t.begin_fill()t.circle(b)t.end_fill()t.pencolor("black")t.fillcolor("black")t.penup()# 右眼睛t.goto(n-a/4, m+a)t.seth(0)t.pendown()t.begin_fill()t.circle(2)t.end_fill()t.penup()# 左眼睛t.goto(n+a/4, m+a)t.seth(0)t.pendown()t.begin_fill()t.circle(2)t.end_fill()t.penup()# 画嘴巴t.goto(n, m+a/2)t.seth(0)t.pendown()t.fd(5)t.penup() # 画扣子t.pencolor("red")t.fillcolor("red")t.goto(n, m-b/4)t.pendown()t.begin_fill()t.circle(2)t.end_fill()t.penup()t.pencolor("yellow")t.fillcolor("yellow")t.goto(n, m-b/2)t.pendown()t.begin_fill()t.circle(2)t.end_fill()t.penup()t.pencolor("orange")t.fillcolor("orange")t.goto(n, m-(3*b)/4)t.pendown()t.begin_fill()t.circle(2)t.end_fill()drawsnowman(-200, -200, 20, 30)drawsnowman(-250, -200, 30, 40)t.up()t.goto(100, 200)t.down()t.color("dark orange", "orange")# 定义字体颜色t.penup()t.write("小黄同学’s Christmas Tree", font=("Comic Sans MS", 26, "bold"))# 定义文字、位置、字体、大小t.end_fill()def drawsnow():# 画雪花t.ht()# 隐藏笔头,ht=hideturtlet.pensize(2)# 定义笔头大小for i in range(200):# 画多少雪花t.pencolor("white")# 定义画笔颜色为白色,其实就是雪花为白色t.pu()# 提笔,pu=penupt.setx(r.randint(-350, 350))# 定义x坐标,随机从-350到350之间选择t.sety(r.randint(-100, 350))# 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始t.pd()# 落笔,pd=pendowndens = 6# 雪花瓣数设为6snowsize = r.randint(1, 10)# 定义雪花大小for j in range(dens):# 就是6,那就是画5次,也就是一个雪花五角星# t.forward(int(snowsize))#int()取整数t.fd(int(snowsize))t.backward(int(snowsize))# t.bd(int(snowsize))#注意没有bd=backward,但有fd=forward,小bugt.right(int(360 / dens))# 转动角度drawsnow()# 调用画雪花的方法t.done()# 完成,否则会直接关闭