我必须使用Zelle图形包为我的中间python类制作一个空间入侵者游戏。我一直对投射物有一些问题,它将运行代码,射出子弹,并继续移动子弹,但当子弹移动时,我无法移动角色。我认为这是一个相当简单的问题,但我还没有足够的编程经验。谢谢
from graphics import *
from time import *
game_over = False
win = GraphWin("skulls and bones", 500, 500)
skull = Image(Point(250, 450), "skull_2.gif")
skull.draw(win)
bullet = Circle(Point(250, 250), 10)
bullet.setFill("red")
def bone():
value = 0
key = win.getKey()
if key == "x":
bullet.draw(win)
return bullet
def space_ship_move():
key = win.getKey()
if key == "a":
skull.move(-10, 0)
if key == "d":
skull.move(10, 0)
if key == "x":
bone()
for i in range(100):
sleep(1)
bone().move(0, -5)
return key
while not game_over:
space_ship_move()'''
有两个问题:首先,
win.getKey()
阻塞,直到用户按键。您不想这样做-使用win.checkKey()
。其次,您需要解耦动画和输入处理,因为如果没有输入,您希望项目符号也会移动。可以使用以下结构执行此操作:handle_input()
主要是您在那里已经拥有的:我认为
bone()
应该负责创建一个新的子弹。这就是当前函数所做的。它还将bulletAnimStep
设置为0
,表示我们正处于子弹动画的开始。我们的animate()
可以使用该信息来决定何时停止子弹动画。这就是它的外观:相关问题 更多 >
编程相关推荐