# seifly-game **Repository Path**: sablog/seifly-game ## Basic Information - **Project Name**: seifly-game - **Description**: 夕阳为远山镀上金边,牛铃叮当惊起归巢的雀鸟。放牛少年们盘坐在河滩青石上,用树枝在沙地划出纵横交错的网格,捡几枚圆润的石子作棋子——这便是记忆中浸透泥土芬芳的“放牛棋”。为留存这份质朴的智慧,我决心重现这份遗失的童年棋局,让民族的灵性在方寸棋盘间延续 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-25 - **Last Updated**: 2025-12-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 夕阳为远山镀上金边,牛铃叮当惊起归巢的雀鸟。放牛少年们盘坐在河滩青石上,用树枝在沙地划出纵横交错的网格,捡几枚圆润的石子作棋子——这便是记忆中浸透泥土芬芳的“放牛棋”。为留存这份质朴的智慧,我决心重现这份遗失的童年棋局,让民族的灵性在方寸棋盘间延续棋局随牧归而起,至炊烟袅袅而终。赢家可骑牛首归家,败者需拾足明日柴火。胜负之外,更教会少年读云识雨、观蝉知暑的天地法则 “奶奶说,棋盘如田垄,落子如播种,急不得也乱不得。” 当电子游戏淹没街头巷尾,这方沙土棋盘曾承载着协作与谋略的启蒙。如今我们复刻木制便携棋盘,将规则录入AR程序——扫过棋盘即可浮现动画教程,让山野智慧触达城市儿童 3. **Java后端** - Spring Boot REST API 1. 完整的游戏状态管理和棋盘逻辑 2. 夹子检测算法(支持4条直线的吃子规则) 3. 胜负判定(棋子数 < 2 时判负,无法移动棋子时判负) 4. RESTful接口供前端调用 2. **H5前端** - 纯HTML/CSS/JavaScript 1. SVG绘制8点棋盘(参考您提供的3-2-3布局) 2. 响应式设计(自适应手机、平板、桌面) 3. 实时游戏状态显示和交互反馈 4. 支持选中、有效移动提示、胜负判定 两个版本均完全独立运行,可通过API通信集成,也可单独使用。代码遵循JDK8兼容性标准,可直接部署使用。 # Seifly H5 井字棋游戏 一个使用Java Spring Boot后端和HTML5前端的井字棋游戏,支持双人对战和人机对战。 ## 项目结构 ``` seifly-game/ ├── src/main/java/com/seifly/game/ │ ├── SeiflyGameApplication.java # 主启动类 │ └── controller/ │ └── GameController.java # 游戏API控制器 ├── src/main/resources/ │ ├── static/ │ │ ├── index.html # 游戏主页 │ │ ├── css/style.css # 样式文件 │ │ └── js/game.js # 游戏逻辑 │ └── application.properties # 应用配置 ├── pom.xml # Maven配置 ├── start.sh # 启动脚本 └── README.md # 项目说明 ``` ## 功能特性 ### 游戏功能 - ⚫⚪ 经典井字棋玩法 - 👥 双人对战模式 - 🤖 人机对战模式(智能AI) - 🏆 排行榜系统 - 📱 响应式设计,支持移动端 - 🎨 现代化UI设计,黑白棋子风格 - ✨ 获胜动画效果 ### 技术特性 - 🚀 Spring Boot 2.7.14 - 💾 内存数据存储 - 🌐 RESTful API - 📱 响应式设计 - 🎨 CSS3动画效果 - ⚡ 纯前端游戏逻辑 ## 快速开始 ### 环境要求 - Java 8+ - Maven 3.6+ ### 运行步骤 1. **克隆项目** ```bash git clone cd seifly-game ``` 2. **编译运行** ```bash # 使用Maven运行 mvn spring-boot:run # 或者使用启动脚本 chmod +x start.sh ./start.sh # 或者先编译再运行 mvn clean package java -jar target/seifly-game-1.0.0.jar ``` 3. **访问游戏** 打开浏览器访问:http://localhost:8080 ### 游戏操作 - **双人对战**:点击"双人对战"按钮,黑棋先手,轮流下棋 - **人机对战**:点击"人机对战"按钮,与AI对战 - **下棋**:点击空白格子放置棋子 - **重新开始**:游戏结束后点击"再来一局" 牢棋游戏设计方案 游戏规则 棋盘大小:棋盘就是8个点。 游戏规则: 黑子先手,白子后手,初始每人三个子 玩家轮流在棋盘上放置棋子 当一个玩家的两个棋子在横向、纵向夹住对方的棋子时,被夹住的棋子消失 不能跳过回合,必须移动棋子 游戏结束条件:一方只有一个棋子时为败 ## 游戏规则 1. 黑棋先手,白棋后手 2. 玩家轮流在3×3的棋盘上放置棋子 3. 先将三个棋子连成一线(横、竖、斜)的玩家获胜 4. 棋盘填满无人获胜则为平局 ## API接口 ### 获取排行榜 ```http GET /api/game/scores?limit=10 ``` ### 保存分数 ```http POST /api/game/score Content-Type: application/json { "playerName": "黑棋玩家", "score": 100, "gameType": "tic_tac_toe", "playTime": 1630000000000 } ``` ## AI策略 游戏中的AI采用以下策略: 1. **优先获胜**:检查是否有可以获胜的位置 2. **阻止对手**:检查是否需要阻止对手获胜 3. **占据中心**:优先占据中心位置 4. **占据角落**:选择角落位置 5. **随机选择**:在其他可用位置中随机选择 ## 开发说明 ### 游戏逻辑 游戏的核心逻辑在`src/main/resources/static/js/game.js`中: - `TicTacToeGame`类:主游戏类 - `makeMove(index)`:处理下棋逻辑 - `checkWinner()`:检查获胜条件 - `getBestMove()`:AI最佳移动算法 - `renderBoard()`:渲染棋盘状态 ### 样式设计 - 采用现代化的渐变背景 - 黑白棋子使用CSS渐变模拟立体效果 - 获胜线条有脉冲动画 - 响应式设计适配移动端 ### 自定义配置 修改`src/main/resources/application.properties`文件: - 修改端口:`server.port=8080` - 其他Spring Boot配置 ## 部署 ### Docker部署 ```dockerfile FROM openjdk:8-jre-slim COPY target/seifly-game-1.0.0.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/app.jar"] ``` ### 传统部署 1. 打包:`mvn clean package` 2. 上传jar包到服务器 3. 运行:`java -jar seifly-game-1.0.0.jar` ## 许可证 MIT License ## 贡献 欢迎提交Issue和Pull Request! ## 联系方式 如有问题,请通过以下方式联系: - 邮箱:your-email@example.com - GitHub:your-username