对于我的班级,我的任务是编写一个用户通过箭头键控制的乌龟功能。该功能显示自身,然后显示自身带点的镜像。每个点应该是完全随机的颜色。到目前为止,我有这个:
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()
对我来说,问题是,我在哪里" red"和"蓝"应该是随机颜色(仍然作为镜子(即;如果第一个点的类型是蓝色,镜子也应该是蓝色)。
答案 0 :(得分:0)
如果您搜索的函数会为您提供随机颜色字符串,请参阅:
def randcolor():
return "#"+"".join([random.choice("0123456789ABCDEF") for i in range(6)]
答案 1 :(得分:0)
您非常接近解决方案。您需要对randomColor
和move
进行细微更改。
在randomColor
中,您已成功创建了三个随机数。现在您只需创建一个tuple
并将其返回,如下所示:
def randomColor():
r = randrange(256) # red component of color
g = randrange(256) # green component
b = randrange(256) # blue component
return r,g,b
然后,您需要在调用dot()
:
mirrorTurtle.dot(10, randomColor())
此外,为了让您的程序在我的环境中运行,我需要在update()
末尾添加对move()
的调用,并在结束时调用mainloop()
。 main()
。