网站首页 网站地图
网站首页 > 热门游戏 > 贪吃蛇游戏怎么做

贪吃蛇游戏怎么做

时间:2026-03-17 18:29:06

贪吃蛇(Snake Game)是一个经典的休闲游戏,玩家通过控制蛇的移动来吃掉食物,从而增长蛇的长度。下面我将为你提供一个简单易懂的贪吃蛇游戏实现方法,你可以用 Python + Pygame 来实现。

✅ 一、游戏基本原理

1. 游戏基本元素

  • :由多个小方块组成,可以左右移动。
  • 食物:在游戏区域随机出现,吃掉后蛇长度增加。
  • 游戏区域:通常是一个网格(如 20x20 的网格)。
  • 得分:每次吃食物,得分增加。
  • 游戏结束:蛇碰到自己或边界,游戏结束。

✅ 二、使用 Python + Pygame 实现贪吃蛇游戏

1. 安装 Pygame

pip install pygame

2. 代码示例(基础版)

import pygame
import random

# 初始化 Pygame
pygame.init()

# 设置屏幕大小
WIDTH, HEIGHT = 600, 400
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("贪吃蛇游戏")

# 颜色定义
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)

# 蛇的大小和速度
BLOCK_SIZE = 20
SPEED = 15

# 蛇的初始位置
snake = [(WIDTH // 2, HEIGHT // 2)]
snake_direction = (0, 0)  # 初始方向是不动的

# 食物位置
food = (random.randint(0, WIDTH // BLOCK_SIZE - 1) * BLOCK_SIZE,
        random.randint(0, HEIGHT // BLOCK_SIZE - 1) * BLOCK_SIZE)

# 得分
score = 0
font = pygame.font.SysFont(None, 36)

# 游戏循环
clock = pygame.time.Clock()
running = True

while running:
    screen.fill(BLACK)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
            break
        # 按键控制方向
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP and snake_direction != (0, 1):
                snake_direction = (0, -1)
            elif event.key == pygame.K_DOWN and snake_direction != (0, -1):
                snake_direction = (0, 1)
            elif event.key == pygame.K_LEFT and snake_direction != (1, 0):
                snake_direction = (-1, 0)
            elif event.key == pygame.K_RIGHT and snake_direction != (-1, 0):
                snake_direction = (1, 0)

    # 移动蛇
    new_head = (snake[0][0] + snake_direction[0] * BLOCK_SIZE,
               snake[0][1] + snake_direction[1] * BLOCK_SIZE)

    # 检查是否撞墙
    if (new_head[0] < 0 or new_head[0] >= WIDTH or
        new_head[1] < 0 or new_head[1] >= HEIGHT):
        running = False
        break

    # 检查是否撞到自己
    if new_head in snake[1:]:
        running = False
        break

    # 添加新头
    snake.insert(0, new_head)

    # 检查是否吃到食物
    if new_head == food:
        food = (random.randint(0, WIDTH // BLOCK_SIZE - 1) * BLOCK_SIZE,
                random.randint(0, HEIGHT // BLOCK_SIZE - 1) * BLOCK_SIZE)
        score += 1
    else:
        snake.pop()

    # 绘制蛇和食物
    for segment in snake:
        pygame.draw.rect(screen, GREEN, (segment[0], segment[1], BLOCK_SIZE, BLOCK_SIZE))
    pygame.draw.rect(screen, RED, (food[0], food[1], BLOCK_SIZE, BLOCK_SIZE))

    # 显示得分
    text = font.render(f"Score: {score}", True, WHITE)
    screen.blit(text, (10, 10))

    pygame.display.flip()
    clock.tick(SPEED)

pygame.quit()

✅ 三、运行效果

  • 玩家通过方向键控制蛇的移动。
  • 蛇吃掉食物后会变长。
  • 如果撞到墙壁或自己,游戏结束。

✅ 四、扩展建议(可选)

  • 添加音效
  • 增加关卡系统
  • 加入计时器
  • 添加蛇的生长速度变化
  • 使用图形界面(如 Tkinter)或 Web 技术(如 HTML5 + Canvas)