PyGame开发贪吃蛇小游戏

话不多说,直接上代码

python 复制代码
'''
Author: Zhao 2869210303@qq.com
Date: 2025-03-15 20:08:40
LastEditors: Zhao 2869210303@qq.com
LastEditTime: 2025-03-16 13:16:00
FilePath: \2024_2025_1\snake_game.py
Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
'''
import pygame
import random
import sys

# 初始化pygame
pygame.init()

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

# 定义游戏窗口大小
WIDTH, HEIGHT = 600, 400

# 创建游戏窗口
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('贪吃蛇')

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

# 定义蛇的初始位置和速度-
snake_pos = [100, 50]
snake_body = [[100, 50], [90, 50], [80, 50]]
snake_direction = 'RIGHT'
snake_speed = 15

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

# 游戏主循环
while True:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP and snake_direction != 'DOWN':
                snake_direction = 'UP'
            elif event.key == pygame.K_DOWN and snake_direction != 'UP':
                snake_direction = 'DOWN'
            elif event.key == pygame.K_LEFT and snake_direction != 'RIGHT':
                snake_direction = 'LEFT'
            elif event.key == pygame.K_RIGHT and snake_direction != 'LEFT':
                snake_direction = 'RIGHT'

    # 移动蛇
    if snake_direction == 'UP':
        snake_pos[1] -= 10
    elif snake_direction == 'DOWN':
        snake_pos[1] += 10
    elif snake_direction == 'LEFT':
        snake_pos[0] -= 10
    elif snake_direction == 'RIGHT':
        snake_pos[0] += 10

    # 蛇身更新
    snake_body.insert(0, list(snake_pos))
    if snake_pos == food_pos:
        food_spawn = False
    else:
        snake_body.pop()

    # 生成新食物
    if not food_spawn:
        food_pos = [random.randrange(1, WIDTH//10) * 10, random.randrange(1, HEIGHT//10) * 10]
        food_spawn = True
        snake_speed += 1  # 蛇的速度随着长度增加

    # 绘制游戏界面
    screen.fill(BLACK)
    for pos in snake_body:
        pygame.draw.rect(screen, GREEN, pygame.Rect(pos[0], pos[1], 10, 10))
    pygame.draw.rect(screen, RED, pygame.Rect(food_pos[0], food_pos[1], 10, 10))

    # 碰撞检测
    if snake_pos[0] < 0 or snake_pos[0] > WIDTH-10:
        break
    if snake_pos[1] < 0 or snake_pos[1] > HEIGHT-10:
        break
    for block in snake_body[1:]:
        if snake_pos == block:
            break

    # 更新显示
    pygame.display.flip()
    clock.tick(snake_speed)
    

再展示一下运行的效果截图:

相关推荐
wu_jing_sheng017 分钟前
Python中使用HTTP 206状态码实现大文件下载的完整指南
开发语言·前端·python
程序员大雄学编程26 分钟前
「用Python来学微积分」2. 函数图像的变换
python·数学·微积分
Q26433650231 小时前
【有源码】基于Python与Spark的火锅店数据可视化分析系统-基于机器学习的火锅店综合竞争力评估与可视化分析-基于用户画像聚类的火锅店市场细分与可视化研究
大数据·hadoop·python·机器学习·数据分析·spark·毕业设计
unicrom_深圳市由你创科技1 小时前
工业上位机,用Python+Qt还是C#+WPF?
python·qt·c#
njsgcs1 小时前
json转excel python pd
python·json·excel·pd
一晌小贪欢2 小时前
Python爬虫第7课:多线程与异步爬虫技术
开发语言·爬虫·python·网络爬虫·python爬虫·python3
yanxing.D4 小时前
OpenCV轻松入门_面向python(第六章 阈值处理)
人工智能·python·opencv·计算机视觉
JJJJ_iii5 小时前
【机器学习01】监督学习、无监督学习、线性回归、代价函数
人工智能·笔记·python·学习·机器学习·jupyter·线性回归
Python图像识别8 小时前
71_基于深度学习的布料瑕疵检测识别系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
python·深度学习·yolo
千码君20169 小时前
React Native:从react的解构看编程众多语言中的解构
java·javascript·python·react native·react.js·解包·解构