完成一个变形版的纸牌21点游戏。该游戏来源于21点游戏,实现人机对战。游戏说明如下:
(1)该游戏需要两副牌,没有Joker,共104张。每张“纸牌”应具有花色与数字两个属性。
(2)游戏在机器与人类玩家之间进行。游戏一开始应先洗牌(将104张牌打乱)。
(3)机器永远是庄家,所以永远先给机器发牌,机器的牌不可见,只能看到机器要了几张牌。机器停止要牌后,再给人类玩家发牌。
(4)游戏胜利与失败的条件与普通21相同;除此以外,一方在当前牌没有爆掉的前提下,如果下一张牌使得手中有两张完全一样的牌(同数字、同花色)则立刻胜利。
(5)游戏结束时机器的牌要全部显示,并提示谁胜利了。
程序设计要求如下:
(1)程序中应至少有Card类和CardGame类。
(2)Card类需要重写Object类的equals(Object o) 函数,用于比较两张牌是否完全一样;重写toString函数,用于输出牌时直接显示牌的花色与数字。
(3)CardGame类应具有shuffle(洗牌)、deal(发牌)、win(胜利判别)等函数。
(4)选择适当的java集合类来实现“发牌牌堆”和“手牌”(不允许都使用数组)。。
1