如何在 Python 海龟比赛中宣布获胜者
How to declare winner in Python turtle race
我正在使用 Python 模块 'turtle' 创建一个基本的 turtle 程序。我遇到的唯一问题是如何宣布获胜者。
我将尝试解释我的程序:我开始制作一些垂直线和最后的 "Finish Line"。然后我使用了 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 库时,没有内置函数可以这样做。有什么办法可以宣布这场比赛的获胜者吗?
有多种方法可以做到这一点。您需要做的两件事是终点线的 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()
我正在使用 Python 模块 'turtle' 创建一个基本的 turtle 程序。我遇到的唯一问题是如何宣布获胜者。
我将尝试解释我的程序:我开始制作一些垂直线和最后的 "Finish Line"。然后我使用了 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 库时,没有内置函数可以这样做。有什么办法可以宣布这场比赛的获胜者吗?
有多种方法可以做到这一点。您需要做的两件事是终点线的 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()