python - 当我在 pygame 中打印某些内容时,一个错误消失了
问题描述
我知道标题不是很清楚,但我不知道我还能说什么。
我有一个球员在进攻,当他进攻完成后,我会启动一个 1 秒的计时器,所以我们必须等待一秒才能再次进攻。它不起作用(我们只能攻击一次)而且我不知道为什么,所以我添加了print(self.between_two_attacks())
并且一切正常,我可以攻击,等待一秒钟然后再次攻击。
这是程序,我不知道是否足够,因为我不知道错误来自哪里。
def between_two_attacks(self):
if self.after_attack_max == 0:
self.after_attack_max = pg.time.get_ticks() + 1000
print("set timer")
else:
after_attack = pg.time.get_ticks()
print("start timer")
if after_attack >= self.after_attack_max:
print("can attack again")
self.can_attack = True
self.after_attack_max = 0
def draw(self, win):
print(self.between_two_attacks())
if (self.attackcount + 1) >= 5:
self.attackcount = 0
self.between_two_attacks()
self.action = STAND_UP
self.arme = LIGHTSABER_OUT
self.stops_attacking = True
self.can_attack = False
if self.action == ATTACKING:
win.blit...
Run = True
While Run:
for event in pg.event.get():
if event.type == pg.KEYDOWN:
if event.key == pg.K_SPACE and player.can_attack == True:
player.action = ATTACKING
如果程序的这一部分有任何不清楚的地方,请告诉我,我会尽力解释。谢谢你的帮助 :)
解决方案
在检索between_two_attacks
状态之前,必须调用该方法。设置在. 如果不调用该方法,则永远不会变成.
当你这样做时,就会调用。self.can_attack
self.can_attack
between_two_attacks
self.can_attack
True
print(self.between_two_attacks())
self.between_two_attacks()
此外,该方法可以简化:
self.can_attack
self.after_attack_max == 0
如果当前时间大于 ,则必须设置self.after_attack_max
。
如果self.can_attack
设置,则计算重新启动计时器。如果未设置,则必须对其进行评估。初始self.after_attack_max
为 0。如果当前时间大于self.after_attack_max
,则必须允许攻击并且必须重新启动计时器:
def between_two_attacks(self):
current_time = pg.time.get_ticks()
if self.can_attack:
self.after_attack_max = current_time + 1000
elif current_time > self.after_attack_max:
self.can_attack = True
self.after_attack_max = current_time + 1000
注意,self.after_attack_max
仅在 中设置between_two_attacks
,请勿在其他任何地方重置。
推荐阅读
- reactjs - 在渲染之前设置组件值
- c++ - std::execution::unseq 启用了哪些优化?
- python - 将 max_norm 应用于 keras 中的单个权重
- regex - DialogFlow CX 为 REGEX ENTITIES 抛出“正则表达式匹配范围太广”错误
- ionic-framework - 生成整洁的离子模板对象的问题
- javascript - 当过滤器更改基础数据时,react-virtualized infiniteLoader 不会触发 loadMoreRows
- javascript - 什么是 ”?。” 在 JS 中访问对象属性时(打字稿?)
- javascript - 无法在 JavaScript 中显示 html 值
- tensorflow - Tensorflow - 多 GPU 不适用于模型(输入),也不适用于计算梯度
- python - Python:在特定位置替换字符串中的字符