python - 蟒蛇龟赛跑
问题描述
我得到了一个任务,我必须使用海龟模块进行“海龟赛跑”。我需要实现获胜者和获胜者的输出以及重新启动功能。
我的代码:
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 - (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()
setup()
race()
turtle.mainloop()
推荐阅读
- python - Django默认隔离级别和db二进制日志格式错误
- prometheus - 带有 FIRING 警报的 AlertManager 行为
- ruby - 'NilClass' 单例实例在哪里实例化?
- delphi - 触摸屏上 TDrawGrid 中的 OnMouseMove
- python - Python - 从 JSON 中搜索和导出信息
- reactjs - 如何设置 GitHub Pages 来托管我的 React 应用程序?其他免费选项?
- python - 使用 numpy.savetxt 保存数据
- maven - 有没有办法限制 maven 或 jenkins 构建中少数 jar 的主要版本更新
- python - 如何在 Python 的 Tkinter 中的窗口上设置背景图片?
- amazon-web-services - 无法使用弹性 IP 连接(SSH)到实例