这里提供一份简单的Python代码实现贪吃蛇游戏。

import pygame
import random

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

# 初始化pygame
pygame.init()

# 设置游戏窗口大小和标题
display_width = 800
display_height = 600
gameDisplay = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption('贪吃蛇')

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

# 定义蛇的大小和速度
block_size = 10
snake_speed = 15

# 定义字体
font = pygame.font.SysFont(None, 25)


# 定义函数,显示得分
def score(score):
    text = font.render("得分:" + str(score), True, black)
    gameDisplay.blit(text, [0, 0])


# 定义函数,绘制蛇
def snake(block_size, snakeList):
    for x_y in snakeList:
        pygame.draw.rect(gameDisplay, green, [x_y[0], x_y[1], block_size, block_size])


# 定义游戏主函数
def gameLoop():
    gameExit = False
    gameOver = False

    # 定义蛇的初始位置和长度
    lead_x = display_width / 2
    lead_y = display_height / 2
    lead_x_change = 0
    lead_y_change = 0
    snakeList = []
    snakeLength = 1

    # 定义食物的初始位置
    randAppleX = round(random.randrange(0, display_width - block_size) / 10.0) * 10.0
    randAppleY = round(random.randrange(0, display_height - block_size) / 10.0) * 10.0

    # 游戏循环
    while not gameExit:

        # 游戏结束,等待重新开始或退出
        while gameOver:
            gameDisplay.fill(white)
            message = font.render("游戏结束! 按C重新开始,按Q退出游戏", True, black)
            gameDisplay.blit(message, [display_width / 6, display_height / 3])
            score(snakeLength - 1)
            pygame.display.update()

            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        gameExit = True
                        gameOver = False
                    if event.key == pygame.K_c:
                        gameLoop()

        # 处理事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                gameExit = True
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    lead_x_change = -block_size
                    lead_y_change = 0
                elif event.key == pygame.K_RIGHT:
                    lead_x_change = block_size
                    lead_y_change = 0
                elif event.key == pygame.K_UP:
                    lead_y_change = -block_size
                    lead_x_change = 0
                elif event.key == pygame.K_DOWN:
                    lead_y_change = block_size
                    lead_x_change = 0

        # 蛇越界,游戏结束
        if lead_x >= display_width or lead_x < 0 or lead_y >= display_height or lead_y < 0:
            gameOver = True

        # 更新蛇的位置
        lead_x += lead_x_change
        lead_y += lead_y_change

        # 绘制游戏背景
        gameDisplay.fill(white)

        # 绘制食物
        pygame.draw.rect(gameDisplay, red, [randAppleX, randAppleY, block_size, block_size])

        # 绘制蛇
        snakeHead = []
        snakeHead.append(lead_x)
        snakeHead.append(lead_y)
        snakeList.append(snakeHead)
        if len(snakeList) > snakeLength:
            del snakeList[0]

        for x_y in snakeList[:-1]:
            if x_y == snakeHead:
                gameOver = True

        snake(block_size, snakeList)
        score(snakeLength - 1)

        pygame.display.update()

        # 蛇吃到食物
        if lead_x == randAppleX and lead_y == randAppleY:
            randAppleX = round(random.randrange(0, display_width - block_size) / 10.0) * 10.0
            randAppleY = round(random.randrange(0, display_height - block_size) / 10.0) * 10.0
            snakeLength += 1

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

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


# 启动游戏
gameLoop()

运行代码,即可开始游戏。玩家通过键盘控制蛇的移动,蛇吃到食物后长度增加,蛇碰到边界或自己的身体则游戏结束。游戏结束后,可以按C重新开始游戏,按Q退出游戏。

贪吃蛇游戏代码

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

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