话不多说上代码!
import turtle as tu
import random as ra
tu.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 = r
self.x = 0
self.y = -200
self.color = ra.choice(colors)
self.outline = 2
self.counter = 0
def 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 += 1
if 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的事件循环,使窗口保持打开状态。