python 贪吃蛇

python 贪吃蛇
用户548851268
2023年12月19日
|
浏览 128
开发编程

Python贪吃蛇是一个经典的编程项目,你可以使用Python编写一个简单的贪吃蛇游戏。以下是一个示例代码,实现了基本的贪吃蛇功能:

复制代码
import pygame
import random

# 游戏窗口的宽度和高度
width = 640
height = 480

# 贪吃蛇身体方块的大小
block_size = 20

# 初始化pygame
pygame.init()

# 创建游戏窗口
window = pygame.display.set_mode((width, height))
pygame.display.set_caption("贪吃蛇")

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

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

    # 贪吃蛇的初始位置
    x = width // 2
    y = height // 2

    # 贪吃蛇的移动速度
    x_change = 0
    y_change = 0

    # 食物的初始位置
    food_x = round(random.randrange(0, width - block_size) / block_size) * block_size
    food_y = round(random.randrange(0, height - block_size) / block_size) * block_size

    while not game_over:

        while game_close:
            # 游戏结束时显示得分信息
            window.fill(black)
            font_style = pygame.font.SysFont(None, 50)
            message = font_style.render("Game Over! Press Q-Quit or C-Play Again", True, white)
            window.blit(message, [width // 6, height // 3])
            pygame.display.update()

            # 处理游戏结束时的事件
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    game_over = True
                    game_close = False
                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:
                    x_change = -block_size
                    y_change = 0
                elif event.key == pygame.K_RIGHT:
                    x_change = block_size
                    y_change = 0
                elif event.key == pygame.K_UP:
                    y_change = -block_size
                    x_change = 0
                elif event.key == pygame.K_DOWN:
                    y_change = block_size
                    x_change = 0

        # 更新贪吃蛇的位置
        x += x_change
        y += y_change

        # 判断贪吃蛇是否吃到了食物
        if x == food_x and y == food_y:
            food_x = round(random.randrange(0, width - block_size) / block_size) * block_size
            food_y = round(random.randrange(0, height - block_size) / block_size) * block_size

        # 绘制游戏窗口
        window.fill(black)
        pygame.draw.rect(window, red, [food_x, food_y, block_size, block_size])
        pygame.draw.rect(window, white, [x, y, block_size, block_size])
        pygame.display.update()

        # 判断贪吃蛇是否撞到了边界或自己的身体
        if x >= width or x < 0 or y >= height or y < 0:
            game_close = True
        pygame.time.Clock().tick(10)

    pygame.quit()

# 启动游戏循环
game_loop()

这段代码使用pygame库创建了一个简单的贪吃蛇游戏窗口,贪吃蛇的移动通过键盘控制,当贪吃蛇吃到食物时会增加长度。游戏结束条件为贪吃蛇撞到边界或自己的身体。你可以在此基础上进行修改和扩展,实现更多功能。

我要提问
复制内容
分享给好友
AI编程问答网 免责声明:
以上内容除特别注明外均来源于网友提问,AI编程问答网回答,权益归原著者所有;