【问题标题】:Why does my game ignore my true false statement?为什么我的游戏会忽略我的真实虚假陈述?
【发布时间】:2019-09-27 18:49:01
【问题描述】:

我在 pygame 上做了一个游戏。我希望玩家的速度在健康达到某个点后发生变化。我尝试了 if/else 语句和 true/false 语句的组合 - 速度仍然不会改变。以下是相关代码:

class Player(pg.sprite.Sprite):
    def __init__(self, game, x, y):
        self.health = PLAYER_HEALTH
        self.speed = True
        if PLAYER_HEALTH <= 20:
            self.speed == False
        if PLAYER_HEALTH >= 20:
            self.speed == True

    def get_keys(self):
        PLAYER_RUN = 55
        PLAYER_RUNS = 300
        self.rot_speed = 0
        self.vel = vec(0, 0)
        keys = pg.key.get_pressed()
        if keys[pg.K_UP] or keys[pg.K_w]:
            if self.speed == True:
                self.vel = vec(PLAYER_RUNS, 0).rotate(-self.rot)
            else:
                self.vel = vec(PLAYER_RUN, 0).rotate(-self.rot)
        if keys[pg.K_DOWN] or keys[pg.K_s]:
            if self.speed == True:
                self.vel = vec(-PLAYER_RUNS / 2, 0).rotate(-self.rot)
            else:
                self.vel = vec(-PLAYER_RUN / 2, 0).rotate(-self.rot)

这是我用来定义精灵的文件中的代码。我认为导入这个文件及其更改就足以改变速度,但它不起作用。我什至在处理玩家伤害的主循环中添加了代码:

if self.player.health <= 20:
    print(CONSTANT[hit_count])
    self.player.speed == False
    self.player.health += CONSTANT.popleft()
    hit_count += 1
    hit.vel = vec(0, 0)
elif self.player.health >= 20
    print(CONSTANT[hit_count])
    self.player.speed == True
    self.player.health += CONSTANT.popleft()

你有什么可以解释为什么玩家的生命值达到某个点后玩家速度不会切换的原因吗?

【问题讨论】:

  • 按下一个键然后被击中速度是不是没有变化?如果你被击中然后按键它会改变吗?
  • 请发送minimal reproducible example。这是太多未定义变量的代码。
  • self.speed == False比较 self.speed 为 False;它没有分配那个值。
  • 另外,如果 player_health 正好是 20,那么这两个 if 语句都是真的。

标签: python python-3.x if-statement pygame


【解决方案1】:

我的猜测:我相信你没有在游戏循环中更新player.speed

据我了解,player.speed 被用作标志。如果是True,则玩家移动速度很快。否则,它移动缓慢。从您显示的代码中,这仅在构造函数中设置一次。

这是假设 player.speed 未在您省略的代码的其他部分中设置。

【讨论】:

    猜你喜欢
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    相关资源
    最近更新 更多