【问题标题】:How do I set a random speed for my Turtle each time I run the code?每次运行代码时,如何为我的 Turtle 设置随机速度?
【发布时间】:2017-02-10 23:56:17
【问题描述】:
我正在尝试制作 Turtle 赛车游戏(使用 Python - Turtle),但我无法弄清楚每次运行代码时如何为每只海龟设置随机速度(这样 Turtle x 不会每次都赢时间)
#define race fuction. Move each Turtle fd(random number between 2-10)
red.pensize(10)
blue.pensize(10)
green.pensize(10)
red.speed(random)
blue.speed(random)
green.speed(random)
【问题讨论】:
标签:
python
turtle-graphics
【解决方案1】:
将turtle.speed() 设置为任何值,包括random.randint() 的结果,既非必要也不充分。这很方便。下面是我的极简乌龟赛跑代码。 turtle.speed() 方法被用作存放海龟速度的地方,但如果你改变:
turtle.forward(turtle.speed() + 1)
到一个固定值:
turtle.forward(10)
您会看到,无论turtle.speed() 的设置如何,海龟都以相同的速度移动。 turtle.speed() 值仅决定海龟绘制其更新的速度。最终,turtle.forward() 的参数差异控制了向前运动的数量:
from random import randint
from turtle import Turtle, Screen
TURTLE_SIZE = 20
MAXIMUM_SPEED = 10
DEFAULTS = {'shape':"turtle", 'visible': False}
screen = Screen()
starting_line = TURTLE_SIZE - screen.window_width()/2
finish_line = screen.window_width()/2 - TURTLE_SIZE - MAXIMUM_SPEED
turtles = dict(red=Turtle(**DEFAULTS), green=Turtle(**DEFAULTS), blue=Turtle(**DEFAULTS))
for i, (color, turtle) in enumerate(turtles.items()):
turtle.color(color)
turtle.penup()
turtle.goto(starting_line, i * TURTLE_SIZE)
turtle.speed(randint(0, MAXIMUM_SPEED))
turtle.showturtle()
racing = True
while racing:
for turtle in turtles.values():
turtle.forward(turtle.speed() + 1)
if turtle.xcor() >= finish_line:
racing = False
break
screen.exitonclick()
要获得更复杂的海龟赛跑,您可能需要使用ontimer() 事件以允许它们更独立地移动。