如何解决我的游戏结束代码中的碰撞在 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
这行得通,我的游戏胜过文字,游戏胜过声音,我的敌人不会回来了。但这不是我想要的工作方式。
有人对我如何解决这个问题有任何想法吗?
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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。