最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現斗地主與猜數字游戲詳細流程

 更新時間:2022年04月28日 16:44:23   作者:LNORA  
這篇文章主要介紹了怎么用Java來寫斗地主種洗牌和發(fā)牌的功能,以及猜數字的游戲,斗地主相信大家都知道,同時也知道每一局都要洗牌打亂順序再發(fā)牌,本篇我們就來實現它們能,感興趣的朋友跟隨文章往下看看吧

斗地主小游戲之洗牌發(fā)牌

任務描述

編寫一個斗地主發(fā)牌洗牌的程序,要求按照斗地主的規(guī)則完成洗牌發(fā)牌的過程,牌面由花色色和數字(包括J,Q,K,A字母)組成,花色有紅桃,黑桃,方塊,梅花組成。還設有大王和小王。將這54張牌的順序打亂,有三位玩家參與游戲,每人輪流一次摸一張牌,剩余的三張作為底牌,程序結束,打印出每人手中的紙牌和底牌。

運行結果  

 

任務目標

  • 學會分析"斗地主小游戲之洗牌發(fā)牌"程序的實現思路。
  • 能夠根據思路獨立完成"斗地主小游戲之洗牌發(fā)牌"程序的代碼編寫,編譯及運行。
  • 掌握ArrayList和HashMap集合的特點以及增強for循環(huán)的使用。

實現思路

①要實現紙牌程序,首先要在程序中添加54張牌,這些牌包括紅桃,黑桃,梅花,方塊各13張,加上大王和小王。

②將花色集合和數字集合這兩個集合進行嵌套循環(huán),將花色與數字組合,形成52張牌,并且賦予編號,將組合后的牌放入HashMap集合中,集合的key值是編號,value值是組裝完成的紙牌,還有大王和小王,由于組裝規(guī)則不一致,需要單獨使用add()方法將這兩張紙牌加入到HashMap集合中。

③創(chuàng)建一個數字集合,用這個數字集合來替代紙牌完成洗牌和發(fā)牌的操作,由于一共有54張牌,所以創(chuàng)建集合的范圍為0-53。

④可以使用Collections類的shuffle()方法完成打亂數字集合的操作,實現洗牌的效果。由于只有三個人,所以可以使用for循環(huán),通過將數字與3取余的方法,將代表不同紙牌的數字分配給不同的人和底牌,實現發(fā)牌效果。

⑤洗牌發(fā)牌完成之后,可通過Collections類的sort()方法完成排序,之后通過增強for循環(huán)HashMap集合,根據數字查找對應的紙牌字符串,并存入新創(chuàng)建的字符串集合中,最后展示字符串集合。

實現代碼

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;
         //循環(huán)紙牌數字
         for(String thisNumber:number){
             //循環(huán)紙牌花色
             for(String thisColor:color){
                 //將花色與數字組合,形成52張牌,并賦予編號
                 map.put(index++,thisColor+thisNumber);
             }
         }
         map.put(index++,"小王");
         map.put(index++,"大王");
         //創(chuàng)建0-53的數字集合代表54張牌
         ArrayList<Integer>cards=new ArrayList<Integer>();
         for(int i=0;i<=53;i++){
             cards.add(i);
         }
         //洗牌,使用Collections工具類的shuffle()方法
         Collections.shuffle(cards);
         //創(chuàng)建三個玩家和底牌
         ArrayList<Integer>iPlayer=new ArrayList<Integer>();
         ArrayList<Integer>iPlayer2=new ArrayList<Integer>();
         ArrayList<Integer>iPlayer3=new ArrayList<Integer>();
         ArrayList<Integer>iSecretCards=new ArrayList<Integer>();
         //遍歷這副洗好的牌,遍歷的過程中,將牌發(fā)到三個玩家和底牌中
         for(int i=0;i<cards.size();i++){
             if(i>=51){
                 //留取三個底牌
                 iSecretCards.add(cards.get(i));
 ?
             }else{
                 if(i%3==0){//與3取余為0的發(fā)給玩家1
                     iPlayer.add(cards.get(i));
                 }else if(i%3==1){//與3取余為1的發(fā)給玩家2
                     iPlayer2.add(cards.get(i));
                 }else {//剩余的牌發(fā)給玩家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>();
         //循環(huán)主鍵,從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));
         }
         //將分發(fā)的牌顯示出來
         System.out.println("玩家1:"+sPlayer);
         System.out.println("玩家2:"+sPlayer2);
         System.out.println("玩家3:"+sPlayer3);
         System.out.println("底牌:"+sSectCards);
     }
 }

猜數字游戲

任務描述

編寫一個猜數字游戲,這個游戲就是"你出個數字,我來猜",程序后臺預先生成一個0-9的隨機數,用戶鍵盤錄入一個所猜的數字,如果輸入的數字與后臺預先生成的數字相同,則表示猜對了,這時,程序會打印出"恭喜,答對了",如果不相同,則比較輸入的數字和后臺預先生成的數字的大小,如果大了,打印"sorry,你猜大了!";如果小了,會打印"sorry,你猜小了";如果一直猜錯,則游戲一直進行下去,直到數字猜對為止。

運行結果

  

任務目標

  • 學會分析"猜數字游戲"程序的實現思路。
  • 根據思路獨立完成"猜數字游戲"的源代碼編寫,編譯和運行。
  • 掌握在程序中使用if選擇結構和while循環(huán)結構語句進行運算操作。

實現思路

①要實現這個功能,首先程序要在后臺預先生成一個0-9的隨機數,生成隨機數可以使用Random類中的nextInt(int n)方法,其具體的定義如下:

 public int nextInt(int n)

②要使用鍵盤輸入所猜的數字,可以使用Scanner類,可以讓用戶從鍵盤中輸入數字。

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

③輸入數字后,需要比較鍵盤輸入的數字和后臺預先生成的數字,由于猜數字并非一定一次成功,很可能是多次進行,因此可以通過while循環(huán)使程序能夠多次從鍵盤輸入,每次輸入都進行猜數字對錯判斷。如果猜對了,跳出循環(huán),輸出"恭喜,你答對了!",游戲結束。

④如果猜錯,這時使用if....else語句判斷,將錯誤分為猜大了和猜小了兩種結果。如果猜大了,打印"sorry,你猜大了!"繼續(xù)下一次循環(huán);如果猜小了,打印"sorry,你猜小了!"繼續(xù)下一次循環(huán)。根據結果,給出提示,接著繼續(xù)猜數字,游戲繼續(xù)。

實現代碼

 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循環(huán),進行猜數字對錯判斷
         //猜對,跳出循環(huán),游戲結束
         while(enterNumber!=randomNumber){
             //猜錯了,根據結果,給出提示,接著猜數字,游戲繼續(xù)
             if(enterNumber>randomNumber){
                 //猜大了給出的提示
                 System.out.println("sorry,你猜大了");
             }else{
                 //猜小了,給出的提示
                 System.out.println("sorry,你猜小了");
             }
             //輸入猜的數字
             System.out.println("請輸入你猜的數字");
             enterNumber = sc.nextInt();
         }
         System.out.println("恭喜你,答對了!");
     }
 }

總結

通過這兩個實例讓我們學習了如何去分析一個小的項目,如何劃分實現項目步驟以及如何用代碼去實現這個項目,并且通過演練一些比較有趣的小游戲可以增加我們對開發(fā)語言的興趣,為我們以后大的項目開發(fā)積累經驗,提升自身競爭力。

到此這篇關于Java實現斗地主與猜數字游戲詳細流程的文章就介紹到這了,更多相關Java游戲內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring Boot高級教程之Spring Boot連接MySql數據庫

    Spring Boot高級教程之Spring Boot連接MySql數據庫

    這篇文章主要為大家詳細介紹了Spring Boot高級教程之Spring Boot連接MySql數據庫,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Springboot基于Redisson實現Redis分布式可重入鎖源碼解析

    Springboot基于Redisson實現Redis分布式可重入鎖源碼解析

    這篇文章主要介紹了Springboot基于Redisson實現Redis分布式可重入鎖,本文通過案例源碼分析給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • Spring Boot2集成AOPLog來記錄接口訪問日志

    Spring Boot2集成AOPLog來記錄接口訪問日志

    這篇文章主要介紹了Spring Boot2集成AOPLog來記錄接口訪問日志,日志是一個Web項目中必不可少的部分,借助它我們可以做許多事情,比如問題排查、訪問統(tǒng)計、監(jiān)控告警等,需要的朋友可以參考下
    2019-06-06
  • IntelliJ IDEA設置JVM運行參數的操作方法

    IntelliJ IDEA設置JVM運行參數的操作方法

    這篇文章主要介紹了IntelliJ IDEA設置JVM運行參數的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-03-03
  • java中staticclass靜態(tài)類詳解

    java中staticclass靜態(tài)類詳解

    這篇文章主要介紹了java中staticclass靜態(tài)類詳解,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • Java利用ElasticSearch實現增刪改功能

    Java利用ElasticSearch實現增刪改功能

    這篇文章主要為大家詳細介紹了Java如何利用ElasticSearch實現增刪改功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-08-08
  • 簡單介紹Java編程中的線程池

    簡單介紹Java編程中的線程池

    這篇文章主要介紹了Java編程中的線程池,進程和線程的并發(fā)是Java編程中的重要環(huán)節(jié),需要的朋友可以參考下
    2015-09-09
  • 淺談Java中的URL和URLConnection

    淺談Java中的URL和URLConnection

    這篇文章主要介紹了淺談Java中的URL和URLConnection,URL代表的是一種資源,它使用的是統(tǒng)一資源定位格式, 其實我們還可以用URL來構造對象的,java中有大量的構造函數允許使用一個個的分串來指定URL,需要的朋友可以參考下
    2023-08-08
  • SpringBoot + Spring Security 基本使用及個性化登錄配置詳解

    SpringBoot + Spring Security 基本使用及個性化登錄配置詳解

    這篇文章主要介紹了SpringBoot + Spring Security 基本使用及個性化登錄配置詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • SpringBoot項目中只執(zhí)行一次的任務寫法實現

    SpringBoot項目中只執(zhí)行一次的任務寫法實現

    有時候我們需要進行初始化工作,就說明只要進行一次的工作,本文主要介紹了SpringBoot項目中只執(zhí)行一次的任務寫法實現,感興趣的可以了解一下
    2023-12-12

最新評論

固镇县| 贺州市| 民乐县| 西藏| 文水县| 锦屏县| 本溪| 诸城市| 淄博市| 大同市| 栾川县| 郧西县| 华池县| 光山县| 邻水| 新营市| 利辛县| 兴化市| 宜春市| 昔阳县| 泊头市| 阿城市| 行唐县| 清原| 梨树县| 阜城县| 香格里拉县| 山阳县| 山西省| 和平县| 桐梓县| 灵山县| 山东省| 青海省| 蒙山县| 绍兴市| 吴旗县| 金华市| 绿春县| 樟树市| 中方县|