Skip to content

zj05409/lami

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

拉密牌游戏 (Rummikub)

一个基于Web的拉密牌游戏实现,支持1个人类玩家对战3个AI玩家。游戏采用优化的响应式布局,提供了流畅的拖拽体验和智能AI对手。

游戏说明

拉密牌是一种受欢迎的桌游,玩家需要将手中的牌组成序列或组合放到桌面上。这个实现允许玩家组合牌并与AI对战,同时支持多种高级操作,如拆分牌组、重组牌组和使用百搭牌。

游戏规则

  • 每个玩家初始获得14张牌
  • 牌有四种颜色(红、蓝、黄、黑),每种颜色的牌有数字1-13,每个数字每种颜色各有两张
  • 游戏还包含两张百搭牌(Joker)
  • 玩家可以组合牌形成:
    • 顺子:同色连续数字(如红色的1、2、3)
    • 同数字组:同数字不同颜色的牌(如红1、蓝1、黑1)
  • 可以通过以下方式操作牌组:
    • 将新牌添加到已有组合中
    • 拆分已有组合
    • 将多个组合合并
    • 在组合之间交换牌
  • 首次出牌的点数需要达到30分(百搭牌计30分,其他牌按面值计分)
  • 百搭牌可以代替任何牌
  • 第一个用完手中所有牌的玩家获胜
  • 如果牌组用完,手中牌最少的玩家获胜

如何运行

  1. 下载所有文件(index.html, styles.css, script.js)到同一个目录
  2. 在浏览器中打开index.html文件
  3. 无需安装任何依赖或设置服务器,游戏可以直接在本地运行

也可以通过以下方式克隆并运行:

git clone https://github.com/your-username/rummikub-game.git
cd rummikub-game
# 使用您喜欢的浏览器打开index.html
# 例如在macOS上:
open index.html
# 或在Linux上:
xdg-open index.html

如何玩

  1. 点击"开始游戏"按钮开始新游戏
  2. 每个回合,您可以:
    • 拖动您的牌到游戏板上形成新组合
    • 拖动游戏板上的牌重新组合
    • 将牌从游戏板拖回牌架
    • 结束回合前确保所有组合都是有效的
    • 如果不能形成有效组合,点击"抽牌"按钮从牌组中抽一张牌
    • 如果需要撤销当前回合的所有操作,点击"撤销修改"按钮
  3. 当您结束回合后,3个AI玩家将依次进行他们的回合
  4. 游戏将持续直到有玩家赢得游戏
  5. 您也可以帮助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许可证 - 您可以自由使用、修改和分发此代码,但需保留原始版权声明和许可条款。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published