ホームページ > Java > &#&チュートリアル > Java で家主の格闘ゲームや数字当てゲームを実装するにはどうすればよいですか?

Java で家主の格闘ゲームや数字当てゲームを実装するにはどうすればよいですか?

PHPz
リリース: 2023-04-26 13:28:17
転載
1056 人が閲覧しました

Dou DiZhu ミニ ゲーム: カードのシャッフルと配り

#タスクの説明

Dou DiZhu でカードのシャッフルと配りのプロセスを完了するために必要な、カードの配りとシャッフルのためのプログラムを作成します。 Dou DiZhu のルールに従って、カードの表面はスート、色、数字 (J、Q、K、A の文字を含む) で構成され、スートはハート、スペード、ダイヤ、クラブで構成されます。大きな王様と小さな王様もいます。この 54 枚のカードの順序を崩して、3 人のプレイヤーがゲームに参加します。各プレイヤーは順番に 1 枚ずつカードを引き、残りの 3 枚をホールカードとして使用します。プログラムは終了し、それぞれのカードとホールカードは終了します。プレイヤーの手札がプリントされています。

実行結果

Java で家主の格闘ゲームや数字当てゲームを実装するにはどうすればよいですか?

タスクの目標

  • 「家主ミニ ゲーム: カードのシャッフルと配り」の分析方法を学ぶ「プログラムの実装アイデア。

  • アイデアに基づいて、「Dou Di Zhu ミニゲーム シャッフルとカード配り」プログラムのコード作成、コンパイル、操作を自主的に完了できる。

  • ArrayList コレクションと HashMap コレクションの特性をマスターし、for ループの使用を強化します。

実装アイデア

①カード プログラムを実装するには、まず 54 枚のカードをプログラムに追加する必要があります。これらのカードには 13 枚のハート、スペード、クラブ、ダイヤが含まれます。 、さらにダーワンとシャオワン。

② スートのセットと数字のセットの 2 つのセットに対してネストされたループを実行し、スートと数字を組み合わせて 52 枚のカードを作成し、それらに番号を割り当て、組み合わせたカードを HashMap セットに入れます。キー値は数字、値値は組み立てられたカードと大きなキングと小さなキングです。組み立てルールに一貫性がないため、これら 2 つのカードをハッシュマップコレクション。

③数字セットを作成し、この数字セットを使用してカードを交換し、カードをシャッフルして配る操作を完了します。カードは合計 54 枚あるため、作成されるセットの範囲は 0 ~ 53 です。

④ Collections クラスの shuffle() メソッドを使用して、数値コレクションをシャッフルする操作を完了し、シャッフルの効果を得ることができます。人数は 3 人だけなので、for ループを使用して、さまざまなカードを表す数字をさまざまな人々に配布し、数字の残りと 3 を取得してホール カードを配布し、カードを配る効果を得ることができます。

⑤カードのシャッフルと配りが完了したら、Collections クラスの sort() メソッドを通じてソートを完了し、拡張された for ループ HashMap コレクションを通じて、対応するカード文字列が以下に従って検索されます。数値、新規作成した文字が格納され、文字列コレクションでは最後に表示されます。

実装コード

package Swing;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 public class DoudiZhu {
     public static void main(String[]args) {
         //准备花色
         ArrayList<String>color=new ArrayList<String >();
         color.add("黑桃");
         color.add("红桃");
         color.add("方块");
         color.add("梅花");
         //准备数字,用列表将纸牌从大到小排列
         ArrayList<String >number=new ArrayList<String >();
         for(int i=3;i<=10;i++){
             number.add(i+"");
         }
         number.add("J");
         number.add("Q");
         number.add("K");
         number.add("A");
         number.add("2");
         //定义一个map集合,用来将数字与每一张纸牌进行对应
         HashMap<Integer,String>map=new HashMap<Integer,String>();
         //纸牌编号
         int index=0;
         //循环纸牌数字
         for(String thisNumber:number){
             //循环纸牌花色
             for(String thisColor:color){
                 //将花色与数字组合,形成52张牌,并赋予编号
                 map.put(index++,thisColor+thisNumber);
             }
         }
         map.put(index++,"小王");
         map.put(index++,"大王");
         //创建0-53的数字集合代表54张牌
         ArrayList<Integer>cards=new ArrayList<Integer>();
         for(int i=0;i<=53;i++){
             cards.add(i);
         }
         //洗牌,使用Collections工具类的shuffle()方法
         Collections.shuffle(cards);
         //创建三个玩家和底牌
         ArrayList<Integer>iPlayer=new ArrayList<Integer>();
         ArrayList<Integer>iPlayer2=new ArrayList<Integer>();
         ArrayList<Integer>iPlayer3=new ArrayList<Integer>();
         ArrayList<Integer>iSecretCards=new ArrayList<Integer>();
         //遍历这副洗好的牌,遍历的过程中,将牌发到三个玩家和底牌中
         for(int i=0;i<cards.size();i++){
             if(i>=51){
                 //留取三个底牌
                 iSecretCards.add(cards.get(i));
 
             }else{
                 if(i%3==0){//与3取余为0的发给玩家1
                     iPlayer.add(cards.get(i));
                 }else if(i%3==1){//与3取余为1的发给玩家2
                     iPlayer2.add(cards.get(i));
                 }else {//剩余的牌发给玩家3
                     iPlayer3.add(cards.get(i));
                 }
             }
         }
         //对每个人手中的牌进行排序,使用的使Collections工具类中的sort()方法
         Collections.sort(iPlayer);
         Collections.sort(iPlayer2);
         Collections.sort(iPlayer3);
         ArrayList<String>sPlayer=new ArrayList<String>();
         ArrayList<String>sPlayer2=new ArrayList<String>();
         ArrayList<String>sPlayer3=new ArrayList<String>();
         ArrayList<String>sSectCards=new ArrayList<String>();
         //循环主键,从map中获取纸牌
         for (Integer key:iPlayer){
             sPlayer.add(map.get(key));
         }
         for (Integer key:iPlayer2){
             sPlayer2.add(map.get(key));
         }
         for (Integer key:iPlayer3){
             sPlayer3.add(map.get(key));
         }
         for (Integer key:iSecretCards){
             sSectCards.add(map.get(key));
         }
         //将分发的牌显示出来
         System.out.println("玩家1:"+sPlayer);
         System.out.println("玩家2:"+sPlayer2);
         System.out.println("玩家3:"+sPlayer3);
         System.out.println("底牌:"+sSectCards);
     }
 }
ログイン後にコピー

数字を推測するゲーム

タスクの説明

推測ゲームを作成します。このゲームは「あなたが数字をくれたら、私はそうします」です。推測してください。" "、プログラムはバックグラウンドで 0 から 9 までの乱数を事前に生成し、ユーザーはキーボードで推測された数値を入力します。入力された数値がバックグラウンドで事前に生成された数値と同じである場合、このとき、プログラムは「おめでとうございます。正解です。」というメッセージを出力しますが、一致しない場合は、入力された数字とバックグラウンドで事前に生成された数字の大きさを比較します。大きい場合は、「申し訳ありませんが、大きいと思いました!」と出力します。小さい場合は、「申し訳ありません、小さいと思いました」と出力します。推測が常に間違っている場合は、数字が一致するまでゲームが続行されます。正しく推測されました。

実行結果

Java で家主の格闘ゲームや数字当てゲームを実装するにはどうすればよいですか?

タスクの目標

  • 「数字当てゲーム」の実装アイデアを分析する方法を学ぶプログラム。

  • アイデアに基づいて「数字当てゲーム」のソースコード作成、コンパイル、操作を自主的に完了します。

  • if 選択構造と while ループ構造のステートメントの使用法をマスターして、プログラム内で操作を実行します。

実装アイデア

①この機能を実現するには、まずプログラムがバックグラウンドで 0 から 9 までの乱数を事前に生成する必要があります。 Random クラスの nextInt(int n) メソッドを使用できます。その具体的な定義は次のとおりです:

 public int nextInt(int n)
ログイン後にコピー

② キーボードを使用して推測された数値を入力するには、Scanner クラスを使用できます。キーボードからの数字。

 Scanner sc=new Scanner(System.in);
 int i=sc.nextInt();
ログイン後にコピー

③数字を入力した後、キーボードで入力した数字とバックグラウンドで事前に生成された数字を比較する必要があります。数字の推測は一度では必ずしも成功するとは限らないため、複数回行われる可能性があります, そのため、while ループを通じてプログラムを複数回使用できます。キーボードから入力し、入力するたびに数値が正しいか間違っているかを推測します。推測が正しければ、ループから抜け出して「おめでとうございます。正解しました!」と出力すると、ゲームは終了します。

④推測が間違っている場合は、if...else ステートメントを使用してエラーを判断し、推測が高すぎる場合と推測が低すぎる場合の 2 つの結果に分けます。推測が高すぎる場合は、「申し訳ありませんが、推測が大きすぎます!」と出力して次のサイクルを続行します。推測が小さすぎる場合は、「申し訳ありません、推測が小さすぎます!」を出力して次のサイクルを続行します。その結果をもとにヒントが与えられ、数字を当てるゲームが続きます。

実装コード

 package math;
 import java.util.Random;
 import java.util.Scanner;
 public class CaishuZi {
     public static void main(String[] args) {
         int randomNumber = new Random().nextInt(10);
         System.out.println("随机数已经生成");
         System.out.println("请输入你所猜的数字");
         Scanner sc =new Scanner(System.in);
         int enterNumber =sc.nextInt();
         //通过while循环,进行猜数字对错判断
         //猜对,跳出循环,游戏结束
         while(enterNumber!=randomNumber){
             //猜错了,根据结果,给出提示,接着猜数字,游戏继续
             if(enterNumber>randomNumber){
                 //猜大了给出的提示
                 System.out.println("sorry,你猜大了");
             }else{
                 //猜小了,给出的提示
                 System.out.println("sorry,你猜小了");
             }
             //输入猜的数字
             System.out.println("请输入你猜的数字");
             enterNumber = sc.nextInt();
         }
         System.out.println("恭喜你,答对了!");
     }
 }
ログイン後にコピー

以上がJava で家主の格闘ゲームや数字当てゲームを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート