【发布时间】:2018-04-05 15:59:10
【问题描述】:
我试图让乌龟在碰到边界时停止移动,直到它改变它的方向。
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 时将其设置为 0,它将向右移动一次,因为 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)
我这样做是为了好玩,我观看了 The Coding Train 使用处理编写了一个蛇游戏,我正在尝试使用海龟模块在 Python 中重新创建它。是的,我是初学者。我想尝试使用 turtle 模块重新制作蛇游戏,即使我可以使用 PyGame 等其他模块,因为我不熟悉 PyGame。这个问题有什么解决办法吗?还是我不能使用 turtle 模块做到这一点?
【问题讨论】:
标签: python python-3.x turtle-graphics