以下是一个简单的 Python 贪吃蛇游戏的代码实现:

import pygame
import random

# 初始化pygame
pygame.init()

# 设置游戏窗口大小
WINDOW_WIDTH = 500
WINDOW_HEIGHT = 500
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))

# 设置游戏标题
pygame.display.set_caption('贪吃蛇游戏')

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

# 定义贪吃蛇的属性
SNAKE_SIZE = 10
snake_speed = 15

# 定义食物的属性
FOOD_SIZE = 10

# 创建一个Clock对象,用于控制游戏帧率
clock = pygame.time.Clock()

# 定义一个函数,用于绘制贪吃蛇
def draw_snake(snake_list):
    for snake in snake_list:
        pygame.draw.rect(window, GREEN, [snake[0], snake[1], SNAKE_SIZE, SNAKE_SIZE])

# 定义一个函数,用于生成食物
def generate_food():
    food_x = round(random.randrange(0, WINDOW_WIDTH - FOOD_SIZE) / 10.0) * 10.0
    food_y = round(random.randrange(0, WINDOW_HEIGHT - FOOD_SIZE) / 10.0) * 10.0
    return food_x, food_y

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

    # 初始化贪吃蛇的位置和长度
    snake_x = WINDOW_WIDTH / 2
    snake_y = WINDOW_HEIGHT / 2
    snake_list = []
    snake_length = 1

    # 初始化贪吃蛇的移动方向
    direction = 'RIGHT'
    change_to = direction

    # 生成初始的食物
    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:
                    change_to = 'LEFT'
                elif event.key == pygame.K_RIGHT:
                    change_to = 'RIGHT'
                elif event.key == pygame.K_UP:
                    change_to = 'UP'
                elif event.key == pygame.K_DOWN:
                    change_to = 'DOWN'

        # 判断贪吃蛇的移动方向是否与当前方向相反,如果是则不允许改变方向
        if change_to == 'LEFT' and direction != 'RIGHT':
            direction = 'LEFT'
        elif change_to == 'RIGHT' and direction != 'LEFT':
            direction = 'RIGHT'
        elif change_to == 'UP' and direction != 'DOWN':
            direction = 'UP'
        elif change_to == 'DOWN' and direction != 'UP':
            direction = 'DOWN'

        # 根据贪吃蛇的移动方向更新贪吃蛇的位置
        if direction == 'LEFT':
            snake_x -= SNAKE_SIZE
        elif direction == 'RIGHT':
            snake_x += SNAKE_SIZE
        elif direction == 'UP':
            snake_y -= SNAKE_SIZE
        elif direction == 'DOWN':
            snake_y += SNAKE_SIZE

        # 判断贪吃蛇是否吃到食物,如果吃到则更新贪吃蛇的长度和分数,并生成新的食物
        if snake_x == food_x and snake_y == food_y:
            snake_length += 1
            food_x, food_y = generate_food()

        # 创建贪吃蛇的头部
        snake_head = []
        snake_head.append(snake_x)
        snake_head.append(snake_y)
        snake_list.append(snake_head)

        # 如果贪吃蛇的长度大于最大长度,则删除贪吃蛇的尾部
        if len(snake_list) > snake_length:
            del snake_list[0]

        # 判断贪吃蛇是否碰到边界或自身,如果碰到则游戏结束
        for snake in snake_list[:-1]:
            if snake == snake_head:
                game_close = True

        if snake_x < 0 or snake_x >= WINDOW_WIDTH or snake_y < 0 or snake_y >= WINDOW_HEIGHT:
            game_close = True

        # 绘制游戏场景
        window.fill(BLACK)
        pygame.draw.rect(window, RED, [food_x, food_y, FOOD_SIZE, FOOD_SIZE])
        draw_snake(snake_list)
        pygame.display.update()

        # 判断游戏是否结束,如果结束则显示分数并退出游戏循环
        if game_close:
            font_style = pygame.font.SysFont(None, 50)
            message = font_style.render('Game Over! Your score is ' + str(snake_length - 1), True, WHITE)
            window.blit(message, [WINDOW_WIDTH / 6, WINDOW_HEIGHT / 3])
            pygame.display.update()
            pygame.time.delay(2000)
            game_over = True

        # 控制游戏帧率
        clock.tick(snake_speed)

    # 退出pygame
    pygame.quit()
    quit()

# 启动游戏循环
game_loop()

这段代码实现了一个简单的贪吃蛇游戏,玩家通过控制贪吃蛇的移动方向,让贪吃蛇吃到食物,并尽可能地延长贪吃蛇的长度,直到碰到边界或自身游戏结束。在游戏结束时,会显示玩家的分数。

Python 贪吃蛇游戏代码实现 - 完整教程

原文地址: https://www.cveoy.top/t/topic/npOb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录