2017-02-10 2 views
0

Я пытаюсь сделать гоночную игру Черепахи (используя 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) 
+3

Возможная Дубликат [Генерация случайных чисел от 0 до 9] (http://stackoverflow.com/questions/3996904/generate-random-integers-between-0-and-9) – TemporalWolf

ответ

0

Установка 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() события, чтобы позволить им двигаться независимо друг от друга.

enter image description here

Смежные вопросы