gpt4 book ai didi

python - pygame 中的连续对象创建?

转载 作者:行者123 更新时间:2023-11-30 22:37:45 25 4
gpt4 key购买 nike

好的,我对这个主题进行了一些研究。我正在用 Python 的 Pygame 创建一个游戏,这是著名的“Raiden 2”的复制品。我的游戏循环与我见过的非常相似。我想做的是让构造函数在按住空格键的同时创建一个项目符号对象(使用我的 Bullet 类)。但是,以下代码每次按键仅创建一个项目符号。按住按钮不会执行任何操作,只会创建一个子弹。

while game.play is True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
b = Bullet(x, y)
bullet_group.add(b)

bullet_group.draw(screen)

不知道从这里去哪里。欢迎并赞赏任何帮助。

最佳答案

这应该按您的预期工作:

addBullets = False
while game.play is True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
addBullets = True
if event.type == pygame.KEYUP:
if event.key == pygame.K_SPACE:
addBullets = False

if addBullets:
b = Bullet(x, y)
bullet_group.add(b)

bullet_group.draw(screen)

您将项目符号的创建从事件处理中移出,并仅设置一个“标志”,如果释放停止创建项目符号的键,则该“标志”将被收回。

而且......正如 jsbueno 的评论中提到的,这也可以工作:

while game.play is True:
for event in pygame.event.get():
pass # do something with events
if pygame.key.get_pressed()[pygame.K_SPACE]:
b = Bullet(x, y)
bullet_group.add(b)

关于python - pygame 中的连续对象创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43790961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com