扑克牌游戏的设计与实现

写一个扑克牌游戏需要解决以下几个问题:

(1)每张牌如何编码

对于编码最简单的莫如从0-53(不设大小王的游戏中是0-51),不过为了计算花色和点数,我们编码的时候

一定是一个花色从小到大排,然后是下一个花色的从小到大。

比如是这样的顺序:红桃 A-K   方片A-K  黑桃 A-K  梅花 A-K

这样给定一张牌的编码通过下面的计算就可以得到花色和点数

花色值= 编码/13

点数=编码%13+1

(2)牌的组合规则(如3个A, 2个A都可以组合成一手牌)

在扑克牌游戏中,我们每次出牌有能出一张,两张,三张,甚至更多,也有可能放弃出牌,这样我们就不应该

把 一张牌 或 一个牌的集合直接作为出牌的单元,而是增加一个抽象的 “一手牌“ 即Hand类,Hand类抽象

了参加出牌逻辑运算的最小信息单元.  Hand之间可以提供><=等逻辑比较操作,同时Hand还提供了诸如判断一张

牌能否加入此手牌中,比如在争上游游戏中现在是对A, 如果加一个A就变成一个A炸弹,但加一个2就不可以了。

(3)出牌规则(包括大小,输赢等判断)

由于出牌有一个大小,前后,积分的问题,所以必须抽象一个裁判类来做这些工作,Judge类决定了该哪一方

出牌,然后发消息通知这方,得到其出的牌 即一个Hand对象后,采用其内建的规则去做判断,(有的游戏还需要计分)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值