基於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();
    }

}
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章