Heim >Java >javaLernprogramm >Wie implementiert man Vermieterkampf- und Zahlenratespiele in Java?
Schreiben Sie ein Programm zum Austeilen und Mischen von Karten in Doudizhu. Es ist erforderlich, den Vorgang des Kartenmischens und Austeilens gemäß den Regeln von Doudizhu abzuschließen Farben, Farben und Zahlen (einschließlich der Buchstaben J, Q, K und A) und die Farben der Farben umfassen Herz, Pik, Karo und Kreuz. Es gibt auch große Könige und kleine Könige. Die Reihenfolge dieser 54 Karten wird unterbrochen und es nehmen drei Spieler am Spiel teil. Jeder Spieler zieht abwechselnd eine Karte und die restlichen drei werden als Hole Cards verwendet. Das Programm endet und die Karten und Hole Cards in jedem Die Hand des Spielers wird gedruckt.
Lernen Sie, die Umsetzungsideen des Programms „Dou Di Zhu Minispiel – Karten mischen und austeilen“ zu analysieren.
Kann das Schreiben, Kompilieren und Betreiben des Programms „Doudizhu Mini Game – Shuffling and Dealing Cards“ auf der Grundlage von Ideen selbstständig abschließen.
Beherrschen Sie die Eigenschaften von ArrayList- und HashMap-Sammlungen und verbessern Sie die Verwendung von for-Schleifen.
① Um das Kartenprogramm umzusetzen, müssen Sie zunächst 54 Karten zum Programm hinzufügen. Diese Karten umfassen 13 Herz, Pik, Kreuz und Karo sowie den König und den König.
② Führen Sie eine verschachtelte Schleife für den Farbsatz und den Zahlensatz durch, kombinieren Sie die Farben und Zahlen, um 52 Karten zu bilden, und weisen Sie ihnen Zahlen zu. Der Schlüsselwert des Satzes ist die Zahl. Der Wertwert ist die zusammengestellte Karte sowie der große König und der kleine König. Aufgrund der inkonsistenten Zusammenstellungsregeln müssen diese beiden Karten mithilfe der Methode add () separat zur HashMap-Sammlung hinzugefügt werden.
③Erstellen Sie einen Zahlensatz und verwenden Sie diesen Zahlensatz, um die Karten zu ersetzen und die Vorgänge des Mischens und Austeilens der Karten abzuschließen. Da es insgesamt 54 Karten gibt, liegt der Bereich des erstellten Satzes zwischen 0 und 53.
④ Sie können die shuffle()-Methode der Collections-Klasse verwenden, um den Vorgang des Mischens der Zahlensammlung abzuschließen und den Effekt des Mischens zu erzielen. Da es nur drei Personen gibt, können Sie eine for-Schleife verwenden, um die Zahlen, die verschiedene Karten darstellen, auf verschiedene Personen und Hole Cards zu verteilen, indem Sie den Rest der Zahl und 3 nehmen, um den Effekt des Austeilens von Karten zu erzielen.
⑤Nachdem das Mischen und Austeilen der Karten abgeschlossen ist, kann die Sortierung über die Methode sort() der Collections-Klasse abgeschlossen werden. Anschließend werden durch Erweitern der for-Schleife-HashMap-Sammlung die entsprechenden Kartenzeichenfolgen anhand der Zahlen durchsucht und gespeichert In der neu erstellten String-Sammlung wird schließlich die String-Sammlung angezeigt.
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); } }
Schreiben Sie ein Zahlenratespiel: „Sie finden eine Zahl, ich werde sie erraten“. 9 und die Benutzertastatur Geben Sie eine erratene Zahl ein. Wenn die eingegebene Zahl mit der im Hintergrund vorab generierten Zahl übereinstimmt, bedeutet dies, dass die Schätzung korrekt ist. Zu diesem Zeitpunkt druckt das Programm „Herzlichen Glückwunsch, die Antwort ist.“ richtig.“ Wenn sie nicht identisch sind, vergleichen Sie die eingegebene Zahl mit der Hintergrundzahl. Die Größe der vorgenerierten Zahl. Wenn sie größer ist, wird „Entschuldigung, Ihre Schätzung ist zu hoch!“ gedruckt klein, „Entschuldigung, Ihre Schätzung ist zu klein“ wird gedruckt; wenn es immer falsch ist, wird das Spiel fortgesetzt, bis die Zahl lautet, bis Sie richtig geraten haben.
Lernen Sie, die Umsetzungsideen des Programms „Rate Zahlenspiel“ zu analysieren.
Vervollständigen Sie unabhängig das Schreiben, Kompilieren und Betreiben des Quellcodes für das „Zahlenratenspiel“ basierend auf der Idee.
Beherrschen Sie die Verwendung von if-Auswahlstruktur- und while-Schleifenstrukturanweisungen zum Ausführen von Operationen in Programmen.
①Um diese Funktion zu realisieren, muss das Programm zunächst im Hintergrund eine Zufallszahl von 0 bis 9 generieren. Um eine Zufallszahl zu generieren, können Sie die Methode nextInt(int n) in Random verwenden Die spezifische Definition lautet wie folgt:
public int nextInt(int n)
②Um die erratene Zahl über die Tastatur einzugeben, können Sie die Scanner-Klasse verwenden, die es dem Benutzer ermöglicht, die Zahl über die Tastatur einzugeben.
Scanner sc=new Scanner(System.in); int i=sc.nextInt();
③Nach der Eingabe der Nummer müssen Sie die über die Tastatur eingegebene Nummer mit der im Hintergrund vorab generierten Nummer vergleichen. Da das Erraten der Nummer nicht unbedingt einmal erfolgreich ist, wird dies wahrscheinlich mehrmals durchgeführt, so das Programm kann über eine While-Schleife mehrmals über die Tastatur eingegeben werden. Erraten Sie bei jeder Eingabe, ob die Zahl richtig oder falsch ist. Wenn Sie richtig geraten haben, springen Sie aus der Schleife und geben Sie „Herzlichen Glückwunsch, Sie haben die richtige Antwort“ ein und das Spiel endet.
④ Wenn Sie falsch geraten haben, verwenden Sie die if...else-Anweisung, um den Fehler zu beurteilen und in zwei Ergebnisse aufzuteilen: eine zu hohe Schätzung und eine zu niedrige Schätzung. Wenn die Schätzung zu hoch ist, geben Sie „Entschuldigung, Ihre Schätzung ist zu groß“ ein und fahren Sie mit dem nächsten Zyklus fort. Wenn die Schätzung zu klein ist, drucken Sie „Entschuldigung, Ihre Schätzung ist zu klein“ aus und fahren Sie mit dem nächsten Zyklus fort. Basierend auf dem Ergebnis wird ein Hinweis gegeben, dann wird die Zahl weiter erraten und das Spiel geht weiter.
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("恭喜你,答对了!"); } }
Das obige ist der detaillierte Inhalt vonWie implementiert man Vermieterkampf- und Zahlenratespiele in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!