在python中使用turtle函数时,如何生成随机点颜色?
对于my类,我的任务是编写一个用户通过箭头键控制的turtle函数。该函数显示自身,然后是一个带有点的镜子。每个点都应该是完全随机的颜色。到目前为止,我有:在python中使用turtle函数时,如何生成随机点颜色?,python,random,turtle-graphics,Python,Random,Turtle Graphics,对于my类,我的任务是编写一个用户通过箭头键控制的turtle函数。该函数显示自身,然后是一个带有点的镜子。每个点都应该是完全随机的颜色。到目前为止,我有: from turtle import * from random import randrange FRAMES_PER_SECOND = 10 mirrorTurtle = Turtle() def turnRight(): global turtle global mirrorTurtle turtle.r
from turtle import *
from random import randrange
FRAMES_PER_SECOND = 10
mirrorTurtle = Turtle()
def turnRight():
global turtle
global mirrorTurtle
turtle.right(45)
def turnLeft():
global turtle
global mirrorTurtle
turtle.left(45)
def randomColor(turtle):
r = randrange(256) # red component of color
g = randrange(256) # green component
b = randrange(256) # blue component
def move():
colormode(255)
global turtle
global mirrorTurtle
global moving
if moving:
for i in range(1):
turtle.penup()
mirrorTurtle.penup()
turtle.forward(40)
turtle.dot(20, "red")
mirrorTurtle.dot(10, "blue")
turtle.forward(1)
mirrorTurtle.setpos(-turtle.xcor(), -turtle.ycor())
ontimer(move, 1000 // FRAMES_PER_SECOND)
def start():
global moving
moving = True
move()
def stop():
global moving
moving = False
def main():
colormode(255)
global turtle
global mirrorTurtle
turtle = Turtle()
turtle.hideturtle()
mirrorTurtle.hideturtle()
onkey(turnRight, "Right")
onkey(turnLeft, "Left")
onkey(start, "Up")
onkey(stop, "Down")
listen()
if __name__ == "__main__":
main()
我的问题是,如果我有“红色”和“蓝色”,那么它们应该是随机颜色(仍然充当镜像(即,如果第一个点键入的是蓝色,则镜像也应该是蓝色)。如果您搜索一个提供随机颜色字符串的函数,请参见以下内容:
def randcolor():
return "#"+"".join([random.choice("0123456789ABCDEF") for i in range(6)]
您非常接近解决方案。您需要对
randomColor
和move
进行一些小的更改
在randomColor
中,您已经成功创建了三个随机数。现在您只需创建一个元组并返回它,如下所示:
def randomColor():
r = randrange(256) # red component of color
g = randrange(256) # green component
b = randrange(256) # blue component
return r,g,b
然后,您需要在调用dot()
时使用该随机颜色:
此外,为了让您的程序在我的环境中工作,我需要在move()
的末尾添加对update()
的调用,并在main()
的末尾添加对mainloop()
的调用,这是非常不清楚的。如果没有colormode(…):color(“#“+”)。join([random.choice(“0123456789ABCDEF”)表示范围(6)])如果我理解正确,我遇到的问题是如何在点函数中生成随机颜色。我知道如何使用randrange生成随机颜色,但在点函数中,颜色是作为字符串输入的。请参阅上面的注释,不要使用colormode。
mirrorTurtle.dot(10, randomColor())