繁体   English   中英

每次运行代码时,如何为Turtle设置随机速度?

[英]How do I set a random speed for my Turtle each time I run the code?

我正在尝试制作一个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)

turtle.speed()设置为任何值(包括random.randint()的结果random.randint()既不必要也不充分。 很简单。 以下是我的极简乌龟赛车代码。 turtle.speed()方法用作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()事件来使它们更加独立地运动。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM