ホームページ  >  記事  >  Java  >  JavaでDoudizhuゲームのカードシャッフルと配付システムを実装する方法

JavaでDoudizhuゲームのカードシャッフルと配付システムを実装する方法

PHPz
PHPz転載
2023-04-24 15:55:07975ブラウズ

    1. 大家の戦い

    1. 序文

    「ゴッド・オブ・ギャンブラー」を見た学生なら誰でも知っていると思います。魔法に似た魔法の力。 ######はい!今日私たちが話そうとしている魔法のことは、特別な機能 (???ではありません)

    です: Landlord のカード シャッフルと配付システムです。 ! !

    2. はじめに

    古典的なポーカー ゲーム「Dudi Zhu」は多くの人がプレイできると思いますが、今回は Java 言語を使用して、Dou Landlord のカード シャッフルと配付プログラムを作成します。要件は、Doudizhu のルールに従うことであり、家主のルールに従って、カードをシャッフルして配るプロセスが完了します。

    トランプのデッキには合計 54 枚のカードがあります。カードはスートと数字または文字で構成されています。スートは 4 つあります: ♠、♣、♦、♥、スペード、クラブを表します、ダイヤモンド、ハートをそれぞれ表しており、♛は大きな王、♝は小さな王を意味します。

    Landlord ゲームには 3 人のプレイヤーが参加しています。まず、54 枚のカードの順序がシャッフルされます。次に、各人が順番にカードを 1 枚引きます。残りの 3 枚のカードはホール カードとして確保されます。最後に、コンソールには 3 人のプレーヤーのカードと 3 つのホール カードが印刷されています。

    3. イラスト

    JavaでDoudizhuゲームのカードシャッフルと配付システムを実装する方法2. カードの準備

    以下のコードはすべて

    main

    メソッドに記述されています! ! ! 1. コード例

    //准备牌
            HashMap<Integer,String> map=new HashMap<>();
            ArrayList<Integer> list=new ArrayList<>();
            map.put(1,"大王");
            map.put(2,"小王");
            list.add(1);
            list.add(2);
    
            String[] numbers={"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
            String[] colors={"♠","♥","♦","♣"};
    
            int index=3;
            for (String number : numbers) {
                for (String color : colors) {
                    map.put(index,number + color);
                    list.add(index);
                    index++;
                }
            }

    注: ここのコードでは 2 つのパッケージをインポートする必要があります:

    import java.util.HashMap;

    ##import java.util.ArrayList;

    2. データ表示

    Use

    System.out.println(map);

    and

    System.out.println(list);ステートメントは次のようにデータを表示します: {1=大王, 2=小王, 3=2♠, 4=2♥ 、5 =2♦、6=2♣、7=A♠、8=A♥、9=A♦、10=A♣、11=K♠、12=K♥、13=K♦、14=K♣ 、15 =Q♠、16=Q♥、17=Q♦、18=Q♣、19=J♠、20=J♥、21=J♦、22=J♣、23=10♠、24=10♥ 、25 = 10 ♦、26 = 10 ♣、27 = 9 ♠、28 = 9 ♥、29 = 9 ♦、30 = 9 ♣、31 = 8 ♠、32 = 8 ♥、33 = 8 ♦、34 = 8 ♣ 、35 =7♠、36=7♥、37=7♦、38=7♣、39=6♠、40=6♥、41=6♦、42=6♣、43=5♠、44=5♥ 、45=5♦、46=5♣、47=4♠、48=4♥、49=4♦、50=4♣、51=3♠、52=3♥、53=3♦、54=3♣ }

    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 、24、25、26、27、28、29、30、31、32、33、34、35、36、37、38、39、40、41、42、43、44、45、46、47、48 、 49 、 50、 51、 52、 53、 54]


    3. カードのシャンプーと並べ替え

    コード例

    	//洗牌
    	Collections.shuffle(list);
    	
    	//发牌
    	ArrayList<Integer> diPai=new ArrayList<>();
    	ArrayList<Integer> player1=new ArrayList<>();
    	ArrayList<Integer> player2=new ArrayList<>();
    	ArrayList<Integer> player3=new ArrayList<>();
    	
    	for (int i = 0; i < list.size(); i++) {
    	    if(i>=51){
    	        diPai.add(list.get(i));
    	    }else if(i%3==0){
    	        player1.add(list.get(i));
    	    }else if(i%3== 1){
    	        player2.add(list.get(i));
    	    }else {
    	        player3.add(list.get(i));
    	    }
    	}
    	//排序
        Collections.sort(diPai);
        Collections.sort(player1);
        Collections.sort(player2);
        Collections.sort(player3);

    注: ここで書かれたコードには、インポートするパッケージ:

    import java.util.Collections;

    4. カードを確認します (コンソールに出力)

    1.コード例

    //看牌
        look("周润发",player1,map);
        look("刘德华",player1,map);
        look("周星驰",player1,map);
        look("底牌",diPai,map);

    その中で、

    look

    メソッドを作成する:

      private static void look(String name, ArrayList<Integer> list, HashMap<Integer, String> map) {
            System.out.println(name+":");
            for (Integer number : list) {
                System.out.print(map.get(number)+" ");
            }
            System.out.println();
        }
    2. Show

    Chow Yun-fat:

    A♣ K♣ Q♥ Q ♣ J♠ J♦ J♣ 10♥ 10♦ 10♣ 9♠ 6♠ 6♦ 5♦ 4♦ 3♠ 3♦
    アンディ・ラウ:

    A♣ K♣ Q♥ Q♣ J♠ J♦ J♣ 10 ♥ 10♦ 10♣ 9♠ 6♠ 6♦ 5♦ 4♦ 3♠ 3♦
    スティーブン・チョウ:
    A♣ K♣ Q♥ Q♣ J♠ J♦ J ♣ 10♥ 10μ 10♣ 9♠ 6 ♠ 6μ 5μ 4μ 3♠ 3μ
    ハウスカード:
    2♥ A♠ 7♠

    以上がJavaでDoudizhuゲームのカードシャッフルと配付システムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。