+ -
当前位置:首页 → 问答吧 → 一个扑克牌的程序设计问题

一个扑克牌的程序设计问题

时间:2011-12-13

来源:互联网

最近在做一个类似于UNO的扑克牌程序,不知道有没有人玩过UNO,游戏规则很简单,就是一个玩家出一张牌,然后下一个玩家,出的牌,要么跟上个玩家出的牌数字相同,要么花色相同,如果都没有的话,就得在牌库里面摸一张牌,然后这些牌里面还有一些特殊功能的牌,譬如改变上一个玩家出的牌得花色或者数字,从而来适应自己的出牌,游戏最后把牌出光的就是胜利者,然后分数越少的排第2,其次少的拍第3.。。。。
  我设计的时候一共分成三个类,第一个类是CARD,第二个类是PLAYER,第三个类是GAME,最后一个类是启动程序的MAIN,第一,二个类相信不用我介绍了,第三个GAME类是用来处理一些诸如初始化牌库,初始化玩家数,洗牌,派牌,计分等功能。
  在设计的时候我有几个问题:
  1,对于牌库,玩家的手牌,还有玩家群,分别用什么容器比较合适?特别对于牌库,有没有一个类似于单向链表的容器,因为我打算用一个随机数来把牌库里的牌分派给玩家,当第一个玩家得到牌之后,继续用这个随机数的话,如果不是单向链表那样,就会出现抽到空元素。
  2,对于一些有特殊功能的牌,我是想用多态来实现,但是在实现那牌得功能之前,必须要先判断玩家的牌是否有特殊功能,这一判断的话,就失去了多态的优势,请问如果我想用多态来实现的话,应该怎样实现?
  3.请问枚举类的元素可以是整数吗?我想用一个枚举类来装牌得数字,另外一个枚举类装牌得花色,但是装牌的数字的枚举类好像老是不通过编译。

作者: baar   发布时间: 2011-12-13

1 用List比较合适 比LinkList合适,尤其体现在随机分牌

2 继承自功能牌

3 枚举可以转换成整数

UNO 我倒是玩过,功能牌记不全了。你设计的类有点问题

作者: Sandy945   发布时间: 2011-12-14