我在游戏结束代码中的碰撞在 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 函数代码:
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()
我正在尝试在 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 函数代码:
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()