如何指出哪只乌龟赢得了比赛
How to indicate which turtle won the race
我有一个简单的海龟赛车游戏。我正在尝试向 declare/display 添加代码,当一只乌龟到达终点线(x 位置 190)时,四只乌龟中的哪一只赢得了比赛。但我得到错误。您能否解释一下我如何修改此代码才能使其正常工作?
from turtle import *
from random import randint
tur1=Turtle()
tur1.color("red")
tur1.shape("turtle")
tur1.penup()
tur1.goto(-155,100)
tur1.pendown()
tur2=Turtle()
tur2.color("blue")
tur2.shape("turtle")
tur2.penup()
tur2.goto(-155,70)
tur2.pendown()
tur3=Turtle()
tur3.color("green")
tur3.shape("turtle")
tur3.penup()
tur3.goto(-155,40)
tur3.pendown()
tur4=Turtle()
tur4.color("yellow")
tur4.shape("turtle")
tur4.penup()
tur4.goto(-155,10)
tur4.pendown()
"""if tur[i]==190(x value):
finish_text.write( tur[i] won the race)
Here I use a for loop to name the winner turtle..tur[i]"""
for turn in range(102):
for i in range(4): "not sure how to set code this part
tur[1].forward(randint(1,5))
tur[2].forward(randint(1,5))
tur[3].forward(randint(1,5))
tur[4].forward(randint(1,5))
import turtle
wn=turtle.Screen()
wn.bgcolor("black")
finish=turtle.Turtle()
finish.up()
finish.speed(0)
finish.goto(190,140)
finish.down()
finish.right(90)
finish.width(3)
for i in range(16):
finish.color("blue")
finish.forward(5)
finish.color("red")
finish.forward(5)
finish_text=Turtle()
finish_text.up()
finish_text.speed(10)
finish_text.color("white")
finish_text.goto(160,150)
finish_text.write("Finishing-Line",font=("Times New Roman",12,"bold"))
finish_text.goto(160,250)
"Here I am tring to announce which turtle won the race"
finish_text.write("turtle[i] won the race")
wn.mainloop()
我已经调整了一些东西,但是你真的需要做一个海龟课程和一个python课程。问题是我可以看到你正在努力实现某些你显然已经看到别人做过或读过的事情,但是你没有正确地实现它们。列出每个错误和错误对我来说会花费太长时间,但我已经更改了您的代码以使其至少 运行.
我能说的最好的是,您需要查看以下内容:列表、for 循环,并且您需要学习 Python 课程。我可以推荐 Sololearn,这是一门在线编码课程。
修改后的代码在这里:
from turtle import *
from random import randint
tur1=Turtle()
tur1.color("red")
tur1.shape("turtle")
tur1.penup()
tur1.goto(-155,100)
tur1.pendown()
tur2=Turtle()
tur2.color("blue")
tur2.shape("turtle")
tur2.penup()
tur2.goto(-155,70)
tur2.pendown()
tur3=Turtle()
tur3.color("green")
tur3.shape("turtle")
tur3.penup()
tur3.goto(-155,40)
tur3.pendown()
tur4=Turtle()
tur4.color("yellow")
tur4.shape("turtle")
tur4.penup()
tur4.goto(-155,10)
tur4.pendown()
"""if tur[i]==190(x value):
finish_text.write( tur[i] won the race)
Here I use a for loop to name the winner turtle..tur[i]"""
for turn in range(102): # why 102...
#for i in range(4): # I see what you were trying to do, but no.
tur1.forward(randint(1,5)) # FIX: no square brackets
tur2.forward(randint(1,5))
tur3.forward(randint(1,5))
tur4.forward(randint(1,5))
#import turtle # No need for this
wn=turtle.Screen()
wn.bgcolor("black")
finish=turtle.Turtle()
finish.up()
finish.speed(0)
finish.goto(190,140)
finish.down()
finish.right(90)
finish.width(3)
for i in range(16):
finish.color("blue")
finish.forward(5)
finish.color("red")
finish.forward(5)
finish_text=Turtle()
finish_text.up()
finish_text.speed(10)
finish_text.color("white")
finish_text.goto(160,150)
finish_text.write("Finishing-Line",font=("Times New Roman",12,"bold"))
finish_text.goto(160,250)
"Here I am tring to announce which turtle won the race"
# Well you never detected which turtle won the race...
'''
To detect which turtle won the race, you would have to record how far each
one moves and which one got the correct position first... but you do not record
that.
'''
finish_text.write("turtle[i] won the race") # what is 'i'?
# 'i' will always be 3, because at the end of your 'for' loop 'i' is 3
# before it exits the for loop.
wn.mainloop()
另外,我想指出,这类问题不适合 Whosebug。您可能想阅读有关要问什么样的问题的页面。在我看来,您刚刚创建了一个帐户来询问这个问题以修复您的代码,应该在 StackExchange 的 CodeReview 部分询问此类问题,您可以在那里让其他人修复和改进您的代码。 Whosebug 是用来问别人将来会看到的问题来帮助自己的,但是这个问题不能也不会在将来帮助任何人。
您的代码似乎有两种想法,在顶部以一种方式导入 turtle,但稍后以另一种方式重新导入。它将赛车手创建为个人,但在下一步中假设他们在一个数组中(实际上不是。)让我们重新编写此代码以使其更加一致并使其基本上达到 运行:
from turtle import Screen, Turtle, mainloop
from random import randint
COLORS = ['red', 'blue', 'green', 'yellow']
FONT = ("Times New Roman", 12, 'bold')
screen = Screen()
screen.bgcolor('black')
finish = Turtle(visible=False)
finish.speed('fastest')
finish.penup()
finish.color('white')
finish.goto(160, 150)
finish.write("Finish-Line", font=FONT)
finish.width(3)
finish.goto(190, 140)
finish.right(90)
finish.pendown()
for _ in range(16):
finish.color('blue')
finish.forward(5)
finish.color('red')
finish.forward(5)
finish.penup()
finish.goto(160, 250)
turtles = []
for gate, color in enumerate(COLORS):
turtle = Turtle('turtle')
turtle.color(color)
turtle.penup()
turtle.goto(-155, 10 + 30 * gate)
turtle.pendown()
turtles.append(turtle)
winner = None
while not winner:
for turtle in turtles:
turtle.forward(randint(1, 5))
if turtle.xcor() >= 190:
winner = turtle
break # we have a winner!
else: # no break
continue
break
finish.pencolor(winner.pencolor())
finish.write("{} won the race!".format(winner.pencolor()), font=FONT)
mainloop()
我有一个简单的海龟赛车游戏。我正在尝试向 declare/display 添加代码,当一只乌龟到达终点线(x 位置 190)时,四只乌龟中的哪一只赢得了比赛。但我得到错误。您能否解释一下我如何修改此代码才能使其正常工作?
from turtle import *
from random import randint
tur1=Turtle()
tur1.color("red")
tur1.shape("turtle")
tur1.penup()
tur1.goto(-155,100)
tur1.pendown()
tur2=Turtle()
tur2.color("blue")
tur2.shape("turtle")
tur2.penup()
tur2.goto(-155,70)
tur2.pendown()
tur3=Turtle()
tur3.color("green")
tur3.shape("turtle")
tur3.penup()
tur3.goto(-155,40)
tur3.pendown()
tur4=Turtle()
tur4.color("yellow")
tur4.shape("turtle")
tur4.penup()
tur4.goto(-155,10)
tur4.pendown()
"""if tur[i]==190(x value):
finish_text.write( tur[i] won the race)
Here I use a for loop to name the winner turtle..tur[i]"""
for turn in range(102):
for i in range(4): "not sure how to set code this part
tur[1].forward(randint(1,5))
tur[2].forward(randint(1,5))
tur[3].forward(randint(1,5))
tur[4].forward(randint(1,5))
import turtle
wn=turtle.Screen()
wn.bgcolor("black")
finish=turtle.Turtle()
finish.up()
finish.speed(0)
finish.goto(190,140)
finish.down()
finish.right(90)
finish.width(3)
for i in range(16):
finish.color("blue")
finish.forward(5)
finish.color("red")
finish.forward(5)
finish_text=Turtle()
finish_text.up()
finish_text.speed(10)
finish_text.color("white")
finish_text.goto(160,150)
finish_text.write("Finishing-Line",font=("Times New Roman",12,"bold"))
finish_text.goto(160,250)
"Here I am tring to announce which turtle won the race"
finish_text.write("turtle[i] won the race")
wn.mainloop()
我已经调整了一些东西,但是你真的需要做一个海龟课程和一个python课程。问题是我可以看到你正在努力实现某些你显然已经看到别人做过或读过的事情,但是你没有正确地实现它们。列出每个错误和错误对我来说会花费太长时间,但我已经更改了您的代码以使其至少 运行.
我能说的最好的是,您需要查看以下内容:列表、for 循环,并且您需要学习 Python 课程。我可以推荐 Sololearn,这是一门在线编码课程。
修改后的代码在这里:
from turtle import *
from random import randint
tur1=Turtle()
tur1.color("red")
tur1.shape("turtle")
tur1.penup()
tur1.goto(-155,100)
tur1.pendown()
tur2=Turtle()
tur2.color("blue")
tur2.shape("turtle")
tur2.penup()
tur2.goto(-155,70)
tur2.pendown()
tur3=Turtle()
tur3.color("green")
tur3.shape("turtle")
tur3.penup()
tur3.goto(-155,40)
tur3.pendown()
tur4=Turtle()
tur4.color("yellow")
tur4.shape("turtle")
tur4.penup()
tur4.goto(-155,10)
tur4.pendown()
"""if tur[i]==190(x value):
finish_text.write( tur[i] won the race)
Here I use a for loop to name the winner turtle..tur[i]"""
for turn in range(102): # why 102...
#for i in range(4): # I see what you were trying to do, but no.
tur1.forward(randint(1,5)) # FIX: no square brackets
tur2.forward(randint(1,5))
tur3.forward(randint(1,5))
tur4.forward(randint(1,5))
#import turtle # No need for this
wn=turtle.Screen()
wn.bgcolor("black")
finish=turtle.Turtle()
finish.up()
finish.speed(0)
finish.goto(190,140)
finish.down()
finish.right(90)
finish.width(3)
for i in range(16):
finish.color("blue")
finish.forward(5)
finish.color("red")
finish.forward(5)
finish_text=Turtle()
finish_text.up()
finish_text.speed(10)
finish_text.color("white")
finish_text.goto(160,150)
finish_text.write("Finishing-Line",font=("Times New Roman",12,"bold"))
finish_text.goto(160,250)
"Here I am tring to announce which turtle won the race"
# Well you never detected which turtle won the race...
'''
To detect which turtle won the race, you would have to record how far each
one moves and which one got the correct position first... but you do not record
that.
'''
finish_text.write("turtle[i] won the race") # what is 'i'?
# 'i' will always be 3, because at the end of your 'for' loop 'i' is 3
# before it exits the for loop.
wn.mainloop()
另外,我想指出,这类问题不适合 Whosebug。您可能想阅读有关要问什么样的问题的页面。在我看来,您刚刚创建了一个帐户来询问这个问题以修复您的代码,应该在 StackExchange 的 CodeReview 部分询问此类问题,您可以在那里让其他人修复和改进您的代码。 Whosebug 是用来问别人将来会看到的问题来帮助自己的,但是这个问题不能也不会在将来帮助任何人。
您的代码似乎有两种想法,在顶部以一种方式导入 turtle,但稍后以另一种方式重新导入。它将赛车手创建为个人,但在下一步中假设他们在一个数组中(实际上不是。)让我们重新编写此代码以使其更加一致并使其基本上达到 运行:
from turtle import Screen, Turtle, mainloop
from random import randint
COLORS = ['red', 'blue', 'green', 'yellow']
FONT = ("Times New Roman", 12, 'bold')
screen = Screen()
screen.bgcolor('black')
finish = Turtle(visible=False)
finish.speed('fastest')
finish.penup()
finish.color('white')
finish.goto(160, 150)
finish.write("Finish-Line", font=FONT)
finish.width(3)
finish.goto(190, 140)
finish.right(90)
finish.pendown()
for _ in range(16):
finish.color('blue')
finish.forward(5)
finish.color('red')
finish.forward(5)
finish.penup()
finish.goto(160, 250)
turtles = []
for gate, color in enumerate(COLORS):
turtle = Turtle('turtle')
turtle.color(color)
turtle.penup()
turtle.goto(-155, 10 + 30 * gate)
turtle.pendown()
turtles.append(turtle)
winner = None
while not winner:
for turtle in turtles:
turtle.forward(randint(1, 5))
if turtle.xcor() >= 190:
winner = turtle
break # we have a winner!
else: # no break
continue
break
finish.pencolor(winner.pencolor())
finish.write("{} won the race!".format(winner.pencolor()), font=FONT)
mainloop()