import pygame import sys import random # 初始化 Pygame pygame.init() # 设置窗口尺寸 window_width = 800 window_height = 600 window = pygame.display.set_mode((window_width, window_height)) pygame.display.set_caption("弹球小游戏") # 设置颜色 WHITE = (255, 255, 255) RED = (255, 0, 0) BLUE = (0, 0, 255) # 设置小球初始位置和速度 ball_radius = 10 ball_x = random.randint(ball_radius, window_width - ball_radius) ball_y = ball_radius ball_speed_x = random.choice([-5, 5]) ball_speed_y = 5 # 设置挡板初始位置和大小 paddle_width = 100 paddle_height = 20 paddle_x = (window_width - paddle_width) // 2 paddle_y = window_height - paddle_height - 10 paddle_speed = 10 # 设置时钟 clock = pygame.time.Clock() # 游戏状态 game_over = False # 重置游戏 def reset_game(): global ball_x, ball_y, ball_speed_x, ball_speed_y, paddle_x, game_over ball_x = random.randint(ball_radius, window_width - ball_radius) ball_y = ball_radius ball_speed_x = random.choice([-5, 5]) ball_speed_y = 5 paddle_x = (window_width - paddle_width) // 2 game_over = False # 主循环 running = True while running: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: # 检测窗口关闭事件 running = False elif event.type == pygame.KEYDOWN: # 检测键盘按下事件 if event.key == pygame.K_RETURN and game_over: # 按下回车键重新开始 reset_game() # 检测键盘持续按下状态 keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: # 按下左箭头键 paddle_x -= paddle_speed if keys[pygame.K_RIGHT]: # 按下右箭头键 paddle_x += paddle_speed # 限制挡板在窗口内移动 paddle_x = max(0, min(paddle_x, window_width - paddle_width)) # 更新小球位置 if not game_over: ball_x += ball_speed_x ball_y += ball_speed_y # 小球碰到左右边界时反弹 if ball_x <= ball_radius or ball_x >= window_width - ball_radius: ball_speed_x = -ball_speed_x # 小球碰到上边界时反弹 if ball_y <= ball_radius: ball_speed_y = -ball_speed_y # 小球碰到挡板时反弹 if (paddle_x <= ball_x <= paddle_x + paddle_width and paddle_y <= ball_y + ball_radius <= paddle_y + paddle_height): ball_speed_y = -ball_speed_y # 小球碰到下边界时游戏结束 if ball_y >= window_height - ball_radius: game_over = True # 清空屏幕 window.fill(WHITE) # 绘制小球 pygame.draw.circle(window, RED, (ball_x, ball_y), ball_radius) # 绘制挡板 pygame.draw.rect(window, BLUE, (paddle_x, paddle_y, paddle_width, paddle_height)) # 显示游戏结束信息 if game_over: font_path = "c:/Windows/Fonts/simhei.ttf" font = pygame.font.Font(font_path, 74) text = font.render("游戏结束", True, (0, 0, 0)) text_rect = text.get_rect(center=(window_width // 2, window_height // 2)) window.blit(text, text_rect) # 更新屏幕 pygame.display.flip() # 控制帧率 clock.tick(60) # 退出 Pygame pygame.quit() sys.exit()