王剑编程网

分享专业编程知识与实战技巧

写一个贪吃蛇游戏代码

写一个贪吃蛇游戏代码

好的,这是一个用Python和Pygame库编写的简单贪吃蛇游戏示例。

import pygame
import random

# 初始化Pygame
pygame.init()

# 屏幕尺寸
screen_width = 600
screen_height = 480
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("贪吃蛇")

# 颜色定义
black = (0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)
green = (0, 255, 0)

# 蛇的初始设置
snake_block_size = 20
snake_speed = 15

# 字体
font_style = pygame.font.SysFont(None, 30)

# 时钟
clock = pygame.time.Clock()

# 函数:显示消息
def message(msg, color):
    mesg = font_style.render(msg, True, color)
    screen.blit(mesg, [screen_width / 6, screen_height / 3])

# 函数:画蛇
def our_snake(snake_block_size, snake_list):
    for x in snake_list:
        pygame.draw.rect(screen, green, [x[0], x[1], snake_block_size, snake_block_size])

# 游戏主循环
def game_loop():
    game_over = False
    game_close = False

    # 蛇的初始位置
    x1 = screen_width / 2
    y1 = screen_height / 2

    # 蛇的位置变化
    x1_change = 0
    y1_change = 0

    snake_List = []
    snake_Length = 1

    # 食物的随机位置
    foodx = round(random.randrange(0, screen_width - snake_block_size) / 20.0) * 20.0
    foody = round(random.randrange(0, screen_height - snake_block_size) / 20.0) * 20.0

    while not game_over:

        while game_close == True:
            screen.fill(black)
            message("你输了! 按C-重新开始或Q-退出", red)
            pygame.display.update()

            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        game_over = True
                        game_close = False
                    if event.key == pygame.K_c:
                        game_loop()

        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:
                    x1_change = -snake_block_size
                    y1_change = 0
                elif event.key == pygame.K_RIGHT:
                    x1_change = snake_block_size
                    y1_change = 0
                elif event.key == pygame.K_UP:
                    y1_change = -snake_block_size
                    x1_change = 0
                elif event.key == pygame.K_DOWN:
                    y1_change = snake_block_size
                    x1_change = 0

        # 边界检测
        if x1 >= screen_width or x1 < 0 or y1>= screen_height or y1 < 0: game_close='True' x1 y1 screen.fillblack pygame.draw.rectscreen red foodx foody snake_block_size snake_block_size snake_head='[]' snake_head.appendx1 snake_head.appendy1 snake_list.appendsnake_head if lensnake_list> snake_Length:
            del snake_List[0]

        # 检测蛇是否咬到自己
        for x in snake_List[:-1]:
            if x == snake_Head:
                game_close = True

        our_snake(snake_block_size, snake_List)
        pygame.display.update()

        # 吃食物
        if x1 == foodx and y1 == foody:
            foodx = round(random.randrange(0, screen_width - snake_block_size) / 20.0) * 20.0
            foody = round(random.randrange(0, screen_height - snake_block_size) / 20.0) * 20.0
            snake_Length += 1

        clock.tick(snake_speed)

    pygame.quit()
    quit()

# 启动游戏
game_loop()

代码解释:

  1. 导入库: 导入pygame用于游戏开发,random用于生成随机数 (食物的位置)。
  2. 初始化: 初始化Pygame,设置屏幕尺寸和标题。
  3. 颜色定义: 定义一些常用的颜色。
  4. 蛇的设置: 定义蛇的块大小和速度。
  5. 字体: 创建一个字体对象用于显示消息。
  6. message() 函数: 在屏幕上显示文本消息。
  7. our_snake() 函数: 画出蛇。它接收蛇的块大小和蛇的身体列表作为参数。
  8. game_loop() 函数: 游戏的主循环,包含以下内容:游戏状态变量: game_over 和 game_close 用于控制游戏循环。蛇的初始位置和移动: x1, y1 表示蛇头的坐标,x1_change, y1_change 表示蛇的移动方向。蛇的身体列表: snake_List 存储蛇的身体坐标。食物的随机位置: foodx, foody 使用随机数生成食物的位置。游戏循环:事件处理: 监听键盘事件,控制蛇的移动方向。边界检测: 如果蛇碰到屏幕边界,游戏结束。更新蛇的位置: 根据移动方向更新蛇头的坐标。画蛇和食物: 调用 our_snake() 函数画蛇,使用 pygame.draw.rect() 画食物。吃食物: 如果蛇头碰到食物,更新食物的位置,并增加蛇的长度。自碰撞检测: 检查蛇头是否和自己的身体碰撞,如果碰撞,游戏结束。游戏结束逻辑: 在 game_close 状态下显示 "你输了" 的消息,并等待用户按键重新开始或退出。
  9. 启动游戏: 调用 game_loop() 函数启动游戏。

如何运行代码:

  1. 安装Pygame: 如果尚未安装,请使用以下命令安装:pip install pygame
  2. 保存代码: 将代码保存为 .py 文件 (例如 snake.py)。
  3. 运行代码: 在命令行中运行该文件:python snake.py

游戏控制:

  • 方向键: 控制蛇的移动方向(上、下、左、右)。
  • Q 键: 在游戏结束后退出游戏。
  • C 键: 在游戏结束后重新开始游戏。

改进建议:

  • 添加计分系统: 显示玩家的分数。
  • 增加难度: 随着分数增加,蛇的速度加快。
  • 美化界面: 使用更漂亮的图像和颜色。
  • 添加音效: 在吃食物或游戏结束时播放音效。
  • 更多游戏元素: 添加障碍物或其他元素来增加游戏的趣味性。
  • 更好的游戏结束界面: 提供一个更友好的游戏结束界面,显示玩家的最高分等信息。
  • 优化代码: 提高代码的可读性和可维护性。

希望这个简单的贪吃蛇游戏对你有帮助!

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言