亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java實(shí)現(xiàn)斗地主與猜數(shù)字游戲詳細(xì)流程

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

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

任務(wù)描述

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

運(yùn)行結(jié)果  

 

任務(wù)目標(biāo)

  • 學(xué)會(huì)分析"斗地主小游戲之洗牌發(fā)牌"程序的實(shí)現(xiàn)思路。
  • 能夠根據(jù)思路獨(dú)立完成"斗地主小游戲之洗牌發(fā)牌"程序的代碼編寫(xiě),編譯及運(yùn)行。
  • 掌握ArrayList和HashMap集合的特點(diǎn)以及增強(qiáng)for循環(huán)的使用。

實(shí)現(xiàn)思路

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

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

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

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

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

實(shí)現(xiàn)代碼

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) {
         //準(zhǔn)備花色
         ArrayList<String>color=new ArrayList<String >();
         color.add("黑桃");
         color.add("紅桃");
         color.add("方塊");
         color.add("梅花");
         //準(zhǔn)備數(shù)字,用列表將紙牌從大到小排列
         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");
         //定義一個(gè)map集合,用來(lái)將數(shù)字與每一張紙牌進(jìn)行對(duì)應(yīng)
         HashMap<Integer,String>map=new HashMap<Integer,String>();
         //紙牌編號(hào)
         int index=0;
         //循環(huán)紙牌數(shù)字
         for(String thisNumber:number){
             //循環(huán)紙牌花色
             for(String thisColor:color){
                 //將花色與數(shù)字組合,形成52張牌,并賦予編號(hào)
                 map.put(index++,thisColor+thisNumber);
             }
         }
         map.put(index++,"小王");
         map.put(index++,"大王");
         //創(chuàng)建0-53的數(shù)字集合代表54張牌
         ArrayList<Integer>cards=new ArrayList<Integer>();
         for(int i=0;i<=53;i++){
             cards.add(i);
         }
         //洗牌,使用Collections工具類(lèi)的shuffle()方法
         Collections.shuffle(cards);
         //創(chuàng)建三個(gè)玩家和底牌
         ArrayList<Integer>iPlayer=new ArrayList<Integer>();
         ArrayList<Integer>iPlayer2=new ArrayList<Integer>();
         ArrayList<Integer>iPlayer3=new ArrayList<Integer>();
         ArrayList<Integer>iSecretCards=new ArrayList<Integer>();
         //遍歷這副洗好的牌,遍歷的過(guò)程中,將牌發(fā)到三個(gè)玩家和底牌中
         for(int i=0;i<cards.size();i++){
             if(i>=51){
                 //留取三個(gè)底牌
                 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));
                 }
             }
         }
         //對(duì)每個(gè)人手中的牌進(jìn)行排序,使用的使Collections工具類(lèi)中的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ā)的牌顯示出來(lái)
         System.out.println("玩家1:"+sPlayer);
         System.out.println("玩家2:"+sPlayer2);
         System.out.println("玩家3:"+sPlayer3);
         System.out.println("底牌:"+sSectCards);
     }
 }

猜數(shù)字游戲

任務(wù)描述

編寫(xiě)一個(gè)猜數(shù)字游戲,這個(gè)游戲就是"你出個(gè)數(shù)字,我來(lái)猜",程序后臺(tái)預(yù)先生成一個(gè)0-9的隨機(jī)數(shù),用戶(hù)鍵盤(pán)錄入一個(gè)所猜的數(shù)字,如果輸入的數(shù)字與后臺(tái)預(yù)先生成的數(shù)字相同,則表示猜對(duì)了,這時(shí),程序會(huì)打印出"恭喜,答對(duì)了",如果不相同,則比較輸入的數(shù)字和后臺(tái)預(yù)先生成的數(shù)字的大小,如果大了,打印"sorry,你猜大了!";如果小了,會(huì)打印"sorry,你猜小了";如果一直猜錯(cuò),則游戲一直進(jìn)行下去,直到數(shù)字猜對(duì)為止。

運(yùn)行結(jié)果

  

任務(wù)目標(biāo)

  • 學(xué)會(huì)分析"猜數(shù)字游戲"程序的實(shí)現(xiàn)思路。
  • 根據(jù)思路獨(dú)立完成"猜數(shù)字游戲"的源代碼編寫(xiě),編譯和運(yùn)行。
  • 掌握在程序中使用if選擇結(jié)構(gòu)和while循環(huán)結(jié)構(gòu)語(yǔ)句進(jìn)行運(yùn)算操作。

實(shí)現(xiàn)思路

①要實(shí)現(xiàn)這個(gè)功能,首先程序要在后臺(tái)預(yù)先生成一個(gè)0-9的隨機(jī)數(shù),生成隨機(jī)數(shù)可以使用Random類(lèi)中的nextInt(int n)方法,其具體的定義如下:

 public int nextInt(int n)

②要使用鍵盤(pán)輸入所猜的數(shù)字,可以使用Scanner類(lèi),可以讓用戶(hù)從鍵盤(pán)中輸入數(shù)字。

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

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

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

實(shí)現(xiàn)代碼

 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("隨機(jī)數(shù)已經(jīng)生成");
         System.out.println("請(qǐng)輸入你所猜的數(shù)字");
         Scanner sc =new Scanner(System.in);
         int enterNumber =sc.nextInt();
         //通過(guò)while循環(huán),進(jìn)行猜數(shù)字對(duì)錯(cuò)判斷
         //猜對(duì),跳出循環(huán),游戲結(jié)束
         while(enterNumber!=randomNumber){
             //猜錯(cuò)了,根據(jù)結(jié)果,給出提示,接著猜數(shù)字,游戲繼續(xù)
             if(enterNumber>randomNumber){
                 //猜大了給出的提示
                 System.out.println("sorry,你猜大了");
             }else{
                 //猜小了,給出的提示
                 System.out.println("sorry,你猜小了");
             }
             //輸入猜的數(shù)字
             System.out.println("請(qǐng)輸入你猜的數(shù)字");
             enterNumber = sc.nextInt();
         }
         System.out.println("恭喜你,答對(duì)了!");
     }
 }

總結(jié)

通過(guò)這兩個(gè)實(shí)例讓我們學(xué)習(xí)了如何去分析一個(gè)小的項(xiàng)目,如何劃分實(shí)現(xiàn)項(xiàng)目步驟以及如何用代碼去實(shí)現(xiàn)這個(gè)項(xiàng)目,并且通過(guò)演練一些比較有趣的小游戲可以增加我們對(duì)開(kāi)發(fā)語(yǔ)言的興趣,為我們以后大的項(xiàng)目開(kāi)發(fā)積累經(jīng)驗(yàn),提升自身競(jìng)爭(zhēng)力。

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

相關(guān)文章

  • Java FTPClient實(shí)現(xiàn)文件上傳下載

    Java FTPClient實(shí)現(xiàn)文件上傳下載

    這篇文章主要為大家詳細(xì)介紹了Java FTPClient實(shí)現(xiàn)文件上傳下載的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • JAVA8 List<List<Integer>> list中再裝一個(gè)list轉(zhuǎn)成一個(gè)list操作

    JAVA8 List<List<Integer>> list中再裝一個(gè)list轉(zhuǎn)成一個(gè)list操

    這篇文章主要介紹了JAVA8 List<List<Integer>> list中再裝一個(gè)list轉(zhuǎn)成一個(gè)list操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • ConcurrentHashMap?存儲(chǔ)結(jié)構(gòu)源碼解析

    ConcurrentHashMap?存儲(chǔ)結(jié)構(gòu)源碼解析

    這篇文章主要為大家介紹了ConcurrentHashMap?存儲(chǔ)結(jié)構(gòu)源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 一文搞懂Java項(xiàng)目中枚舉的定義與使用

    一文搞懂Java項(xiàng)目中枚舉的定義與使用

    枚舉就是用enum修飾是一種Java特殊的類(lèi),枚舉是class、底層是繼承了java.lang.Enum類(lèi)的實(shí)體類(lèi)。本文將詳解枚舉的定義與使用,需要的可以參考一下
    2022-06-06
  • SpringBoot攔截器與文件上傳實(shí)現(xiàn)方法與源碼分析

    SpringBoot攔截器與文件上傳實(shí)現(xiàn)方法與源碼分析

    其實(shí)spring boot攔截器的配置方式和springMVC差不多,只有一些小的改變需要注意下就ok了。本文主要給大家介紹了關(guān)于如何在Springboot實(shí)現(xiàn)登陸攔截器與文件上傳功能,需要的朋友可以參考下
    2022-10-10
  • Spring Boot整合郵件發(fā)送與注意事項(xiàng)

    Spring Boot整合郵件發(fā)送與注意事項(xiàng)

    這篇文章主要給大家介紹了關(guān)于Spring Boot整合郵件發(fā)送與注意事項(xiàng)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • Spring Bean裝載方式代碼實(shí)例解析

    Spring Bean裝載方式代碼實(shí)例解析

    這篇文章主要介紹了Spring Bean裝載方式代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java8的Stream()與ParallelStream()的區(qū)別說(shuō)明

    Java8的Stream()與ParallelStream()的區(qū)別說(shuō)明

    這篇文章主要介紹了Java8的Stream()與ParallelStream()的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Mybatis中 SQL語(yǔ)句復(fù)用

    Mybatis中 SQL語(yǔ)句復(fù)用

    這篇文章主要介紹了Mybatis中 SQL語(yǔ)句復(fù)用,需要的朋友可以參考下
    2017-03-03
  • WebService教程詳解(一)

    WebService教程詳解(一)

    WebService,顧名思義就是基于Web的服務(wù)。它使用Web(HTTP)方式,接收和響應(yīng)外部系統(tǒng)的某種請(qǐng)求,接下來(lái)通過(guò)本文給大家介紹WebService教程詳解(一),對(duì)webservice教程感興趣的朋友一起學(xué)習(xí)吧
    2016-03-03

最新評(píng)論