如何在Python Turtle中重复获取随机颜色?(DVD logo复刻场景)
解决Python Turtle重复获取随机RGB颜色的问题
你现在的代码只在初始化时生成一次固定的RGB值,要重复获取新颜色,最直接的方法是把生成随机颜色的逻辑做成可重复调用的函数。
步骤说明:
- 首先必须开启Turtle的255色模式(默认是0-1的小数模式,直接用0-255会出问题):
import turtle import random turtle.colormode(255) # 关键:让Turtle支持0-255范围的RGB值 - 定义一个生成随机颜色的函数,每次调用它都会重新生成一组新的RGB值:
def get_random_color(): r = random.randint(0, 255) g = random.randint(0, 255) b = random.randint(0, 255) return (r, g, b) - 之后每次需要换颜色时(比如DVD logo碰到窗口边界时),直接调用这个函数就行:
# 示例:用正方形模拟DVD logo turtle.shape("square") turtle.fillcolor(get_random_color()) # 第一次设置颜色 turtle.penup() turtle.speed(0) # 移动速度参数 dx = 2 dy = 2 while True: x, y = turtle.pos() # 碰撞左右边界:反转x方向并换颜色 if x > turtle.window_width()/2 - 20 or x < -turtle.window_width()/2 + 20: dx *= -1 turtle.fillcolor(get_random_color()) # 碰撞上下边界:反转y方向并换颜色 if y > turtle.window_height()/2 - 20 or y < -turtle.window_height()/2 + 20: dy *= -1 turtle.fillcolor(get_random_color()) turtle.setpos(x + dx, y + dy)
关键要点:
- 函数的作用就是把重复执行的代码打包,每次调用都会重新执行里面的随机生成逻辑,所以能拿到新的颜色值。
- 必须先调用
turtle.colormode(255),否则Turtle会把0-255的RGB值当成0-1范围的小数处理,导致颜色显示异常。
内容的提问来源于stack exchange,提问作者OwenSucksAtCoding
相关产品推荐
相关产品推荐

