java實現(xiàn)簡單石頭剪刀布小游戲
簡介
石頭剪刀布游戲,進入游戲后,玩家需要輸入玩家姓名。系統(tǒng)界面之后彈出歡迎界面,玩家可以選擇出拳或者退出游戲。玩家選擇出拳后同電腦出拳比較,輸出猜拳結(jié)果。最后退出游戲后顯示排行榜,輸出總局數(shù),勝率。
分析
通過while循環(huán)死循環(huán)模擬不斷進行游戲,當用戶輸入0時break跳出while循環(huán)。
通過Random產(chǎn)生隨機數(shù)模擬AI出拳
定義了一個choose方法,將用戶輸入和AI隨機生成的數(shù),轉(zhuǎn)換成剪刀、石頭和布。
判斷輸贏邏輯:
1:石頭 2:剪刀 3:布
變量userChoose中存儲的是用戶的出拳
變量ai中存儲的是電腦的出拳
當userChoose - ai 等于-1或2時,用戶贏
當userChoose - ai 等于0時,平局
當userChoose - ai 等于1或-2時,電腦贏
源代碼
public static void main(String[] args) { ? ? ? ? Scanner sc = new Scanner(System.in); ? ? ? ? Random r = new Random(); ? ? ? ? int count = 0; ? ?// 總局數(shù) ? ? ? ? int win = 0; ? ?// 獲勝局數(shù) ? ? ? ? int result = 0; ? ?// 結(jié)果 ? ? ? ? int ai = 0; ? ?// 電腦出拳 ? ? ? ? System.out.print("請輸入姓名:"); ? ? ? ? String name = sc.nextLine(); ? ? ? ? while(flag) { ? ? ? ? ? ? System.out.println("************************************************"); ? ? ? ? ? ? System.out.println("歡迎"+ name + "進入猜拳游戲"); ? ? ? ? ? ? System.out.println("1.石頭 ? ? 2.剪刀 ? ? 3.布 ? ? 0.退出"); ? ? ? ? ? ? System.out.println("************************************************"); ? ? ? ? ? ? System.out.print("請輸入數(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++; ? ?// 用戶贏,贏場計數(shù)器自增1 ? ? ? ? ? ? ? ? ? ? count++; ? ?// 局數(shù)計數(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總局數(shù)\t\t贏場\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 ""; }
游戲截圖
進入游戲輸入姓名,顯示菜單:
用戶出石頭:
用戶出剪刀:
用戶出布:
輸入0游戲結(jié)束:
總結(jié)
本程序是學習中的一個小案例,目前程序比較基礎(chǔ),只能記錄一個玩家的信息,且數(shù)據(jù)不能存在本地。作者是在校的一名學生,目前技術(shù)有限,如有考慮不周,請各路大神批評指正,共同學習。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java SelectableChannel的使實例用法講解
在本篇文章里小編給大家整理的是一篇關(guān)于java SelectableChannel的使實例用法講解內(nèi)容,有興趣的朋友們可以學習下。2021-03-03Java swing實現(xiàn)音樂播放器桌面歌詞字體變色效果
這篇文章主要為大家詳細介紹了Java swing實現(xiàn)音樂播放器桌面歌詞字體變色效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06