簡體   English   中英

為什么我的游戲會忽略我的真實虛假陳述?

[英]Why does my game ignore my true false statement?

我在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()

您是否看到任何可以解釋為什么在玩家健康達到某個點后玩家速度不會切換的東西?

我的猜測:我相信你沒有在游戲循環中更新player.speed

據我了解, player.speed被用作標志。 如果為True ,則玩家移動速度很快。 否則,它移動緩慢。 從您顯示的代碼中,這僅在構造函數中設置一次。

這是假設player.speed未在您省略的代碼的其他部分中設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM