我正在尝试制作一个脚本,让玩家每 100 分获得 5 条生命。它确实有效,但是有点太好了。当我运行代码时,当我达到 100 分时,它不会停止给予生命,只有当我获得更多分数时才会停止。
这是我正在使用的代码:
def increase_lives():
global lives
global score
global extralives
if score % 100 == 0 and score != 0 or keyboard.lctrl and keyboard.ralt:
extralives = 1
if extralives == 1:
lives += 5
extralives -= 1
我正在将 Thonny 与 PyGame 一起使用和PGZero。任何帮助是极大的赞赏。
你的代码之所以不停地给予生命值,是因为每次
score
是100的倍数时,
extralives
都会被设置为1。
你应该在一个独立的变量中追踪玩家是否已经获得了额外的生命值。试试下面的代码:
def increase_lives():
global lives
global score
global extralives
global gave_extra_life
if score % 100 == 0 and score != 0 and not gave_extra_life:
extralives = 1
gave_extra_life = True # 标记已经给予了额外的生命值
if extralives == 1:
lives += 5
extralives -= 1
# 当分数不再是100的倍数时,重置 gave_extra_life
if score % 100 != 0:
gave_extra_life = False
这段代码做了以下改进:
-
引入了一个新的布尔变量
gave_extra_life
: 用于记录在当前的 100 分区间内是否已经给予了额外的生命值。 -
在给予额外生命值后设置
gave_extra_life = True
: 这可以防止在同一个 100 分区间内再次给予额外生命值。 -
当分数不再是 100 的倍数时,重置
gave_extra_life = False
: 这样在下一次达到 100 分的倍数时,又能再次获得额外的生命值。
这个修改可以确保玩家每达到 100 分的新倍数时只获得一次额外的生命值。
标签:python,pygame,thonny,pgzero From: 78805405