我该如何碰撞?因此,乌龟/蛇不会开箱即用。试图使它们停留在(-200,-200)和(200,200)内。
from turtle import *
from random import *
def bounding_box():
up()
right(90)
forward(200)
down()
left(90)
forward(200)
left(90)
forward(400)
left(90)
forward(400)
left(90)
forward(400)
left(90)
forward(200)
up()
goto(0,0)
down()
def drawSnakeRec(segments, length):
if segments <= 0 or length <= 0:
return 0
else:
color(random(), random(), random())
forward(length)
pensize(randint(1,10))
left(randint(-30, 30))
return length + drawSnakeRec(segments - 1, randint(1,20))
def drawSnakeIter(segments, length):
TL = 0
while segments > 0:
color(random(), random(), random())
pensize(randint(1,10))
forward(length)
left(randint(-30, 30))
TL += length
segments -=1
return TL
def main():
segments = int(input("Enter the segments between 0 and 500: "))
bounding_box()
hideturtle()
speed('fast')
if segments < 0 or segments > 500:
print("Segments is out of range. Segment must be between 0 and 500 inclusive")
input("Press enter to close")
else:
x = drawSnakeRec(segments, randint(1, 20))
print("Recursive Snake's Length is:",x,"Units")
input("Press Enter to go on Iterative Snake")
up()
goto(0,0)
reset()
bounding_box()
y = drawSnakeIter(segments, randint(1,20))
print("Iterative Snake's Length is:",y," Units")
input("Press Enter to exit...")
bye()
main()
有什么帮助吗?谢谢。因此,我正在尝试完成此操作。是的,这是我要完成的实验室作业。如果你们可以帮助我或提供我可以做的事情,那将是很棒的。PS:我对乌龟不好。我以前从未学习过乌龟,但是我还是学过一点点Python。
在递归版本和迭代版本中,您都将转向随机方向并向前移动随机长度。如果要避免使用边界框,则这些数字需要知道边界框在其中。
根据您想要的行为种类,您可以做的事情很少。可能最简单的方法是检查新坐标是否在框外,如果是,则适当地改变航向。
如果希望它逐渐避开方框,则可以在转向或移动决策中考虑到最近边缘的距离。
无论哪种情况,turtle.pos()都会有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句