基于Java的斗地主实现

思路:首先模拟出54张牌将这些牌用一个Arrlist存起来,然后洗牌,发牌,看牌。但是有个问题就是,看牌的时候如果不将其进行排序(这里指的排序是指让它按照斗地主里面的规则从大到小进行排列),那么牌就会看起来非常的乱。那么在这里我们先定义一个HashMap将牌面进行编号:

同时我们将这些key存在另一个ArraList里面,那么洗牌的话其实也就是将其顺序打乱即可,然后发牌将对应的牌存在TreeSet中那么它就能够对其自动排序,那么在看牌的时候牌面顺序就显得非常一致了。思路如下:

具体代码如下:

package lcanTest;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;

public class DouDiZhu {
    public static void main(String[] args) {
        
        String []colors = {"♥","♠","♦","♣"};
        String []numbers = {"3","4","5","6",
                "7","8","9","10","J","Q","K","A","2"};
        HashMap<Integer,String> hashMap = new HashMap<Integer,String>();
        ArrayList<Integer> arrList = new ArrayList<Integer>();
        
        int index = 0;
        for(String value:numbers){
            for(String color:colors){
                String str = color.concat(value);
                hashMap.put(index, str);
                arrList.add(index);
                index ++;
            }
            
        }
        hashMap.put(index, "小王");
        arrList.add(index);
        index ++;
        
        hashMap.put(index, "大王");
        arrList.add(index);
        
        Collections.shuffle(arrList);
        
        TreeSet<Integer>player1 = new TreeSet<Integer>();
        TreeSet<Integer>player2 = new TreeSet<Integer>();
        TreeSet<Integer>player3 = new TreeSet<Integer>();
        TreeSet<Integer> diPai = new TreeSet<Integer>();
        
        for(int i=0;i<arrList.size();i++){
            if(i >= arrList.size()-3){
                diPai.add(arrList.get(i));
            }else if(i % 3 == 0){
                player1.add(arrList.get(i));
            }else if(i % 3 == 1){
                player2.add(arrList.get(i));
            }else if(i % 3 == 2){
                player3.add(arrList.get(i));
            }
            
        }
        
        
        lookPaker("player1", hashMap, player1);
        lookPaker("player2", hashMap, player2);
        lookPaker("player3", hashMap, player3);
        lookPaker("diPai", hashMap, diPai);
        
        
        
        
        }
    
    public static void lookPaker(String name,HashMap<Integer,String> hashMap,TreeSet<Integer> treeSets){
        System.out.print(name + "的牌是:");
        for(Integer treeSet:treeSets){
            String number = hashMap.get(treeSet);
            System.out.print(number + "  ");
        }
        System.out.println();
    }

}
 

猜你喜欢

转载自blog.csdn.net/u010808777/article/details/85915392