#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Project: Christmas
@File: Christmas.py
@Author: Christmas
@Date: 2021/12/24 13:41
@desc: Christmas
"""
import turtle
import random
import time
# 定义画彩灯的方法
def drawlight():
# 如果觉得彩灯太多,可以把取值范围加大一些,对应的灯就会少一些
if random.randint(0, 30) == 0:
# 定义第一种颜色
turtle.color('tomato')
# 定义彩灯大小
turtle.circle(6)
elif random.randint(0, 30) == 1:
# 定义第二种颜色
turtle.color('orange')
# 定义彩灯大小
turtle.circle(3)
else:
# 其余的随机数情况下画空的树枝
turtle.color('dark green')
def tree(d, s): # 开始画树
if d <= 0: return
turtle.forward(s)
tree(d - 1, s * .8)
turtle.right(120)
tree(d - 3, s * .5)
drawlight() # 同时调用小彩灯的方法
turtle.right(120)
tree(d - 3, s * .5)
turtle.right(120)
turtle.backward(s)
# 定义画雪花的方法
def drawsnow():
# 隐藏笔头,ht=hideturtle
turtle.ht()
# 定义笔头大小
turtle.pensize(2)
for i in range(200): # 画多少雪花
# 定义画笔颜色为白色,其实就是雪花为白色
turtle.pencolor("white")
# 提笔,pu=penup
turtle.pu()
# 定义x坐标,随机从-350到350之间选择
turtle.setx(random.randint(-350, 350))
# 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始
turtle.sety(random.randint(-100, 350))
# 落笔,pd=pendown
turtle.pd()
# 雪花瓣数设为6
dens = 6
# 定义雪花大小
snowsize = random.randint(1, 10)
# 就是6,那就是画5次,也就是一个雪花五角星
for j in range(dens):
# turtle.forward(int(snowsize)) #int()取整数
turtle.fd(int(snowsize))
turtle.backward(int(snowsize))
# turtle.bd(int(snowsize)) #注意没有bd=backward,但有fd=forward,小bug
# 转动角度
turtle.right(int(360 / dens))
def Christmas():
n = 100.0
# 定义速度
turtle.speed("fastest")
# 定义背景颜色,可以自己换颜色
turtle.screensize(bg='black')
turtle.left(90)
turtle.forward(3 * n)
# 定义最上端星星的颜色,外圈是orange,内部是yellow
turtle.color("orange", "yellow")
turtle.begin_fill()
turtle.left(126)
# 画五角星
for i in range(5):
turtle.forward(n / 5)
# 五角星的角度
turtle.right(144)
turtle.forward(n / 5)
# 继续换角度
turtle.left(72)
turtle.end_fill()
turtle.right(126)
# 定义树枝的颜色
turtle.color("dark green")
turtle.backward(n * 4.8)
tree(15, n)
turtle.backward(n / 2)
# 循环画最底端的小装饰
for i in range(200):
a = 200 - 400 * random.random()
b = 10 - 20 * random.random()
turtle.up()
turtle.forward(b)
turtle.left(90)
turtle.forward(a)
turtle.down()
if random.randint(0, 1) == 0:
turtle.color('tomato')
else:
turtle.color('wheat')
turtle.circle(2)
turtle.up()
turtle.backward(a)
turtle.right(90)
turtle.backward(b)
# 定义字体颜色
turtle.color("dark red", "red")
# 定义文字、位置、字体、大小
turtle.write("Merry Christmas", align="center", font=("Comic Sans MS", 40, "bold"))
# 调用画雪花的方法
drawsnow()
# 完成,否则会直接关闭
turtle.done()
time.sleep(10)
if __name__ == '__main__':
Christmas()
Christmas
最新推荐文章于 2023-12-06 09:32:14 发布