日期:2014-05-20  浏览次数:20733 次

(100分)关于纸牌游戏的几个问题。非常急,摆脱各位了!!!
1.如果游戏是两副牌放在一起(不包括大小王),也就是104张,其中同样的牌各有两张。我的想法是建立一个ArrayList集合,先生成不重复的52张牌,然后复制这个集合,再把复制后的集合添加到原来的集合中,这样就实现了104张牌的集合。请问这样是否可实现?有没有其他好的方法?麻烦给出个示例代码,谢谢.

2.这个游戏(Spite and Malice)类似windows纸牌游戏,把牌从A码到Q,然后牌会被回收,K是万能牌,也就是K可以当任意的牌用,但是只能比要放的牌大1。比如,牌码到了3,玩家如果手里有K,就可以放在3上面,K就自动变为4,或者码牌的地方是空的,玩家可以把K放在上面,K就会变为A。我的问题是,这个万能牌K我该如何实现?麻烦给个代码示例,谢谢了。

3.有个牌堆是管发牌和回收牌的,也就是玩家从这个牌堆里面那牌,玩家玩的牌如果达到了要求(从A-Q),这套牌就会回收到这个牌堆里。所以一定意义上是循环使用。我的问题是,是当每次回收牌时到要重新洗一次牌?如果这样的话,那我该怎么定义这个类?我原来是想定义一个pack类(里面有洗牌方法),就是生成整套牌,然后定义一个hand类(里面没有洗牌方法),就是包括玩家手里的牌,和码的牌等,简单说就是零散的牌,不是整套的。如果需要每次都要回收洗牌,那我就需要再为hand类定义个方法?或者有什么其他办法实现呢?


谢谢各位了,问题多了点也傻了点,希望可以给出个思路和简单代码示例,非常的急!!!!

------解决方案--------------------
1、不用ArrayList就可以,使用一个一维数组即可
Java code

int[] m = new int[104];
for(int i = 0;i < m.length;i++){
   m[i] = i / 2;
}

------解决方案--------------------
1 你的要求是什么,要排序,要插入, 
跟具要求采用什么样的数据结构、
2把牌从A码到Q 放在队列,还是什么链表里面
你得到k的前一张就行了