我和我的朋友目前正在学校编写一个练习,我们遇到了一些困难,如何让海龟们保持正常的轨道。举例来说,在广场的第一面,有两只乌龟在两边赛跑。然而,当他们旋转90度时,其中1或2人会离开侧面,这与练习要求不符。在
以下是我们的代码:
import turtle
from random import randint
def read_int(prompt,first,last):
x = int(input(prompt))
while x < first or x > last:
print("Not in range. Try Again!!!")
x= int(input(prompt))
return x
square_count = read_int("Enter your laps between 1 and 10: ",1,10)
print(square_count)
#def t():
window = turtle.Screen()
window.bgcolor('lightblue')
def draw_square(turtle, center, size):
xPt, yPt = center
xPt -= size / 2
yPt += size / 2
side = 4
size = 300
angle = 90
turtle.speed(0)
turtle.up()
turtle.goto(xPt, yPt)
turtle.down()
for i in range(side):
turtle.forward(size)
turtle.right(angle)
t = turtle.Turtle()
draw_square(t,(0,0),300)
t.shape('turtle')
t.color("red")
t.pensize(5)
t.up()
t.goto(-150, 150)
#def r():
r = turtle.Turtle()
draw_square(r,(0,0),300)
r.shape('turtle')
r.color("yellow")
r.up()
r.pensize(5)
r.goto(-150, 150)
sides = 4
size = 300
count_int = int(square_count)* sides
if count_int > 1:
for sides in range(count_int):
i = 0
e = 0
while i in range(0, size) or e in range(0, size):
t_step = randint(1, 5)
t.forward(t_step)
i = i + t_step
r_step = randint(1, 5)
r.forward(r_step)
e = e + r_step
t.right(90)
r.right(90)
window.exitonclick()
我将采用一种稍微不同的方法——而不是硬编码两个海龟,而是为任意数量的海龟设计,然后只与两只海龟比赛。这里有一个基于任意数量的海龟的重写,其中包括一些style代码的返工,以及@Claudio的一些代码建议:
你的错误就在你的计划快结束的时候。在
在这样一个场景中,假设i=298,并且t_step选择一个随机整数作为3。乌龟最终会移动超过300的范围,因此它会离开牵引箱。循环不会停止,因为它只意识到当所有代码都已运行时i超出范围。(也就是说,当循环被打破时,乌龟已经离开了盒子。)这就是为什么乌龟会走出盒子。你可以试着用一个“如果”条件来防止这种情况发生。在
你有两种问题。
首先,你应该注意你的海龟走了多少步。因为如果一个正方形的大小是300,那么海龟所走的步数之和可能不等于300。我建议您将随机步骤的生成更改为:
这样一来,一只乌龟只需走0到2步,你就可以确信总数将达到300步。
第二点也许更重要。如果你像你一样构造了竞赛循环,那么只有当另一只乌龟到达了一行的末尾时,一只乌龟才会转向,你应该重新组织代码,使这两个海龟彼此独立。在
相关问题 更多 >
编程相关推荐