【发布时间】:2021-12-09 16:17:29
【问题描述】:
所以今天早上我又在编程,我想写我的小游戏中的玩家可以发射子弹。效果很好,但有一个问题:我为“子弹生成器”player.x 和 player.y 的 x 和 y 坐标编写了代码,我认为子弹会从玩家的位置射出。但他们没有。他们从玩家在游戏开始时所在的位置射击,而刷怪笼没有移动。所以我尝试用一个while循环和bool isMoving来做到这一点,只有当玩家移动时才为真:
...
isMoving = False
...
bullets = []
position = (player.x, player.y)
while isMoving:
position = (player.x, player.y)
...
if keys[pygame.K_d] or keys[pygame.K_a] or keys[pygame.K_w] or keys[pygame.K_s] or keys[pygame.K_UP] or keys[pygame.K_DOWN] or keys[pygame.K_LEFT] or keys[pygame.K_RIGHT]:
isMoving = True
else:
isMoving = False
但如果我现在运行 pygame,窗口就会冻结。如果我再次删除 while 循环,它会起作用,但它会再次从玩家的第一个位置射击。 哦,我收到错误“而 isMoving: UnboundLocalError:分配前引用的局部变量“isMoving” " 有什么办法可以解决这个问题吗?
【问题讨论】:
-
是的,我之前定义了项目符号和所有内容
-
我猜这段代码在应用程序循环中。为什么在应用程序循环中需要一个循环?
-
@Rabbid76 我该怎么做?
-
在玩家位置射击时需要创建一个新的子弹对象。见How can i shoot a bullet with space bar? 和How do I stop more than 1 bullet firing at once?。
-
@Rabbid76 好的,谢谢
标签: python python-3.x while-loop pygame