python隐藏乌龟_Python乌龟在边界内随机游走

我想使用乌龟创建一个程序,该程序在随机方向上移动50个随机距离,在x和y轴上保持-300到300之间(通过相反的方向旋转,并在到达边界时向前移动) .

当if语句为true时,代码可以正常运行,但是偶尔执行else语句(由于超出边界)时,else语句将一次又一次地执行,直到计数达到50.换句话说,它沿着同一行.我不明白为什么,因为当乌龟弹起时,它应该在边界内并再次运行if语句,而不是else语句.我该如何解决这个问题,以便海龟在弹跳后继续随机行走?谢谢

我的代码如下所示

import turtle

import random

count = 0

while count <51:

count += 1

if (turtle.xcor() >-300 and turtle.xcor() <300) and\

(turtle.ycor() >-300 and turtle.ycor() <300):

turtle.forward(random.randint(30,100))

turtle.right(random.randint(0,360))

else:

turtle.right(180)

turtle.forward(300)

解决方法:

在if语句中,您应该先转向,然后继续前进:

假设您在(0,299),并且乌龟朝上,您将前进(假设100),然后转弯(假设左侧).然后,您将位于(0,399),向左.

然后,您将进入else循环,向右/ 300前进,因此将位于300/399,因此仍然超出界限(请注意,forward(300)可能也太多了).

如果您先转弯,然后继续前进,您实际上会掉头.

但是再一次,300可能太多了.我宁愿使用以下方式保存以前的距离:

if (-300 < turtle.xcor() <300) and (-300 < turtle.ycor() <300):

turtle.right(random.randint(0,360))

distance = random.randint(30,100)

turtle.forward(distance)

else:

turtle.right(180)

turtle.forward(distance)

假设您在(299,299)处,朝135°(向上/向左倾斜)前进100.那么您将拥有y> 300,如果您进行U形转弯并向前/ 300,您将拥有x> 300.然后再次循环.

标签:turtle-graphics,python

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值