我试图让海龟在到达边界时停止移动,直到它改变方向。
from turtle import *
import turtle
import time
user_speed = 46
border_pen = Turtle()
shouldMove = True
#alreadyStoppedDown = False
#alreadyStoppedUp = False
prev_heading = heading()
#Set up border
def setup(turt):
turt.ht()
turt.pu()
turt.speed(0)
turt.goto(-250,250)
turt.pd()
turt.begin_fill()
for x in range(4):
turt.fd(500)
turt.rt(90)
turt.color('black')
turt.end_fill()
#Set up user
def user():
pu()
shape('square')
shapesize(2)
color('orange')
speed(0)
goto(-230,230)
speed(1)
#Keybind functions
def down():
global prev_heading
prev_heading = heading()
speed(0)
setheading(-90)
speed(1)
def up():
global prev_heading
prev_heading = heading()
speed(0)
setheading(90)
speed(1)
def left():
global prev_heading
prev_heading = heading()
speed(0)
setheading(180)
speed(1)
def right():
global prev_heading
prev_heading = heading()
speed(0)
setheading(0)
speed(1)
#Border restriction
def restrict():
global shouldMove
if ycor() <= -230:
shouldMove = False
global prev_heading
prev_heading = heading()
def main():
global shouldMove
while True:
#Debugging
print(shouldMove)
print(heading(),prev_heading,ycor())
if shouldMove:
fd(user_speed)
restrict()
else:
if heading() != prev_heading:
shouldMove = True
else:
continue
setup(border_pen)
user()
onkey(up,'w')
onkey(down,'s')
onkey(left,'a')
onkey(right,'d')
listen()
main()
我只设置了边界底部的限制。
我可以让海龟停止移动,但当它停止移动时,它不会改变它的方向。我试着按改变它的方向
wasd
,但它一直呆在那里,直到窗户撞坏。我试图想出多种解决方案,但我做不到。这里的主要问题是当海龟的ycor()小于
或等于
-230,它停了下来,但没有改变它的方向。
当我更改main()时,当它的ycor()小于
或等于
-230,它将向右移动一次,由于ycor()仍然是-230,它将停止移动。
def main():
while True:
#Debugging
print(shouldMove)
print(heading(),prev_heading,ycor())
if shouldMove:
fd(user_speed)
restrict()
else:
if heading() != prev_heading:
shouldMove = True
else:
setheading(0)
我这样做是为了好玩,我观看了使用处理编写蛇游戏的编码训练,并试图使用turtle模块在Python中重新创建它。是的,我是初学者。我想尝试使用turtle模块重新制作snake游戏,尽管我可以使用其他模块,如PyGame,因为我不熟悉PyGame。这个问题有什么解决方案吗?还是我不能使用海龟模块来完成这项工作?