以下是一个基本的 Python 贪吃蛇游戏的代码:

import pygame
import random

# 初始化游戏
pygame.init()

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

# 设置游戏窗口大小
window_width = 800
window_height = 600
window_size = (window_width, window_height)
game_window = pygame.display.set_mode(window_size)
pygame.display.set_caption('贪吃蛇')

# 设置游戏时钟
clock = pygame.time.Clock()

# 定义贪吃蛇的初始位置和速度
snake_pos = [[100, 50], [90, 50], [80, 50]]
snake_speed = 10

# 定义食物的初始位置
food_pos = [random.randrange(1, (window_width//10)) * 10, random.randrange(1, (window_height//10)) * 10]
food_spawn = True

# 定义游戏结束的标志
game_over = False

# 定义游戏结束的函数
def game_over_screen():
    font = pygame.font.SysFont(None, 50)
    text = font.render('Game Over! Press Q-Quit or C-Play Again', True, WHITE)
    game_window.blit(text, [window_width//2 - text.get_width()//2, window_height//2 - text.get_height()//2])
    pygame.display.update()
    pygame.time.wait(500)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_q:
                    pygame.quit()
                    quit()
                if event.key == pygame.K_c:
                    game_loop()

# 定义游戏主循环
def game_loop():
    global game_over, food_spawn

    # 定义贪吃蛇的初始方向
snake_direction = 'RIGHT'
    change_to = snake_direction

    # 游戏循环
    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_RIGHT or event.key == pygame.K_d:
                    change_to = 'RIGHT'
                if event.key == pygame.K_LEFT or event.key == pygame.K_a:
                    change_to = 'LEFT'
                if event.key == pygame.K_UP or event.key == pygame.K_w:
                    change_to = 'UP'
                if event.key == pygame.K_DOWN or event.key == pygame.K_s:
                    change_to = 'DOWN'

        # 根据方向改变贪吃蛇的位置
        if change_to == 'RIGHT' and snake_direction != 'LEFT':
            snake_direction = 'RIGHT'
        if change_to == 'LEFT' and snake_direction != 'RIGHT':
            snake_direction = 'LEFT'
        if change_to == 'UP' and snake_direction != 'DOWN':
            snake_direction = 'UP'
        if change_to == 'DOWN' and snake_direction != 'UP':
            snake_direction = 'DOWN'

        if snake_direction == 'RIGHT':
            snake_pos[0][0] += snake_speed
        if snake_direction == 'LEFT':
            snake_pos[0][0] -= snake_speed
        if snake_direction == 'UP':
            snake_pos[0][1] -= snake_speed
        if snake_direction == 'DOWN':
            snake_pos[0][1] += snake_speed

        # 绘制游戏背景
        game_window.fill(BLACK)

        # 绘制食物
        pygame.draw.rect(game_window, GREEN, (food_pos[0], food_pos[1], 10, 10))

        # 绘制贪吃蛇
        for pos in snake_pos:
            pygame.draw.rect(game_window, WHITE, (pos[0], pos[1], 10, 10))

        # 检查贪吃蛇是否吃到食物
        if snake_pos[0] == food_pos:
            food_spawn = False
            snake_pos.append([0, 0])

        # 更新贪吃蛇的位置
        if not food_spawn:
            food_pos = [random.randrange(1, (window_width//10)) * 10, random.randrange(1, (window_height//10)) * 10]
        else:
            snake_pos.pop()

        # 检查贪吃蛇是否碰到边界或自己
        if snake_pos[0][0] >= window_width or snake_pos[0][0] < 0 or snake_pos[0][1] >= window_height or snake_pos[0][1] < 0:
            game_over = True
        for block in snake_pos[1:]:
            if snake_pos[0] == block:
                game_over = True

        # 更新游戏画面
        pygame.display.update()

        # 控制游戏速度
        clock.tick(30)

    # 游戏结束时显示结束界面
    game_over_screen()

# 运行游戏
game_loop()

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

这是一个基本的贪吃蛇游戏,使用了 pygame 库来实现游戏界面和交互。你可以尝试运行这段代码来玩贪吃蛇游戏。


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

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