[英]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.