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.   

    1、不用ArrayList就可以,使用一个一维数组即可int[] m = new int[104];
    for(int i = 0;i < m.length;i++){
       m[i] = i / 2;
    }
      

  2.   

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

  3.   

    大体上纸牌可以这样生成:
    class zhipai {
    private int number ;
    num huase{hongtao, fangkuai, meihua, heitao}
    private huase zhonglei ;

    public zhipai (int number, int zhonglei) {
    this.number = number ;
    switch(zhonglei){
    case 1:
    this.zhonglei = hongtao ;break ;
    case 2:
    ...
    } }
    }public class test
    {
    List<zhipai> pai = new ArrayList<zhipai> ;
    public static void main(String[] args) {
    for(int i=0; i<104; i++){
    zhipai a = new zhipai(i/4+1, i%4+1);
    pai.add(a) ;

    }
    }我不确定会不会有些语法上的小毛病