话不多说上代码!
import turtle as tu
import random as ratu.setup(1.0, 1.0)
tu.screensize(1.0, 1.0)
tu.bgcolor('black')
t = tu.Pen()
t.ht()
colors = ['pink', 'hotpink', 'deeppink', 'lightpink', 'red', 'purple', 'violet', 'magenta']def draw_star(x, y, size, color):t.penup()t.goto(x, y)t.pendown()t.color(color)t.begin_fill()for _ in range(5):t.forward(size)t.right(144)t.end_fill()class Love:def __init__(self, r):self.r = rself.x = 0self.y = -200self.color = ra.choice(colors)self.outline = 2self.counter = 0def draw(self):t.pensize(self.outline)t.penup()t.color(self.color)t.goto(self.x, self.y)t.pendown()t.setheading(140)t.begin_fill()t.forward(224)for _ in range(200):t.right(1)t.forward(2)t.left(120)for _ in range(200):t.right(1)t.forward(2)t.forward(224)t.end_fill()def change(self):self.counter += 1if self.counter % 100 == 0:self.color = ra.choice(colors)Loves = [Love(100) for _ in range(1)]for _ in range(10000):tu.tracer(0)t.clear()for love in Loves:love.draw()love.change()# 绘制星星for _ in range(20):x = ra.randint(-300, 300)y = ra.randint(-200, 200)size = ra.randint(5, 20)color = ra.choice(colors)draw_star(x, y, size, color)tu.update()tu.mainloop()
效果图!
代码解释
- 1. `import turtle as tu` 和 `import random as ra`: 导入turtle和random库,分别用于绘图和生成随机数。
- 2. `tu.setup(1.0, 1.0)` 和 `tu.screensize(1.0, 1.0)`: 设置画布和屏幕大小。
- 3. `tu.bgcolor('black')`: 设置画布背景颜色为黑色。
- 4. `t = tu.Pen()`: 创建一个画笔对象。
- 5. `t.ht()`: 隐藏画笔。
- 6. `colors = [...]`: 定义一个颜色列表,用于爱心和星星的颜色。
- 7. `draw_star(x, y, size, color)`: 定义一个函数,用于绘制星星。
- 8. `class Love:`: 定义一个爱心类。
- 9. `__init__(self, r)`: 初始化方法,设置爱心的半径、位置、颜色等属性。
- 10. `draw(self)`: 定义一个方法,用于绘制心形。
- 11. `change(self)`: 定义一个方法,用于改变心形的颜色。
- 12. `Loves = [Love(100) for _ in range(1)]`: 创建一个爱心对象列表。
- 13. `while True:`: 主循环,用于不断绘制爱心和星星。
- 14. `tu.tracer(0)`: 关闭屏幕更新,以便一次性绘制所有图形。
- 15. `t.clear()`: 清除画布上的所有图形。
- 16. `for love in Loves:`: 循环遍历爱心列表,绘制每个爱心。
- 17. `for _ in range(20):`: 循环绘制星星。
- 18. `x = ra.randint(-300, 300)` 等: 生成星星的随机位置、大小和颜色。
- 19. `draw_star(x, y, size, color)`: 调用函数绘制星星。
- 20. `tu.update()`: 更新屏幕,显示所有图形。
- 21. `tu.mainloop()`: 进入turtle的事件循环,使窗口保持打开状态。