首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现扑克或俄罗斯扑克等纸牌游戏的状态机?

问如何实现扑克或俄罗斯扑克等纸牌游戏的状态机?
EN

Software Engineering用户
提问于 2021-09-13 11:11:41
回答 1查看 555关注 0票数 -3

这些是我的课堂设计:

我也有控制器,我可以创建表,创建用户添加到表,交易手模拟用户赌注使用PostMan (以上类是游戏引擎类,我没有共享控制器在春季启动。(全是API)

不知怎么的,我不能把他们都缝成一个完整的游戏。

以下是我尝试过的:

有限状态机:我认为游戏中可能的状态是:收集百叶窗,交易手,GamePlay (在这里,折叠,打赌和提高发生),ShowDown。然后我试着去了解在美国会发生什么,然后我就困惑了。

然后我尝试用责任链来实现逻辑,看起来我们有一个活动链:收集百叶窗、交易手、游戏(本身也是折叠、下注、抬高等动作链),并在其中进行更新。

在实践中,我未能做到这一点。有没有人知道如何使用设计模式将它们组合在一起?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2021-10-08 13:46:24

状态是关于数据的,而不是离散的状态机。状态机帮助您理解紧急状态。

如果您将状态视为所有数据,则只需能够查询数据的不同视图即可。

关系数据不必是SQL,但这样想就更容易了。您的实现可以轻松地在内存中建模“记录”向量,并使用for-循环和查找实现连接。

实体和查找

  • 表: ID,TableNumber
  • 持有者: ID,姓名,CashBalance
  • 游戏: ID,TableID,StartingHoldersJSON

当前游戏

  • 卡:西装,价值,HolderID,(GameID)
  • 押注:. (GameID)
  • GameHolders: IsInGame,HolderID,IsDealer,(GameID)

游戏事件

  • CardPlayed
  • BetPlayed
  • ……
  • WinEarned
  • LossIncurred

博弈过程

  • 当CardPlayed时,在当前博弈中更新卡片
  • 当所有游戏事件被处理时,查询当前博弈的结果或下一个经销商移动,并添加相应的游戏事件。
  • 还有更多。

希望你能看到一个有效的系统是如何产生的。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/431848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档