Как объявить победителя в гонке черепах Python - PullRequest
0 голосов
/ 02 марта 2019

Я создаю базовую программу turtle, используя модуль Python 'turtle'.Единственная проблема, с которой я сталкиваюсь, - это как объявить победителя.

Я попытаюсь объяснить свою программу: я начал с создания вертикальных линий и финальной «финишной линии».Затем я использовал 3 фигуры и с помощью randint() я перемещаю этих черепах вперед, чтобы запустить гонку.Вот код:

from turtle import *
from random import randint

speed(0)
penup()
goto(-100,200)
for step in range(15):
    write(step, align='center')
    right(90)
    forward(10)
    pendown()
    forward(160)
    penup()
    backward(170)
    left(90)
    forward(20)

goto(200,250)
write("Finish Line", align='center')
pendown()
right(90)
forward(300)

vince = Turtle()
vince.color('red')
vince.shape('turtle')
vince.penup()
vince.goto(-120,160)
vince.pendown()

lawliet = Turtle()
lawliet.color('blue')
lawliet.shape('turtle')
lawliet.penup()
lawliet.goto(-120,130)
lawliet.pendown()

boyka = Turtle()
boyka.color('green')
boyka.shape('turtle')
boyka.penup()
boyka.goto(-120,100)
boyka.pendown()

for turn in range(100):
    speed(0)
    vince.forward(randint(1,5))
    lawliet.forward(randint(1,5))
    boyka.forward(randint(1, 5))

Вот проблема: я хочу объявить форму, которая выиграла гонку.Но когда я заглянул в библиотеку Turtle, там не было встроенной функции для этого.Есть ли способ объявить победителя в этой гонке?

1 Ответ

0 голосов
/ 03 марта 2019

Есть несколько способов сделать это.Две вещи, которые вам нужны, это координата x финишной линии (200) и координата x черепахи turtle.xcor().Ниже приведено простое решение, когда первая черепаха, центр масс которой находится над финишной чертой, превращается в золото для победы:

from turtle import Screen, Turtle
from random import randint, choice

track = Turtle(visible=False)
track.speed('fastest')
track.penup()
track.goto(-100, 200)

for step in range(15):
    track.write(step, align='center')
    track.right(90)
    track.forward(10)
    track.pendown()
    track.forward(160)
    track.penup()
    track.backward(170)
    track.left(90)
    track.forward(20)

track.goto(200, 250)
track.write("Finish Line", align='center')
track.pendown()
track.right(90)
track.forward(300)

vince = Turtle('turtle')
vince.speed('fastest')
vince.color('red')
vince.penup()
vince.goto(-120, 160)
vince.pendown()

lawliet = Turtle('turtle')
lawliet.speed('fastest')
lawliet.color('blue')
lawliet.penup()
lawliet.goto(-120, 130)
lawliet.pendown()

boyka = Turtle('turtle')
boyka.speed('fastest')
boyka.color('green')
boyka.penup()
boyka.goto(-120, 100)
boyka.pendown()

screen = Screen()

while True:
    turtle = choice([vince, lawliet, boyka])
    turtle.forward(randint(1, 5))
    if turtle.xcor() > 200:
        break

turtle.color('gold')

screen.exitonclick()
...