java實(shí)現(xiàn)簡(jiǎn)單石頭剪刀布小游戲
簡(jiǎn)介
石頭剪刀布游戲,進(jìn)入游戲后,玩家需要輸入玩家姓名。系統(tǒng)界面之后彈出歡迎界面,玩家可以選擇出拳或者退出游戲。玩家選擇出拳后同電腦出拳比較,輸出猜拳結(jié)果。最后退出游戲后顯示排行榜,輸出總局?jǐn)?shù),勝率。
分析
通過while循環(huán)死循環(huán)模擬不斷進(jìn)行游戲,當(dāng)用戶輸入0時(shí)break跳出while循環(huán)。
通過Random產(chǎn)生隨機(jī)數(shù)模擬AI出拳
定義了一個(gè)choose方法,將用戶輸入和AI隨機(jī)生成的數(shù),轉(zhuǎn)換成剪刀、石頭和布。
判斷輸贏邏輯:
1:石頭 2:剪刀 3:布
變量userChoose中存儲(chǔ)的是用戶的出拳
變量ai中存儲(chǔ)的是電腦的出拳
當(dāng)userChoose - ai 等于-1或2時(shí),用戶贏
當(dāng)userChoose - ai 等于0時(shí),平局
當(dāng)userChoose - ai 等于1或-2時(shí),電腦贏
源代碼
public static void main(String[] args) { ? ? ? ? Scanner sc = new Scanner(System.in); ? ? ? ? Random r = new Random(); ? ? ? ? int count = 0; ? ?// 總局?jǐn)?shù) ? ? ? ? int win = 0; ? ?// 獲勝局?jǐn)?shù) ? ? ? ? int result = 0; ? ?// 結(jié)果 ? ? ? ? int ai = 0; ? ?// 電腦出拳 ? ? ? ? System.out.print("請(qǐng)輸入姓名:"); ? ? ? ? String name = sc.nextLine(); ? ? ? ? while(flag) { ? ? ? ? ? ? System.out.println("************************************************"); ? ? ? ? ? ? System.out.println("歡迎"+ name + "進(jìn)入猜拳游戲"); ? ? ? ? ? ? System.out.println("1.石頭 ? ? 2.剪刀 ? ? 3.布 ? ? 0.退出"); ? ? ? ? ? ? System.out.println("************************************************"); ? ? ? ? ? ? System.out.print("請(qǐng)輸入數(shù)字:"); ? ? ? ? ? ? int userChoose = sc.nextInt(); ? ?// 玩家選擇 ? ? ? ? ? ? if (userChoose == 0) { ? ?// 游戲結(jié)束 ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? ? ? // AI出拳 ? ? ? ? ? ? ai = r.nextInt(3)+1; ? ? ? ? ? ? // 輸出玩家和電腦的出拳 ? ? ? ? ? ? System.out.println("你的出拳是:" + choose(userChoose)); ? ? ? ? ? ? System.out.println("電腦出拳是:" + choose(ai)); ? ? ? ? ? ? // 判斷輸贏 ? ? ? ? ? ? switch(userChoose - ai) { ? ? ? ? ? ? ? ? case -1: ? ?// 贏 ? ? ? ? ? ? ? ? case 2: ? ? ? ? ? ? ? ? ? ? System.out.println("你贏了! ╭(╯^╰)╮"); ? ? ? ? ? ? ? ? ? ? win++; ? ?// 用戶贏,贏場(chǎng)計(jì)數(shù)器自增1 ? ? ? ? ? ? ? ? ? ? count++; ? ?// 局?jǐn)?shù)計(jì)數(shù)器自增1 ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case 0: ? ?// 平局 ? ? ? ? ? ? ? ? ? ? System.out.println("平局,再來一局~~~~~o(* ̄︶ ̄*)o"); ? ? ? ? ? ? ? ? ? ? count++; ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case 1: ? ?// 輸 ? ? ? ? ? ? ? ? case -2: ? ? ? ? ? ? ? ? ? ? System.out.println("你輸了! O(∩_∩)O哈哈~"); ? ? ? ? ? ? ? ? ? ? count++; ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? ? ? System.out.println("\n"); ? ? ? ? } ? ? ? ? System.out.println(); ? ? ? ? System.out.println("\t\t\t\t排行榜"); ? ? ? ? System.out.println("************************************************"); ? ? ? ? System.out.println("姓名\t\t總局?jǐn)?shù)\t\t贏場(chǎng)\t\t勝率"); ? ? ? ? System.out.println(name + "\t\t" + count + "\t\t\t" + win + "\t\t\t" + String.format("%.2f", (win*1.0/count)*100) + "%"); ? ? } ? ? // 返回出拳 ? ? public static String choose(int choose) { ? ? ? ? switch(choose) { ? ? ? ? ? ? case 1: ? ? ? ? ? ? ? ? return "石頭"; ? ? ? ? ? ? case 2: ? ? ? ? ? ? ? ? return "剪刀"; ? ? ? ? ? ? case 3: ? ? ? ? ? ? ? ? return "布"; ? ? ? ? } ? ? ? ? return ""; }
游戲截圖
進(jìn)入游戲輸入姓名,顯示菜單:
用戶出石頭:
用戶出剪刀:
用戶出布:
輸入0游戲結(jié)束:
總結(jié)
本程序是學(xué)習(xí)中的一個(gè)小案例,目前程序比較基礎(chǔ),只能記錄一個(gè)玩家的信息,且數(shù)據(jù)不能存在本地。作者是在校的一名學(xué)生,目前技術(shù)有限,如有考慮不周,請(qǐng)各路大神批評(píng)指正,共同學(xué)習(xí)。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
idea gradle項(xiàng)目復(fù)制依賴小技巧(推薦)
這篇文章主要介紹了idea gradle項(xiàng)目復(fù)制依賴小技巧,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11java SelectableChannel的使實(shí)例用法講解
在本篇文章里小編給大家整理的是一篇關(guān)于java SelectableChannel的使實(shí)例用法講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-03-03Java swing實(shí)現(xiàn)音樂播放器桌面歌詞字體變色效果
這篇文章主要為大家詳細(xì)介紹了Java swing實(shí)現(xiàn)音樂播放器桌面歌詞字體變色效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06JAVA區(qū)間值判斷[10,20)的實(shí)現(xiàn)
本文主要介紹了JAVA區(qū)間值判斷[10,20)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09springboot如何使用AOP做訪問請(qǐng)求日志
這篇文章主要介紹了springboot如何使用AOP做訪問請(qǐng)求日志,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01