# snake-game **Repository Path**: lisniuse/snake-game ## Basic Information - **Project Name**: snake-game - **Description**: Player vs AI snake game built with Vite + TypeScript - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-25 - **Last Updated**: 2026-04-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Snake Game - Player vs AI > 一个基于 Vite + TypeScript + Canvas 的贪吃蛇对战游戏,玩家操控绿色蛇与 AI 红色蛇在 20x20 网格上争夺食物。 ## 功能特性 - **双蛇对战** — 玩家 vs AI,争夺同一份食物 - **AI 寻路** — AI 自动计算最短路径追逐食物并避开障碍 - **精美渲染** — 发光食物、蛇眼跟随方向、平滑圆角网格 - **即时反馈** — 计分板实时更新,胜负状态清晰提示 ## 快速开始 ```bash # 克隆仓库 git clone git@gitee.com:lisniuse/snake-game.git cd snake-game # 安装依赖 npm install # 启动开发服务器 npm run dev # 浏览器打开 http://localhost:3000 # 构建生产版本 npm run build # 预览构建产物 npm run preview ``` ## 操作方式 | 按键 | 功能 | |------|------| | 方向键 | 控制玩家蛇移动 | | Space | 重新开始 | | 任意方向键 | 开始游戏 | ## AI 策略 AI 敌人采用以下决策逻辑: 1. 枚举四个方向,排除反向(不能掉头) 2. 排除会导致撞墙、撞自身、撞玩家的方向 3. 按曼哈顿距离对可行方向排序,优先选择离食物最近的 4. 如果食物在相邻格,直接吃掉 5. 没有安全方向时保持原方向 ## 项目结构 ``` snake-game/ +-- index.html # 入口 HTML +-- package.json # 项目配置 +-- tsconfig.json # TypeScript 配置 +-- vite.config.ts # Vite 构建配置 +-- src/ | +-- main.ts # 入口文件 | +-- style.css # 样式 | +-- types.ts # 类型定义与常量 | +-- game.ts # 游戏主控制器 | +-- game/ | | +-- snake.ts # 蛇的创建与移动逻辑 | | +-- food.ts # 食物生成 | +-- ai/ | | +-- ai.ts # AI 寻路决策 | +-- renderer/ | +-- renderer.ts # Canvas 渲染器 +-- docs/ # 文档 +-- .github/ # GitHub/Gitee 社区模板 ``` ## 技术栈 - **语言**: TypeScript - **构建**: Vite - **渲染**: Canvas API - **样式**: 纯 CSS ## 贡献指南 欢迎提交 Issue 和 Pull Request!请阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 了解详情。 ## 许可证 本项目基于 MIT 许可证开源,详见 [LICENSE](LICENSE) 文件。