From 3a9060714a6aaf8e6235abfeadb3fe62a756376c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=9F?= <2783361447@qq.com> Date: Tue, 17 Jun 2025 23:58:23 +0800 Subject: [PATCH] x --- snake_game.py | 206 ++++++++++++++++++ ...模板-开源软件维护报告文档.docx | Bin 0 -> 462628 bytes 文档模板.pptx | Bin 0 -> 4812139 bytes 新建 文本文档.txt | 0 4 files changed, 206 insertions(+) create mode 100644 snake_game.py create mode 100644 文档模板-开源软件维护报告文档.docx create mode 100644 文档模板.pptx delete mode 100644 新建 文本文档.txt diff --git a/snake_game.py b/snake_game.py new file mode 100644 index 0000000..ddada47 --- /dev/null +++ b/snake_game.py @@ -0,0 +1,206 @@ +import pygame +import random + +# 初始化 Pygame +pygame.init() + +# 游戏窗口设置 +WINDOW_X = 720 +WINDOW_Y = 480 +game_window = pygame.display.set_mode((WINDOW_X, WINDOW_Y)) +pygame.display.set_caption('贪吃蛇游戏') + +# 颜色定义 +BLACK = pygame.Color(0, 0, 0) +WHITE = pygame.Color(255, 255, 255) +RED = pygame.Color(255, 0, 0) +GREEN = pygame.Color(0, 255, 0) + +# 游戏控制 +FPS = pygame.time.Clock() +FONT_SMALL = pygame.font.SysFont('simhei', 20) +FONT_MEDIUM = pygame.font.SysFont('simhei', 30) +FONT_LARGE = pygame.font.SysFont('simhei', 50) + +class SnakeGame: + def __init__(self): + self.reset_game() + + def reset_game(self): + """重置游戏状态""" + self.snake_position = [100, 50] + self.snake_body = [[100, 50], [90, 50], [80, 50], [70, 50]] + self.food_position = [ + random.randrange(1, (WINDOW_X // 10)) * 10, + random.randrange(1, (WINDOW_Y // 10)) * 10 + ] + self.food_spawn = True + self.direction = 'RIGHT' + self.change_to = self.direction + self.score = 0 + self.speed = 10 + self.game_over_flag = False + self.key_press_time = None + + def show_score(self, position=1): + """显示当前分数""" + score_surface = FONT_SMALL.render(f'分数 : {self.score}', True, WHITE) + score_rect = score_surface.get_rect() + if position == 1: + score_rect.midtop = (WINDOW_X / 10, 15) + else: + score_rect.midtop = (WINDOW_X / 2, WINDOW_Y / 1.25) + game_window.blit(score_surface, score_rect) + + def game_over(self): + """显示游戏结束界面""" + game_over_surface = FONT_LARGE.render(f'你的分数 : {self.score}', True, RED) + game_over_rect = game_over_surface.get_rect() + game_over_rect.midtop = (WINDOW_X / 2, WINDOW_Y / 4) + game_window.blit(game_over_surface, game_over_rect) + + restart_surface = FONT_MEDIUM.render('按C键重新开始游戏', True, WHITE) + restart_rect = restart_surface.get_rect() + restart_rect.midtop = (WINDOW_X / 2, WINDOW_Y / 2) + game_window.blit(restart_surface, restart_rect) + + pygame.display.flip() + + def handle_events(self): + """处理用户输入事件""" + for event in pygame.event.get(): + if event.type == pygame.QUIT: + return False + + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_UP: + self.change_to = 'UP' + self.key_press_time = pygame.time.get_ticks() / 1000 + if event.key == pygame.K_DOWN: + self.change_to = 'DOWN' + self.key_press_time = pygame.time.get_ticks() / 1000 + if event.key == pygame.K_LEFT: + self.change_to = 'LEFT' + self.key_press_time = pygame.time.get_ticks() / 1000 + if event.key == pygame.K_RIGHT: + self.change_to = 'RIGHT' + self.key_press_time = pygame.time.get_ticks() / 1000 + if event.key == pygame.K_c and self.game_over_flag: + self.reset_game() + + if event.type == pygame.KEYUP: + self.key_press_time = None + + return True + + def update_speed(self): + """根据按键时间调整蛇的速度""" + if self.key_press_time: + elapsed_time = pygame.time.get_ticks() / 1000 - self.key_press_time + if elapsed_time < 0.5: + self.speed = 15 + elif elapsed_time < 1: + self.speed = 20 + else: + self.speed = 25 + else: + self.speed = 10 + + def validate_direction(self): + """确保蛇不能直接反向移动""" + if self.change_to == 'UP' and self.direction != 'DOWN': + self.direction = self.change_to + if self.change_to == 'DOWN' and self.direction != 'UP': + self.direction = self.change_to + if self.change_to == 'LEFT' and self.direction != 'RIGHT': + self.direction = self.change_to + if self.change_to == 'RIGHT' and self.direction != 'LEFT': + self.direction = self.change_to + + def move_snake(self): + """移动蛇并处理碰撞检测""" + # 根据方向移动蛇头 + if self.direction == 'UP': + self.snake_position[1] -= 10 + if self.direction == 'DOWN': + self.snake_position[1] += 10 + if self.direction == 'LEFT': + self.snake_position[0] -= 10 + if self.direction == 'RIGHT': + self.snake_position[0] += 10 + + # 蛇吃食物 + self.snake_body.insert(0, list(self.snake_position)) + if self.snake_position == self.food_position: + self.score += 10 + self.food_spawn = False + else: + self.snake_body.pop() + + # 生成新食物 + if not self.food_spawn: + self.food_position = [ + random.randrange(1, (WINDOW_X // 10)) * 10, + random.randrange(1, (WINDOW_Y // 10)) * 10 + ] + # 确保新食物不会出现在蛇身上 + while self.food_position in self.snake_body: + self.food_position = [ + random.randrange(1, (WINDOW_X // 10)) * 10, + random.randrange(1, (WINDOW_Y // 10)) * 10 + ] + self.food_spawn = True + + # 边界碰撞检测 + if (self.snake_position[0] < 0 or self.snake_position[0] > WINDOW_X - 10 or + self.snake_position[1] < 0 or self.snake_position[1] > WINDOW_Y - 10): + self.game_over_flag = True + + # 自身碰撞检测 + for block in self.snake_body[1:]: + if self.snake_position == block: + self.game_over_flag = True + + def draw(self): + """绘制游戏元素""" + game_window.fill(BLACK) + + # 绘制蛇身和食物 + for pos in self.snake_body: + pygame.draw.rect(game_window, GREEN, pygame.Rect(pos[0], pos[1], 10, 10)) + pygame.draw.rect(game_window, WHITE, pygame.Rect(self.food_position[0], self.food_position[1], 10, 10)) + + # 显示分数 + self.show_score(1) + + pygame.display.update() + + def run(self): + """游戏主循环""" + running = True + while running: + if self.game_over_flag: + self.game_over() + # 游戏结束后等待用户按键,不自动重置 + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + if event.type == pygame.KEYDOWN and event.key == pygame.K_c: + self.reset_game() + else: + running = self.handle_events() + if not running: + break + + self.update_speed() + self.validate_direction() + self.move_snake() + self.draw() + + FPS.tick(self.speed) + + pygame.quit() + +if __name__ == "__main__": + game = SnakeGame() + game.run() \ No newline at end of file diff --git a/文档模板-开源软件维护报告文档.docx b/文档模板-开源软件维护报告文档.docx new file mode 100644 index 0000000000000000000000000000000000000000..7c416c8fb7f7cea01c60ae98705884f69fb29302 GIT binary patch literal 462628 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