一个基于Web的拉密牌游戏实现,支持1个人类玩家对战3个AI玩家。游戏采用优化的响应式布局,提供了流畅的拖拽体验和智能AI对手。
拉密牌是一种受欢迎的桌游,玩家需要将手中的牌组成序列或组合放到桌面上。这个实现允许玩家组合牌并与AI对战,同时支持多种高级操作,如拆分牌组、重组牌组和使用百搭牌。
- 每个玩家初始获得14张牌
- 牌有四种颜色(红、蓝、黄、黑),每种颜色的牌有数字1-13,每个数字每种颜色各有两张
- 游戏还包含两张百搭牌(Joker)
- 玩家可以组合牌形成:
- 顺子:同色连续数字(如红色的1、2、3)
- 同数字组:同数字不同颜色的牌(如红1、蓝1、黑1)
- 可以通过以下方式操作牌组:
- 将新牌添加到已有组合中
- 拆分已有组合
- 将多个组合合并
- 在组合之间交换牌
- 首次出牌的点数需要达到30分(百搭牌计30分,其他牌按面值计分)
- 百搭牌可以代替任何牌
- 第一个用完手中所有牌的玩家获胜
- 如果牌组用完,手中牌最少的玩家获胜
- 下载所有文件(index.html, styles.css, script.js)到同一个目录
- 在浏览器中打开index.html文件
- 无需安装任何依赖或设置服务器,游戏可以直接在本地运行
也可以通过以下方式克隆并运行:
git clone https://github.com/your-username/rummikub-game.git
cd rummikub-game
# 使用您喜欢的浏览器打开index.html
# 例如在macOS上:
open index.html
# 或在Linux上:
xdg-open index.html- 点击"开始游戏"按钮开始新游戏
- 每个回合,您可以:
- 拖动您的牌到游戏板上形成新组合
- 拖动游戏板上的牌重新组合
- 将牌从游戏板拖回牌架
- 结束回合前确保所有组合都是有效的
- 如果不能形成有效组合,点击"抽牌"按钮从牌组中抽一张牌
- 如果需要撤销当前回合的所有操作,点击"撤销修改"按钮
- 当您结束回合后,3个AI玩家将依次进行他们的回合
- 游戏将持续直到有玩家赢得游戏
- 您也可以帮助AI玩家出牌,当AI无法出牌时,系统会询问是否替AI出牌
- 从牌架拖动牌到游戏板上形成新组合
- 从游戏板上拖动牌到其他组合中
- 从游戏板上拖动牌到"+"区域形成新组合
- 从游戏板上拖动牌回到牌架
- 如果组合无效,将显示红色背景提示
- 有效组合将显示绿色背景提示
- 在替AI出牌时,拖拽牌片会临时隐藏AI浮窗,松开鼠标后重新显示
- 彩色牌面设计,牌组根据类型自动排序
- 支持在游戏板上灵活组合牌
- 完整的拖拽操作支持,流畅的用户体验
- 有效/无效组合的视觉反馈
- 支持百搭牌规则,正确计算顺子中的位置
- 智能AI玩家逻辑,支持多牌组组合出牌
- 消息区域详细显示游戏进度和出牌情况
- 完全响应式界面,适应各种屏幕尺寸
- 详细的游戏规则说明
- 撤销功能,方便操作失误时恢复
- 人机互动功能,可替AI玩家出牌
- 完整的游戏规则实现,包括首次出牌30点要求和百搭牌规则
- 高级拖拽操作支持,包括从牌组到牌组的拖拽
- 牌组重组功能,灵活操作各种组合
- 智能验证组合的合法性(顺子和同数字组)
- 百搭牌的灵活使用,包括在顺子中的智能排序
- 紧凑型界面布局,手牌重叠显示节省空间
- 增强的AI逻辑,支持同时出多组牌达到30点要求
- 撤销当前回合修改的功能
- 替AI出牌功能,增加游戏互动性
- 优化的响应式设计,适应各种设备,包括:
- AI玩家1和3与游戏板保持固定距离,不会重叠
- AI玩家2和人类玩家手牌行的重叠优化
- 针对不同屏幕尺寸的自适应布局
- AI出牌时牌组重复显示的问题
- 百搭牌(Joker)在顺子中位置不正确的问题
- 抽牌后AI玩家不行动的问题
- AI放置的牌组从游戏板上消失的问题
- AI首次出牌点数不足时牌组消失的问题
- 首次出牌计算点数的问题,特别是对于同数字组的计算
- 纯HTML, CSS和JavaScript构建,无需任何外部库或框架
- 使用HTML5的拖放API实现了牌的拖拽操作
- 现代CSS技术,包括Flexbox布局和响应式设计
- 精心设计的动画和过渡效果,提升用户体验
- 优化的游戏逻辑,确保AI行为合理且有挑战性
- 高效的DOM操作,保证在各种设备上的流畅体验
这个实现仍可以进一步完善。未来的改进可能包括:
- 更复杂的牌组操作动画
- 更智能的AI策略,能够进行更复杂的牌组操作
- 多人游戏支持,允许多名玩家在同一设备上轮流玩
- 保存游戏进度,可以中断并稍后继续游戏
- 添加声音效果
- 优化移动设备上的触摸体验
- 提供多种主题和牌面样式选择
- 增加游戏难度选项
欢迎对游戏进行改进!如果你有任何建议或想要贡献代码,请提交Pull Request或开Issue。
MIT许可证 - 您可以自由使用、修改和分发此代码,但需保留原始版权声明和许可条款。