【发布时间】:2021-11-15 14:51:19
【问题描述】:
我正在尝试制作一个简单的游戏,现在我正在尝试防止乌龟离开屏幕。我在课堂上添加了一个函数来阻止它,但它不起作用。我不知道为什么。另外,当我尝试打印turtle.xcor() 时,我得到它的内存位置而不是xcords,我该如何解决这个问题。非常感谢!代码:
class Player(Turtle):
def __init__(self, speed=1):
Turtle.__init__(self, shape='turtle')
self.speed = speed
self.color(color)
self.hideturtle()
self.turtlesize(2)
self.setheading(90)
self.penup()
self.backward(180)
self.showturtle()
self.move()
self.wall_checker()
def move(self):
self.forward(self.speed)
screen.ontimer(self.move)
def turn_left(self):
self.left(10)
def turn_right(self):
self.right(10)
def accelerate(self):
self.speed += 1
def deaccelerate(self):
self.speed -= 1
if self.speed < 1:
self.speed = 1
def wall_checker(self):
if self.xcor() > 800:
self.goto(790, self.ycor())
elif self.xcor() < -800:
self.goto(-790, self.ycor())
elif self.ycor() > 800:
self.goto(self.xcor(), 790)
elif self.ycor() < -800:
self.goto(self.xcor(), -790)
【问题讨论】:
-
turtle非常适合绘制图形,但对于游戏来说则是更好的模块 - 例如pygamepgzero(pygame zero)、Arcade、 -
aalways 将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。
-
我看不出哪个函数应该停止它。而且我看不到你在哪里打印
turtle.xcor()- 也许你忘记了(),它显示了函数的位置 -
对于我在
move中你应该检查forward之后的位置,如果它在屏幕外然后运行backward并停止或改变方向left/right -
对我来说,你应该在
move之后运行wall_checkerforward