如何用turtle模块实现向上移动?太空侵略者游戏开发求助
解决Turtle太空侵略者角色向上移动的问题
嘿,你已经把左右移动的逻辑搞定了,很棒!现在要实现向上移动,咱们来看看你的move_up函数里的问题,然后一步步修复:
问题分析
你的move_up函数目前只修改了y坐标的变量,但没有把更新后的值赋值给玩家角色,而且方向搞反了——因为玩家初始朝向是90度(向上),所以向上移动应该是增加y坐标,不是减少。另外,为了游戏体验,最好也给向上移动加个边界限制,避免玩家飞出屏幕顶部。
修正后的向上移动函数
先把move_up函数改成这样:
def move_up(): y = player.ycor() y += playerSpeed # 向上移动是增加y坐标,不是减少 # 顶部边界限制,和左右边界保持一致的范围 if y > 280: y = 280 player.sety(y) # 把更新后的y坐标应用到角色上
完整的修改后代码
把整个代码更新后是这样的(注意补上了缺失的turtle导入语句):
import turtle # Create Player Turtle player = turtle.Turtle() player.color("green") player.shape("triangle") player.penup() player.speed(0) player.setposition(0, -250) player.setheading(90) playerSpeed = 30 # Move the player Left and Right def move_left(): x = player.xcor() x -= playerSpeed if x < -280: x = -280 player.setx(x) def move_right(): x = player.xcor() x += playerSpeed if x > 280: x = 280 player.setx(x) # 修正后的向上移动函数 def move_up(): y = player.ycor() y += playerSpeed if y > 280: y = 280 player.sety(y) # Create keyboard bindings turtle.listen() turtle.onkey(move_left, "Left") turtle.onkey(move_right, "Right") turtle.onkey(move_up, "Up") turtle.mainloop()
额外小提示
如果之后想实现向下移动,完全可以用同样的逻辑写一个move_down函数,绑定到"Down"键,记得加上底部边界限制(比如不能低于-280),保持游戏的合理性。
内容的提问来源于stack exchange,提问作者M B
相关产品推荐
相关产品推荐

