机器人
积分排行榜
Scratch
积分排行榜
Python
在线答题
积分排行榜
活跃排行榜
打字练习
Microbit
C++
在线答题
积分排行榜
活跃排行榜
网盘
积分
未登录
未登录
登录学习
作者:
王梓约
更新时间:
2025-12-07 16:09
浏览:
30次
点赞:
0次
热度:
20
import pygame import random import sys # 初始化Pygame pygame.init() # 简化游戏常量(增大方块尺寸,降低速度,缩小窗口使操作更集中) WIDTH, HEIGHT = 400, 400 BLOCK_SIZE = 25 SPEED = 1 # 颜色简化(仅保留主要颜色) BLACK = (0, 0, 0) WHITE = (255, 255, 255) RED = (255, 0, 0) GREEN = (0, 255, 0) # 创建游戏窗口 screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("简易无敌贪吃蛇") # 时钟 clock = pygame.time.Clock() # 简化字体(使用更小的字体,更简洁) font = pygame.font.SysFont("Arial", 30) def draw_snake(snake_list): """简化绘制蛇的函数""" for x, y in snake_list: pygame.draw.rect(screen, GREEN, (x, y, BLOCK_SIZE, BLOCK_SIZE)) # 增加蛇的轮廓,更易识别(简化视觉复杂度) pygame.draw.rect(screen, WHITE, (x, y, BLOCK_SIZE, BLOCK_SIZE), 1) def show_score(score): """简化得分显示""" score_text = font.render(f"得分: {score}", True, WHITE) screen.blit(score_text, (10, 10)) def game_loop(): """简化游戏主循环""" game_over = False # 初始位置调整为窗口中心(更直观) x = WIDTH // 2 y = HEIGHT // 2 # 初始移动方向(让蛇一开始就向右移动,减少初始操作) x_change = BLOCK_SIZE y_change = 0 snake_list = [] length_of_snake = 1 # 简化食物生成(直接取整,减少计算复杂度) def generate_food(): fx = random.randint(0, (WIDTH - BLOCK_SIZE) // BLOCK_SIZE) * BLOCK_SIZE fy = random.randint(0, (HEIGHT - BLOCK_SIZE) // BLOCK_SIZE) * BLOCK_SIZE return fx, fy food_x, food_y = generate_food() while not game_over: # 简化事件处理(仅保留必要的按键和退出) for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: # 简化方向控制(允许直接反向,但实际操作更简单,降低记忆成本) if event.key == pygame.K_LEFT and x_change == 0: x_change = -BLOCK_SIZE y_change = 0 elif event.key == pygame.K_RIGHT and x_change == 0: x_change = BLOCK_SIZE y_change = 0 elif event.key == pygame.K_UP and y_change == 0: y_change = -BLOCK_SIZE x_change = 0 elif event.key == pygame.K_DOWN and y_change == 0: y_change = BLOCK_SIZE x_change = 0 # 增加ESC键直接退出游戏(简化退出操作) elif event.key == pygame.K_ESCAPE: game_over = True # 边界穿越(简化逻辑,直接取模,更简洁) x = x % WIDTH y = y % HEIGHT x += x_change y += y_change screen.fill(BLACK) # 绘制食物(增加轮廓,更易识别) pygame.draw.rect(screen, RED, (food_x, food_y, BLOCK_SIZE, BLOCK_SIZE)) pygame.draw.rect(screen, WHITE, (food_x, food_y, BLOCK_SIZE, BLOCK_SIZE), 1) # 更新蛇头(简化列表操作) snake_head = [x, y] snake_list.append(snake_head) if len(snake_list) > length_of_snake: del snake_list[0] # 绘制蛇和得分(简化调用) draw_snake(snake_list) show_score(length_of_snake - 1) pygame.display.update() # 简化食物吃到检测(直接判断坐标) if x == food_x and y == food_y: food_x, food_y = generate_food() length_of_snake += 1 clock.tick(SPEED) pygame.quit() sys.exit() if __name__ == "__main__": game_loop()
点赞成功
分享作品
×