簡體   English   中英

我的游戲結束代碼中的沖突在 pygame 中無法正常工作

[英]My collision in my code for game over is not working right in pygame

我正在嘗試在 pygame 中制作游戲,我幾乎完成了。 我只是對我的游戲機制有問題。 在我因接觸敵人而死后,我的敵人消失了,我在我死時將它們發送到 Y=2000,現在它們繼續移動,然后在幾秒鍾后出現。 我的音樂游戲有效,但我的文字游戲無效。

在我的代碼中,我有這個游戲結束的代碼,因為當敵人碰到我時我想輸:

# Game Over
if isCollision(enemyX[i], enemyY[i], playerX, playerY):
    for j in range(num_of_enemies):
        enemyY[j] = 2000
    game_over_text()
    break

這行不通,因為我剛才描述的事情發生了。

我試圖更改代碼並使用它:

# Game Over
if enemyY[i] > 440:
    for j in range(num_of_enemies):
        enemyY[j] = 2000
    game_over_text()
    break

這行得通,我讓游戲結束了文字,游戲結束了聲音,我的敵人不會回來了。 但這不是我想要的工作方式。

有人對我如何解決這個問題有任何想法嗎?

這是我的 iscollision function 代碼:

def isCollision(enemyX, enemyY, bulletX, bulletY):
    # Formel for distanse mellom to koordinater
    distance = math.sqrt((math.pow(enemyX-bulletX, 2)) + (math.pow(enemyY-bulletY, 2)))
    if distance < 30:
        return True
    else:
        return False

它檢測到碰撞,但碰撞代碼使游戲無法運行文本。

我的整個代碼: https://gist.github.com/EkteFrokostNam/a46b8a905ec3d1f190af482887a80341

您只能在單個幀的文本上繪制游戲。 如果要永久顯示文本,需要在應用循環中繪制:

def game_over_text():
    over_text = over_font.render("GAME OVER", True, (255, 255, 255))
    screen.blit(over_text, (200, 250))
   
def game_over_sound(): 
    pygame.mixer.music.set_volume(0)
    death_music = mixer.Sound('Death.mp3')
    death_music.set_volume(0.1)
    death_music.play()
game_over = False

# Game loop
running = True 
while running:
    # [...]

    # Enemy movement

    for i in range(num_of_enemies):

        # Game Over
        if isCollision(enemyX[i], enemyY[i], playerX, playerY):
            for j in range(num_of_enemies):
                enemyY[j] = 2000
            game_over_sound()
            game_over = True
            break

    # [...]

    if game_over:
        game_over_text()

暫無
暫無

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

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