簡體   English   中英

如何在Python烏龜競賽中宣布獲勝者

[英]How to declare winner in Python turtle race

我正在使用Python模塊“ turtle”創建一個基本的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庫時,沒有內置函數可以這樣做。 有什么辦法宣布這場比賽的冠軍嗎?

有很多方法可以做到這一點。 您需要做的兩件事是終點線(200)的x坐標和烏龜的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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM