项目源码可见:https://github.com/xiaozhou-alt/Gluttonous_Snake
这是一个基于Python和Pygame库开发的经典贪吃蛇游戏。游戏具有以下特点:
对于 游戏贴图 和一些基本的 模块图片 下载,小周这里给大家推荐两个很不错的网站
ヾ(@^ ▽ ^@)ノ:
资源丰富:涵盖像素图、精灵动画、3D 模型(如太空主题模型)、纹理库(如金属、木材等 3.5 万+纹理)以及循环音乐(如菜单背景音乐)。
风格多样:既有复古像素风格,也有写实 3D 模型,适合 RPG、平台跳跃、解谜等多种游戏类型。
资源主要遵循 CC0(公共领域) 或 CC-BY(需署名) 协议,允许免费商用和二次修改。部分素材明确禁止用于 NFT 或需标注来源,下载时需留意具体协议。
网站提供 多语言支持(需借助翻译工具),支持按类型、协议筛选资源,但界面设计较老旧,下载速度可能较慢。
海量图标:数百万个图标覆盖 UI、品牌、社交等类别,支持 SVG、PNG、字体文件等多种格式。
在线编辑:可调整颜色、大小、形状,并生成定制化素材(如透明背景图标)。
免费商用:大部分图标可免费用于商业项目,但需注意部分资源可能需遵循特定协议(如 CC-BY 需署名)。
版权透明:图标来源包括阿里巴巴官方设计及用户上传,下载前需确认具体授权条款。
Snack/
├── pic/ # 游戏图片资源
│ ├── apple.png # 食物图片
│ ├── snake*.png # 蛇头图片
│ ├── tail-*.png # 蛇尾图片
│ ├── body-*.png # 蛇身图片
│ ├── turn-*&*.png # 蛇身转弯图片
├── snack.py # 主游戏代码文件
└── README.md # 项目说明文档
import pygame, sys, random
from pygame.math import Vector2 as V2
color_green = pygame.Color(187, 255, 121)
color_red = pygame.Color(255, 0, 0)
color_deep_green = pygame.Color(173, 234, 113)
color_black = pygame.Color(0, 0, 0)
导入了必要的库并定义了游戏中使用的主要颜色:
class GameSet():
# 设置主窗口
screen = None
cell_size = 20
cell_number = 40
food = pygame.image.load(r'pic/apple.png')
snake = None
score = 0
GameSet 类管理游戏全局设置:
def start_game(self):
pygame.init()
GameSet.screen = pygame.display.set_mode([GameSet.cell_size * GameSet.cell_number, GameSet.cell_size * GameSet.cell_number])
clock = pygame.time.Clock()
main_game = Main()
Screen_update = pygame.USEREVENT
pygame.time.set_timer(Screen_update, 100)
class Snake():
def __init__(self):
self.head_up = pygame.image.load(r'pic/snakeU.png')
# ...其他方向图片加载...
self.body = [V2(5, 10), V2(4, 10), V2(3, 10)]
self.direction = V2(0, 1)
self.live = True
class Food():
def __init__(self):
self.randomize()
def randomize(self):
self.x = random.randint(0, GameSet.cell_number - 1)
self.y = random.randint(0, GameSet.cell_number - 1)
self.pos = V2(self.x, self.y)
class Main():
def __init__(self):
self.snake = Snake()
self.food = Food()
def update(self):
self.snake.move_snake()
self.check_collision()
self.check_fail()
Snack:
加载所有方向的蛇头和蛇尾图片
初始化蛇身位置和方向
live 属性控制蛇的存活状态
使用 Vector2 简化位置计算
Food:
初始化时随机生成位置
randomize 方法在蛇吃到食物后重新生成
使用 Vector2 存储位置坐标
Main:
初始化蛇和食物
update 方法处理每帧更新
check_collision 检测蛇是否吃到食物
check_fail 检测游戏结束条件
基于pygame的贪吃蛇游戏
如果你喜欢我的文章,不妨给小周一个免费的点赞和关注吧!