问题描述
我接到了一个任务,我必须用海龟模块进行一场“海龟竞赛”。我需要实现一个获胜者和一个获胜者的输出加上一个重启功能。
我的代码:
import turtle
import random
turtles = []
def setup():
global turtles
startline = -480
turtle1 = turtle.Turtle()
turtle1.color("red")
turtle1.shape("turtle")
turtle1.penup()
turtle1.setpos(startline,-40)
turtle1.pendown()
turtles.append(turtle1)
turtle2 = turtle.Turtle()
turtle2.color("green")
turtle2.shape("turtle")
turtle2.penup()
turtle2.setpos(startline,-20)
turtle2.pendown()
turtles.append(turtle2)
turtle3 = turtle.Turtle()
turtle3.color("green")
turtle3.shape("turtle")
turtle3.penup()
turtle3.setpos(startline,-20)
turtle3.pendown()
turtles.append(turtle3)
turtle4 = turtle.Turtle()
turtle4.color("green")
turtle4.shape("turtle")
turtle4.penup()
turtle4.setpos(startline,-20)
turtle4.pendown()
turtles.append(turtle4)
def race():
global turtles
winner = False
while not winner:
for singleTurtle in turtles:
singleTurtle.forward(random.randint(0,4))
print(singleTurtle.fillcolor(),singleTurtle._position)
finishline = 200
stampsize = 20
squaresize = 15
for i in range(10):
turtles.setpos(finishline,(150 - (i * squaresize * 2)))
turtles.stamp()
for j in range(10):
turtles.setpos(finishline + squaresize,((150 - squaresize) - (j * squaresize * 2)))
turtles.hideturtle()
setup()
race()
turtles.mainloop()
现在,我在终点线上苦苦挣扎,请你们中的一位给我一些支持,我错过了什么或做错了什么。
解决方法
您不能对 Turtle
对象调用 list
对象方法,即使列表仅包含 Turtle
对象。
相反,使用 for
循环遍历 turtles
列表,并分别对列表的每个元素执行命令。
所以改变这部分:
for i in range(10):
turtles.setpos(finishline,(150 - (i * squaresize * 2)))
turtles.stamp()
for j in range(10):
turtles.setpos(finishline + squaresize,((150 - squaresize) - (j * squaresize * 2)))
turtles.hideturtle()
为此:
for i in range(10):
for turtle in turtles:
turt.setpos(finishline,(150 - (i * squaresize * 2)))
turt.stamp()
for j in range(10):
for turt in turtles:
turt.setpos(finishline + squaresize,((150 - squaresize) - (j * squaresize * 2)))
for turt in turtles:
turt.hideturtle()
总之:
import turtle
import random
turtles = []
def setup():
global turtles
startline = -480
turtle1 = turtle.Turtle()
turtle1.color("red")
turtle1.shape("turtle")
turtle1.penup()
turtle1.setpos(startline,-40)
turtle1.pendown()
turtles.append(turtle1)
turtle2 = turtle.Turtle()
turtle2.color("green")
turtle2.shape("turtle")
turtle2.penup()
turtle2.setpos(startline,-20)
turtle2.pendown()
turtles.append(turtle2)
turtle3 = turtle.Turtle()
turtle3.color("green")
turtle3.shape("turtle")
turtle3.penup()
turtle3.setpos(startline,-20)
turtle3.pendown()
turtles.append(turtle3)
turtle4 = turtle.Turtle()
turtle4.color("green")
turtle4.shape("turtle")
turtle4.penup()
turtle4.setpos(startline,-20)
turtle4.pendown()
turtles.append(turtle4)
def race():
global turtles
winner = False
while not winner:
for singleTurtle in turtles:
singleTurtle.forward(random.randint(0,4))
print(singleTurtle.fillcolor(),singleTurtle._position)
finishline = 200
stampsize = 20
squaresize = 15
for i in range(10):
for turtle in turtles:
turt.setpos(finishline,((150 - squaresize) - (j * squaresize * 2)))
for turt in turtles:
turt.hideturtle()
setup()
race()
turtle.mainloop()