Rumah > Java > javaTutorial > teks badan

Bagaimana untuk melaksanakan pertempuran tuan tanah dan permainan meneka nombor di Jawa?

PHPz
Lepaskan: 2023-04-26 13:28:17
ke hadapan
1042 orang telah melayarinya

Permainan Mini Doudizhu: Kocok dan Urus Kad

Huraian Tugas

Tulis program untuk berurusan dan merombak kad dalam Doudizhu, yang memerlukan melengkapkan proses mengocok dan berurusan kad mengikut peraturan daripada Doudizhu , permukaan kad terdiri daripada sut, warna dan nombor (termasuk huruf J, Q, K, A), dan sut itu terdiri daripada hati, penyodok, berlian dan kayu. Terdapat juga raja besar dan raja kecil. Urutan 54 kad ini terganggu, dan tiga pemain mengambil bahagian dalam permainan Setiap pemain bergilir-gilir untuk menarik satu kad pada satu masa, dan baki tiga kad digunakan sebagai kad lubang tangan setiap pemain dicetak.

Jalankan hasil

Bagaimana untuk melaksanakan pertempuran tuan tanah dan permainan meneka nombor di Jawa?

Objektif tugas

  • Belajar menganalisis "Permainan Mini Tuan Tanah: Kocok dan Urus Kad "Idea pelaksanaan program.

  • Dapat menyelesaikan secara bebas penulisan kod, penyusunan dan pengendalian program "Dou Di Zhu Mini Game - Shuffling and Dealing Cards" berdasarkan idea.

  • Kuasai ciri-ciri koleksi ArrayList dan HashMap dan tingkatkan penggunaan untuk gelung.

Idea Pelaksanaan

① Untuk melaksanakan program kad, anda mesti terlebih dahulu menambah 54 kad pada program ini termasuk 13 hati, 13 penyodok, setiap satu. dan 13 berlian, ditambah Da Wang dan Xiao Wang.

② Lakukan gelung bersarang pada set sut dan set nombor, gabungkan sut dan nombor untuk membentuk 52 kad, dan tetapkan nombor kepada mereka nombor, dan nilai nilai ialah kad yang dipasang, serta raja dan raja Disebabkan peraturan pemasangan yang tidak konsisten, anda perlu menggunakan kaedah tambah() secara berasingan untuk menambahkan dua kad ini pada koleksi HashMap.

③ Cipta set nombor dan gunakan set nombor ini untuk menggantikan kad untuk melengkapkan operasi kocok dan urusan Oleh kerana terdapat 54 kad secara keseluruhan, julat set yang dibuat ialah 0-53.

④ Anda boleh menggunakan kaedah shuffle() kelas Collections untuk melengkapkan operasi mengocok koleksi nombor untuk mencapai kesan shuffling. Memandangkan terdapat hanya tiga orang, anda boleh menggunakan gelung for untuk mengedarkan nombor yang mewakili kad yang berbeza kepada orang yang berbeza dan kad lubang dengan mengambil baki nombor dan 3 untuk mencapai kesan transaksi kad.

⑤Selepas kocok dan urusan kad selesai, pengisihan boleh diselesaikan melalui kaedah sort() kelas Koleksi, dan kemudian melalui koleksi HashMap gelung yang dipertingkatkan, rentetan kad yang sepadan ditemui mengikut nombor, dan aksara yang baru dicipta disimpan Dalam koleksi rentetan, koleksi rentetan dipaparkan terakhir.

Kod pelaksanaan

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);
     }
 }
Salin selepas log masuk

Permainan teka nombor

Perihalan tugas

Tulis permainan teka nombor "Teka", program pra-menjana nombor rawak dari 0 hingga 9 di latar belakang, dan pengguna memasukkan nombor yang diteka pada papan kekunci Jika nombor yang dimasukkan adalah sama dengan nombor yang telah dijana di latar belakang, ini bermakna tekaan adalah betul. Pada masa ini, program akan mencetak "Tahniah, jawapannya adalah betul." lebih besar, cetak "maaf, anda menekanya!"; jika ia lebih kecil, ia akan mencetak "maaf, anda menekanya" "Teka terlalu kecil";

Jalankan hasil

Bagaimana untuk melaksanakan pertempuran tuan tanah dan permainan meneka nombor di Jawa?

Matlamat tugas

  • Belajar menganalisis idea pelaksanaan "permainan nombor teka" program.

  • Selesaikan secara bebas penulisan kod sumber, penyusunan dan pengendalian "permainan meneka nombor" berdasarkan idea.

  • Kuasai penggunaan struktur pemilihan if dan pernyataan struktur gelung while untuk melaksanakan operasi dalam atur cara.

Idea Pelaksanaan

① Untuk melaksanakan fungsi ini, program mesti pra-menjana nombor rawak dari 0 hingga 9 di latar belakang Untuk menjana nombor rawak, anda boleh menggunakan kelas Rawak Kaedah nextInt(int n), definisi khususnya adalah seperti berikut:

 public int nextInt(int n)
Salin selepas log masuk

② Untuk menggunakan papan kekunci untuk memasukkan nombor yang diteka, anda boleh menggunakan kelas Pengimbas, yang membenarkan pengguna untuk memasukkan nombor dari papan kekunci.

 Scanner sc=new Scanner(System.in);
 int i=sc.nextInt();
Salin selepas log masuk

③Selepas memasukkan nombor, anda perlu membandingkan nombor yang dimasukkan oleh papan kekunci dan nombor yang dijana di latar belakang Memandangkan meneka nombor itu tidak semestinya berjaya sekali, ia mungkin akan dilakukan beberapa kali, jadi program boleh dibuat melalui gelung sementara Enter dari papan kekunci beberapa kali, dan teka sama ada nombor itu betul atau salah setiap kali anda memasukkan. Jika anda meneka dengan betul, lompat keluar dari gelung dan keluarkan "Tahniah, anda mendapat jawapan yang betul dan permainan berakhir.

④ Jika anda salah meneka, gunakan pernyataan if...else untuk menilai dan membahagikan kesilapan kepada dua keputusan: meneka terlalu banyak dan meneka terlalu sedikit. Jika tekaan terlalu tinggi, cetak "maaf, tekaan anda terlalu besar!" Berdasarkan keputusan, petunjuk diberikan, dan kemudian nombor itu terus diteka, dan permainan diteruskan.

Kod pelaksanaan

 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("恭喜你,答对了!");
     }
 }
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pertempuran tuan tanah dan permainan meneka nombor di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan