Python 如何防止pygame中的按钮垃圾邮件
基本上,目前,在我的游戏中,用户可以随心所欲地多次射击。。。这违背了游戏的目标(这让游戏变得太容易了),因为他们只能滥发子弹。我有一个“商店”类型的功能,使用户可以购买升级,因此垃圾邮件破坏了商店的目的Python 如何防止pygame中的按钮垃圾邮件,python,time,timer,pygame,spam,Python,Time,Timer,Pygame,Spam,基本上,目前,在我的游戏中,用户可以随心所欲地多次射击。。。这违背了游戏的目标(这让游戏变得太容易了),因为他们只能滥发子弹。我有一个“商店”类型的功能,使用户可以购买升级,因此垃圾邮件破坏了商店的目的 elif event.key == K_SPACE: newBullet = {'rect': pygame.Rect(bulletX, bulletY, 10, 3), 'surface': bullet} pis
elif event.key == K_SPACE:
newBullet = {'rect': pygame.Rect(bulletX, bulletY, 10, 3), 'surface': bullet}
pistolSound.play()
bullets.append(newBullet)
这是代码,我可以添加什么,以防止按钮捣乱垃圾邮件。我对pygame时间函数不太熟悉,但我有一种可以使用的感觉
此外,我希望我的僵尸能够始终如一地产卵,而不是在非常随机的时刻
timer = clock.tick()
if waveNumber <= 2:
timer += 1
if timer == 2:
newZombie = {'rect':pygame.Rect(zombieX, zombieY, 75, 75), 'surface': zombie}
zombieSound.play()
zombies.append(newZombie)
timer = 0
timer=clock.tick()
如果波数将项目符号的数量限制在某个较小的数量:
elif event.key == K_SPACE:
if len(bullets) < 3:
newBullet = {'rect': pygame.Rect(bulletX, bulletY, 10, 3), 'surface': bullet}
pistolSound.play()
bullets.append(newBullet)
elif event.key==K_空格:
如果长度(项目符号)<3:
newBullet={'rect':pygame.rect(bulletX,bulletY,10,3),'surface':bullet}
手枪声
项目符号。附加(纽巴莱)
你应该将你的模拟和事件处理分成几个简短的“回合”,允许玩家每回合只射出一颗子弹(甚至更少)
最接近您的代码示例是,在处理适当类型的事件时,设置“按下放炮按钮此回合”标志,然后在处理所有事件后,最多放炮一次:
#each event
if event.key == K_SPACE:
playerShooting=True
僵尸也有类似的问题:无法预测clock.tick()的值。相反,每回合最多繁殖一次僵尸(可能按照计划,例如每五回合)。时钟应用于决定主循环是否应继续进行游戏状态更新,而不是等待进一步的输入,并决定何时渲染帧
参考,A和A PyGrand主循环。
请考虑为无关的查询打开单独的问题,谢谢,不要经常使用。如果你想每0.3秒发射一支枪,不管它们按多少(甚至按住按钮),你都可以使用一个冷却时间。谢谢你的编辑,JonShape。不知怎的,我想到的是java,而不是python。这就是同时使用多种语言编程时发生的情况:-(很好,我明白了你的意思,幸运的是我了解很多Java。这不是我想要的,但是,它确实实现了我想要的,并且我可以根据购买的升级操作值。谢谢。另一种可能是在生成项目符号时节省当前时间,然后拒绝生成更多的项目符号之后有一段时间。我该如何把僵尸的繁殖列入日程?
#each turn
if playerShooting:
newBullet = {'rect': pygame.Rect(bulletX, bulletY, 10, 3), 'surface': bullet}
pistolSound.play()
bullets.append(newBullet)
playerShooting=False#clear to prepare for next turn