gpt4 book ai didi

python - 如何在pygame中防止垃圾邮件子弹

转载 作者:行者123 更新时间:2023-12-03 23:46:53 25 4
gpt4 key购买 nike

在我的游戏中,有一个发子弹的问题,因为玩家可以在短时间内射出很多子弹。我怎样才能阻止玩家这样做?我应该使用时钟吗?我该如何使用时钟?这是一些代码:

class Player (Obj):
def command (self, shoot):
keys = pg.key.get_pressed()
self.shoot = shoot
if keys[shoot]:
self.Shoot()
def Shoot(self):
global prts
prts.append (Ammo(player.x, player.y, prt_img ))
print (prts)

while True:
window.fill(WHITE)
player.blit()
player.command(pg.K_SPACE)
for ammo in prts:
ammo.blit()
ammo.Move(0.5)
ammo.BordCheck()
pg.display.update()

Here it is an image of what happens

抱歉有任何错误

最佳答案

默认情况下,Pygame 会以您的计算机可以处理的最快速度触发按键事件(这意味着计算机越好,您拍摄的速度越快)。这是仅在一台计算机上测试过的旧视频游戏中的常见问题。

添加“时钟”是解决问题的好方法。例如,如果您希望玩家每半秒射击一次的速度不超过一颗子弹,您可以获取他射击的当前时间,然后在下一次射击时检查时间,如果不到 1/2 秒,您就不要t射击,否则你射击并用新子弹的时间更新时间。

为了进行更多优化,您甚至可能希望在玩家无法射击时完全阻止键盘输入触发“按下射击键”事件,但这是一个小型优化,在小型游戏中不应该是必需的。

要在 python 中操作时间,您可以使用 time 和 datetime 默认模块。我经常建议使用 arrow如果您有很多时间和日期可以操作,因为我认为它更简单一些。

这是一个使用 datetime 比较秒数的示例:

#!/usr/bin/env python3

from datetime import datetime

t1 = datetime.strptime("Feb 12 08:02:34 2015", "%b %d %H:%M:%S %Y")
t2 = datetime.strptime("Feb 12 08:02:32 2015", "%b %d %H:%M:%S %Y")

difference = t1 - t2

print(difference.seconds) # 2, in this case

这能解决你的问题吗?

关于python - 如何在pygame中防止垃圾邮件子弹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62151989/

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