>  기사  >  Java  >  Java로 집주인 싸움과 숫자 추측 게임을 구현하는 방법은 무엇입니까?

Java로 집주인 싸움과 숫자 추측 게임을 구현하는 방법은 무엇입니까?

PHPz
PHPz앞으로
2023-04-26 13:28:17995검색

Dou DiZhu 미니 게임: 카드 섞기와 딜링

작업 설명

Dou DiZhu에서 카드를 섞고 섞는 프로그램을 작성하세요. Dou DiZhu의 규칙에 따라 카드를 섞고 딜하는 과정을 완료해야 합니다. 카드는 슈트와 색상, 숫자(문자 J, Q, K, A 포함)로 구성되며 슈트 색상에는 하트, 스페이드, 다이아몬드, 클럽이 포함됩니다. 큰 왕도 있고 작은 왕도 있습니다. 이 54장의 카드는 순서가 어긋나며 3명의 플레이어가 차례대로 카드를 하나씩 뽑고 나머지 3장의 카드는 홀카드로 사용되며 카드와 홀카드는 종료됩니다. 각 플레이어의 손이 인쇄됩니다.

결과 실행

Java로 집주인 싸움과 숫자 추측 게임을 구현하는 방법은 무엇입니까?

과제 목표

  • "Dou Di Zhu 미니 게임 - 카드 섞기와 나누기" 프로그램의 구현 아이디어를 분석하는 방법을 알아보세요.

  • 아이디어를 바탕으로 "Doudizhu 미니 게임 - 카드 섞기 및 딜링" 프로그램의 코드 작성, 컴파일 및 운영을 독립적으로 완료할 수 있습니다.

  • ArrayList 및 HashMap 컬렉션의 특성을 익히고 for 루프 사용을 향상하세요.

구현 아이디어

① 카드 프로그램을 구현하려면 먼저 하트, 스페이드, 클럽, 다이아몬드 각 13장과 킹, 킹이 포함된 54장의 카드를 프로그램에 추가해야 합니다.

② 슈트 세트와 숫자 세트에 중첩 루프를 수행하고 슈트와 숫자를 결합하여 52개의 카드를 만들고 결합된 카드를 HashMap 세트에 넣습니다. , 값 값은 조립된 카드이며 큰 왕과 작은 왕도 일치하지 않는 조립 규칙으로 인해 이 두 카드는 add() 메서드를 사용하여 별도로 HashMap 컬렉션에 추가해야 합니다.

③번호 세트를 생성하고 이 번호 세트를 사용하여 카드를 섞고 딜링하는 작업을 완료합니다. 총 54장의 카드가 있으므로 생성되는 세트의 범위는 0~53입니다.

4 컬렉션 클래스의 shuffle() 메서드를 사용하면 숫자 컬렉션을 섞는 작업을 완료하여 섞는 효과를 얻을 수 있습니다. 사람이 세 명뿐이므로 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) 메서드를 사용할 수 있습니다. class의 구체적인 정의는 다음과 같습니다.

 public int nextInt(int n)

②키보드를 사용하여 추측된 숫자를 입력하려면 사용자가 키보드에서 숫자를 입력할 수 있는 Scanner 클래스를 사용할 수 있습니다.

 Scanner sc=new Scanner(System.in);
 int i=sc.nextInt();

3숫자를 입력한 후에는 키보드로 입력한 숫자와 백그라운드에서 미리 생성된 숫자를 비교해야 합니다. 숫자 추측은 한 번만 성공하는 것이 아니기 때문에 여러 번 추측할 가능성이 높습니다. 프로그램은 while 루프를 통해 키보드에서 여러 번 입력될 수 있습니다. 입력할 때마다 숫자가 맞는지 틀리는지 추측해 보세요. 올바르게 추측했다면 루프에서 벗어나 "축하합니다. 정답을 맞췄습니다!"라고 출력하면 게임이 종료됩니다.

4 추측이 틀렸다면 if...else 문을 사용하여 판단하고 오류를 너무 높게 추측하고 너무 낮게 추측하는 두 가지 결과로 나눕니다. 추측값이 너무 높으면 "죄송합니다. 추측값이 너무 큽니다!"를 인쇄하고 다음 주기를 계속합니다. 추측값이 너무 작으면 "죄송합니다. 추측값이 너무 작습니다!"라고 인쇄하고 다음 주기를 계속합니다. 그 결과에 따라 힌트를 주고, 숫자를 추측하며 게임을 진행합니다.

구현 코드

 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제