如何解决每次显示获胜者文本后游戏都会崩溃,而不是重新启动
此 Pong 游戏的主要目标是在显示获胜者文本后重新开始游戏(如果任一玩家的得分达到 10 或更高)。问题是每次显示获胜者文本后游戏都会崩溃(如果任一玩家达到 10 分或更高),并且在我声明它应该重新调用 main() 函数时失败,正如您从下面的代码中看到的.因此,当它显示获胜者文本时,它应该暂停游戏 5 秒,然后退出 while 循环并调用 main()。
不确定是什么问题,因为我从一开始就初始化了所有 pygame 模块,如您所见。下图显示了 draw_text 变量的问题,但如您所见,我在程序顶部初始化了 WINNER_FONT 常量。我还确保我的缩进是正确的。任何帮助将不胜感激!
[pygame.error: 库未初始化1
请注意,下面我将只包含重要的代码行。
import pygame
pygame.init()
WIDTH,HEIGHT = 750,500
WINDOW = pygame.display.set_mode((WIDTH,HEIGHT))
BACKGROUND = pygame.image.load("exoplanet.jpg")
pygame.display.set_caption("SPACE PONG")
WINNER_FONT = pygame.font.SysFont('comicsans',100)
def draw_winner(text):
draw_text = WINNER_FONT.render(text,1,WHITE)
WINDOW.blit(draw_text,(WIDTH//2 - draw_text.get_width()/2,HEIGHT//2 - draw_text.get_height()/2))
pygame.display.update()
pygame.time.delay(5000)
def main():
run = True
while run:
pygame.time.delay(15)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
pygame.quit()
winner_text = ""
if paddle1.points >= 10:
winner_text = "Blue Wins!"
if paddle2.points >= 10:
winner_text = "Red Wins!"
if winner_text != "":
draw_winner(winner_text)
break
key_pressed = pygame.key.get_pressed()
paddle_movement(key_pressed,paddle1.rect)
paddle_movement(key_pressed,paddle2.rect)
collision_paddle_surface(paddle1.rect.y,paddle2.rect.y)
ball_movement()
collision_ball_surface(ball.rect.y,ball.rect.x)
ball_speed_increase(paddle1.points,paddle2.points)
collision_ball_paddle(paddle1.rect,paddle2.rect)
redraw()
main()
if __name__ == "__main__":
main()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。