# SmallGames **Repository Path**: wsgtzn/SmallGames ## Basic Information - **Project Name**: SmallGames - **Description**: 借助AI智能体开发的小游戏集合,与您一起回顾儿时的乐趣。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: v1.0 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-11-07 - **Last Updated**: 2026-11-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 经典游戏合集 - Classic Games Collection 一个包含**72个**经典游戏合集,使用Python以及 pygame-ce 开发。多款游戏使用原版/经典风格素材(图片+音效),其余由代码绘制,无外部运行时依赖。自带免安装 Python 运行时(`runtime/`),把整个文件夹拷贝到任意 Windows 10/11(64位)机器,双击 `start.bat` 即可玩,**目标机器无需安装 Python**。 ## 游戏分类 ### 棋牌类(12款) | 游戏 | 目录 | 说明 | | ---------- | ---------- | ---------------------------------------------------- | | 五子棋 | gomoku | 15x15棋盘,人机/双人,三档AI(限时搜索),含禁手规则 | | 中国象棋 | xiangqi | 完整规则,楚河汉界,人机/双人,AI带思考时限 | | 国际象棋 | chess | 完整规则+王车易位+升变+吃过路兵,迭代加深搜索 | | 围棋 | weiqi | 9/13/19路棋盘,提子+劫争+数目法计分,模式匹配AI | | 军棋 | junqi | 陆战棋,暗棋系统+铁路快速移动+概率推理AI | | 跳棋 | checkers | 西洋跳棋,强制吃子+王棋升变,Minimax AI | | 黑白棋 | othello | 经典Othello,夹住翻转,Minimax AI | | 井字棋 | tictactoe | Minimax AI 不可战胜(100局对拍验证) | | 四子棋 | connect4 | 7列6行,4子连线,Alpha-Beta AI | | 西洋双陆棋 | backgammon | 掷骰移动15子,先全部移出者胜 | | 夹吃棋 | hasami | 9x9棋盘,横竖移动,夹住对方棋子吃掉 | | 斗兽棋 | jungle | 经典国粹:鼠可胜象、狮虎跳河、陷阱兽穴,人机/双人 | ### 益智类(12款) | 游戏 | 目录 | 说明 | | ---------- | ------------ | ------------------------------------------ | | 开心消消乐 | match3 | 交换三消,连击闯关,30步目标 | | 连连看 | lianliankan | 经典/人机竞速(两档AI)/双人对战 | | 推箱子 | sokoban | 多关卡经典益智,方向键移动,U撤销R重置 | | 华容道 | klotski | 多关卡经典滑块(全部验证可解),记录持久化 | | 数独 | sudoku | 三种难度,约束校验判胜(任意合法完成均可) | | 扫雷 | minesweeper | 经典Windows扫雷,三难度,首点保护 | | 2048 | game2048 | 经典数字合并,最高分持久化 | | 翻牌记忆 | memory | 记忆配对消除 | | 猜密码 | mastermind | 黑钉白钉反馈,颜色密码推理 | | 数字华容道 | puzzle15 | 打乱保证有解,完成判定 | | 独立钻石 | pegsolitaire | 十字棋盘33孔,跳跃消除 | | 数织 | nonogram | 行列线索涂格解谜,三难度,唯一解验证生成 | ### 动作/街机类(12款) | 游戏 | 目录 | 素材 | 说明 | | ---------- | ------------- | ------------------------- | ----------------------------------- | | 俄罗斯方块 | tetris | 程序生成斜面方块 | 7种方块,消行计分 | | 贪吃蛇 | snake | - | 吃食物成长,速度递增 | | 祖玛 | zuma | - | 彩色球链消除,多关卡 | | 坦克大战 | tank | Battle City 原版素材+音效 | FC坦克,1-2人合作 | | 超级玛丽 | mario | SMB 原版素材+音效 | 横版跳跃过关 | | 愤怒的小鸟 | angrybirds | - | 弹弓物理射击,9关解锁 | | 乒乓球 | pong | - | 人机(可选难度)/双人对战 | | 打砖块 | breakout | Arkanoid 素材包 | 多关卡砖块递进 | | 吃豆人 | pacman | Pacman Tiles (CC0) | 迷宫吃豆,4幽灵追踪AI | | 飞翔小鸟 | flappy | Flappy Bird 原版素材 | 穿越管道 | | 太空入侵者 | spaceinvaders | Space Shooter Redux (CC0) | 射击外星人 | | 青蛙过河 | frogger | - | 街机经典:躲车流、踩浮木,送5蛙回巢 | ### 知识/文字类(12款) | 游戏 | 目录 | 说明 | | ---------- | ----------- | ---------------------------------- | | 成语接龙 | idiom | 1100+成语库,接龙+猜成语模式 | | 猜数字 | guessnum | 1A2B推理(对拍验证反馈算法) | | 知识问答 | trivia | 103题题库,20题一轮,限时答题 | | 猜谜语 | riddle | 53条中文谜语(答案已逐条核验) | | 歇后语 | proverb | 69条歇后语(已去重校验) | | 猜单词 | hangman | 字母猜词,最多错6次 | | 找单词 | wordsearch | 12x12字母阵(每局验证单词可找到) | | 打字练习 | typing | 下落单词,WPM按实际用时计算 | | 诗词填空 | poemfill | 唐诗宋词填空(诗句已核验) | | 24点 | game24 | 四张牌凑24,精确分数求值,保证有解 | | 找不同 | spotdiff | 左右图案阵限时找茬,逐轮加量 | | 脑筋急转弯 | brainteaser | 45条急转弯题库,连击加分 | ### 策略类(12款) | 游戏 | 目录 | 说明 | | -------- | ---------- | ---------------------------------------- | | 海战棋 | battleship | 舰队对战,hunt/target AI,人机/双人热座 | | 点格棋 | dotsboxes | 画线占格,完成方格再画 | | 围猫 | catchcat | 11x11方格,BFS逃生AI | | 尼姆博弈 | nim | XOR策略AI(必胜策略) | | N皇后 | nqueens | 8皇后放置,冲突提示 | | 骑士巡游 | knight | 马走日遍历棋盘 | | Sim笔点 | sim | 6点连线,先组三角形者输 | | 繁殖棋 | ataxx | 7x7棋盘,复制/跳跃,感染翻转 | | 播棋 | mancala | 古老播种游戏,再走一手/收对坑,人机/双人 | | 六贯棋 | hexx | Hex 连接棋,最短路AI,永无平局 | | 成三棋 | morris | 九子棋:布子/走子/飞行三阶段,成三提子 | | 毒巧克力 | chomp | 组合博弈,记忆化完美AI(4种棋盘) | ### 冒险类(12款,全部重新设计) | 游戏 | 目录 | 说明 | | -------- | -------- | ------------------------------------------------------------ | | 迷宫逃脱 | maze | 随机迷宫+BFS验证连通,视野限制,钥匙/小地图 | | 地牢探险 | dungeon | Roguelike:房间+怪物+宝箱+回合战斗+Boss | | 寻宝探险 | treasure | 5层随机地牢,火炬视野,宝箱陷阱骷髅追击,王冠目标 | | 魔塔挑战 | tower | 11层魔塔(每层BFS验证可通关),钥匙/门/回合制战斗,楼层缩放宝石(数值模拟验证可屠龙) | | 密室逃脱 | escape | 4房间连环解谜:搜索→密码锁→拉杆顺序→机关(随机化谜底) | | 洞穴探秘 | cave | 3层挖掘探险,火炬燃料经济,毒气避开必经之路(30/30通关率验证) | | 森林冒险 | forest | 采蘑菇+送小屋,河流桥梁,狼群追击,连通性修复(100/100验证) | | 荒岛求生 | island | 饥饿/口渴/资源采集,野猪袭扰,造筏逃生(资源保底100/100) | | 文字冒险 | textadv | 《古墓疑云》16场景5结局,属性/物品影响分支 | | 忍者潜行 | stealth | 3层潜入,守卫朝向视野+追击AI,宝物+撤离 | | 熔岩逃生 | lava | 岩浆上涨+平台下坠,跳跃求生(无尽计分) | | 深海探险 | diving | 氧气管理,珍珠/古物采集,水母水雷,上浮结算 | ## 素材版权 | 游戏 | 素材来源 | 许可 | | ------------- | ----------------------------------------------- | ------------ | | tank | Battle City (NES) 精灵图 | 仅供学习参考 | | mario | Super Mario Bros 素材 | 仅供学习参考 | | flappy | Flappy Bird 素材 | 仅供学习参考 | | pacman | Pacman Tiles by Blitzblaster (OpenGameArt) | CC0 | | spaceinvaders | Space Shooter Redux by Rawdanitsu (OpenGameArt) | CC0 | | breakout | Basic Arkanoid Pack by Zealex (OpenGameArt) | CC-BY 3.0 | | tetris | 程序生成 | - | 其余游戏图形/音效均由代码实时生成(`common/sound.py` 8-bit 音效合成)。 ## 技术特点 - **72款游戏全部通过自动化闭环测试**:`tests/run_smoke.py` 无头运行每个游戏并模拟完整操作流程 - **棋类AI全部通过自对拍验证**:合法性、终结性、响应时间(gomoku/xiangqi 带思考时限) - **解谜/冒险游戏通过可玩性证明**:迷宫连通性、魔塔数值平衡、关卡可解性均有校验脚本 - **题库数据经过人工核验**:谜语/歇后语/诗词/问答题答案逐条检查修正 - **原版/CC0素材无缝回退**:素材缺失时自动回退到代码绘制(HAS_ASSETS 探测) - **最高分持久化**:各游戏本地文件记录,损坏自动重置 - **免安装可搬迁**:内置全封闭 Python 运行时,整目录拷贝到无 Python 的 Windows 机器双击 `start.bat` 即玩;全量冒烟测试在内置运行时下同样 72/72 通过 ## 目录结构 ``` games/ start.bat # 一键启动(双击打开游戏清单;start.bat snake 直启单款) launcher.py # 统一启动器(侧边分类+可滚动卡片网格+搜索过滤) README.md requirements.txt runtime/ # 免安装运行时(嵌入式 Python 3.12.10 + pygame-ce + numpy) common/ # 公共库(音效合成、配色方案、字体、工具函数) tests/ # 自动化测试(冒烟测试/玩法校验/截图驱动) <72个游戏目录> # 每款游戏 main.py 入口 + board/gui/config ``` ## ## 运行方法 ### 一键启动(推荐,免安装) - **双击 `start.bat`**:打开统一游戏清单 - 命令行方式:`start.bat [游戏目录]` 直接启动指定游戏,如 `start.bat snake` 整个目录拷贝到任意 **Windows 10/11(64位)** 机器即可运行——运行环境已内置在 `runtime/` 文件夹(Python 3.12.10 嵌入式发行版 + pygame-ce + numpy),不依赖目标机器上的 任何 Python,也不受其环境变量/已装包影响(全封闭隔离)。 **搬运建议**:优先用 **ZIP 压缩包**整体搬运(单文件传输 + 解压自带 CRC 校验,杜绝拷漏); 若直接拷贝文件夹,务必确保 `runtime/` 完整(2932 个文件)。`start.bat` 每次启动都会 自检运行时完整性,缺哪个文件会点名提示,不会只甩一个看不懂的 `ModuleNotFoundError`。 ### 本机已装 Python 时(开发者) ```bash cd games python launcher.py ``` 启动器特性:左侧分类导航、卡片式网格、**滚轮/拖拽滚动条/方向键翻页**、输入文字实时过滤、平滑滚动动画。 ### 单独运行 ```bash cd games/具体游戏目录 python main.py ``` ### 自动化测试 ```bash cd games python tests/run_smoke.py # 全量冒烟测试(headless 闭环) python tests/run_smoke.py snake # 只测指定游戏 python tests/check_tower.py # 魔塔地图/数值校验 python tests/check_cave.py # 洞穴可通关性校验 python tests/shot_driver.py # 无头运行并截图到 tests/shots/ ``` `tests/smoke_driver.py` 会无头运行每个游戏并注入脚本化按键(开始/方向/暂停/重开/退出), 验证完整事件闭环不崩溃。其余 `tests/check_*.py` 为各游戏的核心玩法校验脚本 (棋类 AI 自对拍、迷宫连通性、魔塔数值平衡等)。 ## 依赖与内置运行时 游戏仅依赖两个第三方包:`pygame-ce>=2.5.0`、`numpy>=2.0.0`(Python 3.10+)。 ### 内置运行时(`runtime/`,约 115MB) 为"拷走即用"准备的免安装环境,随目录整体搬迁: | 组件 | 版本 | 说明 | |------|------|------| | Python 嵌入式发行版 | 3.12.10(64位) | 官方 embeddable 包,`python312._pth` 全部为相对路径 | | pygame-ce | 2.5.8 | 自带 SDL 全套动态库 | | numpy | 2.5.3 | — | | sitecustomize.py | — | 启动钩子:恢复"脚本目录导入"标准行为 + 屏蔽目标机外来 site-packages | | VERSION.txt | — | 运行时清单(组件版本 + 文件数),用于核对拷贝完整性 | **为什么不用 venv**:venv 的 `pyvenv.cfg` 指向**创建它的那台机器**上的 Python 安装, 目录拷走后必然失效;嵌入式发行版本身是完整独立的解释器,随目录移动到任何机器都能跑。 运行时为全封闭模式:忽略 `PYTHONPATH`/`PYTHONHOME` 等环境变量、不加载用户级 site-packages,避免与目标机器已有 Python 环境串扰(已模拟陌生机器环境变量验证, 72 款游戏在内置运行时下冒烟测试全部通过)。 如需增加依赖包——**注意:目标机器没有 Python 时,直接敲 `pip` 是不存在的**, pip 只在本运行时内部,必须用下面的完整命令调用: ```bat runtime\python.exe -m pip install 包名 ``` 说明: - 必须用 `runtime\python.exe -m pip` 完整形式(已删除 `runtime\Scripts\` 下的 pip.exe——它内部记录的是打包机的绝对路径,拷到其它机器后不可用) - 若这条命令报 `No module named pip`,说明 `runtime\Lib\site-packages` 拷贝不完整, 见下方「故障排查」 开发者本机直接运行(不使用内置运行时): ```bash pip install -r requirements.txt ``` ## 故障排查 | 现象 | 原因 | 解决 | |------|------|------| | `No module named 'pygame'` | `runtime/` 拷贝不完整(site-packages 丢失) | 双击 `start.bat` 看自检点名缺哪些文件;重新完整拷贝整个文件夹,或改用 ZIP 包搬运后解压 | | `'pip' 不是内部或外部命令` | 目标机器没装 Python,裸 `pip` 本就不存在 | 用完整形式 `runtime\python.exe -m pip ...` | | `runtime\python.exe -m pip` 报 `No module named pip` | `runtime\Lib\site-packages` 拷贝不完整 | 同第 1 条 | | 杀毒软件拦截 `.pyd`/`.dll` | 对嵌入式 Python 的误报 | 加入白名单后重试 | | 首次启动偏慢 | SmartScreen/杀软扫描近 3000 个文件 | 正常现象,稍候即可 | 运行时自检:`start.bat` 启动时自动核对 6 个关键文件并点名缺失项; `runtime\VERSION.txt` 记录完整清单(组件版本 + 文件数),可人工比对。 ## License MIT