Java實(shí)現(xiàn)人機(jī)猜拳小游戲
本文實(shí)例完成人機(jī)猜拳互動(dòng)游戲的開發(fā),供大家參考,具體內(nèi)容如下
階段一:實(shí)驗(yàn)——分析業(yè)務(wù),創(chuàng)建用戶類
1.分析業(yè)務(wù),抽象出類、類的特征和行為
2.創(chuàng)建出用戶類
階段二:實(shí)驗(yàn)——?jiǎng)?chuàng)建出計(jì)算機(jī)類
1.創(chuàng)建計(jì)算機(jī)類Computer。實(shí)現(xiàn)計(jì)算機(jī)出拳
2.產(chǎn)生一個(gè)1—3的隨機(jī)數(shù),模擬計(jì)算機(jī)的出拳結(jié)果
階段三:實(shí)驗(yàn)——?jiǎng)?chuàng)建游戲類,選擇對(duì)戰(zhàn)對(duì)手
1.創(chuàng)建游戲類Game
2.編寫游戲類的初始化方法initial()
3.編寫游戲類的開始游戲方法startGame()
階段四:實(shí)驗(yàn)——實(shí)現(xiàn)一局對(duì)戰(zhàn)
分別調(diào)用用戶類和計(jì)算機(jī)類的出拳方法showFist(),接受返回值并比較,給出勝負(fù)結(jié)果
階段五:實(shí)驗(yàn)——實(shí)現(xiàn)循環(huán)對(duì)戰(zhàn),并累計(jì)得分
實(shí)現(xiàn)循環(huán)對(duì)戰(zhàn),并且累加贏家的得分
階段六:實(shí)驗(yàn)——顯示對(duì)戰(zhàn)結(jié)果
游戲結(jié)束后,顯示對(duì)戰(zhàn)結(jié)果
編寫showResult()方法,比較二者的得分情況,給出對(duì)戰(zhàn)結(jié)果
階段七:實(shí)驗(yàn)——完善游戲類的startGame()
輸入并保存用戶姓名,游戲結(jié)束后顯示雙方的各自得分
Game.java
import java.util.Scanner; public class Game { Scanner sc = new Scanner(System.in); User User;//用戶玩家 Computer Computer;//電腦玩家 int count;//對(duì)戰(zhàn)次數(shù) int score;//分?jǐn)?shù) //游戲類的初始化方法 public void initial(){ //創(chuàng)建用戶對(duì)象 User= new User(); //創(chuàng)建電腦對(duì)象 Computer = new Computer(); //初始化對(duì)戰(zhàn)次數(shù)為0 count = 0; } //開始游戲的方法 public void startGame(){ System.out.println("--------------------歡迎進(jìn)入游戲世界-----------------------\n\n"); System.out.println("\t\t*******************"); System.out.println("\t\t** 猜拳,開始 **"); System.out.println("\t\t*******************\n\n"); System.out.println("出拳規(guī)則:1.石頭 2.剪刀 3.布"); System.out.print("請(qǐng)選著對(duì)方角色(1:劉備 2:孫權(quán) 3:曹操)"); int choose = sc.nextInt();//接收用戶選擇的角色 switch(choose){ case 1: Computer.computerName = "劉備";//把值賦給電腦類的name System.out.println("你選擇了"+Computer.computerName+"對(duì)戰(zhàn)"); break; case 2: Computer.computerName = "孫權(quán)"; System.out.println("你選擇了"+Computer.computerName+"對(duì)戰(zhàn)"); break; case 3: Computer.computerName = "曹操"; System.out.println("你選擇了"+Computer.computerName+"對(duì)戰(zhàn)"); break; default: System.out.println("輸入有誤!"); break; } System.out.println("請(qǐng)輸入你的姓名:"); User.userName = sc.next(); System.out.println("要開始嗎(y/n)"); String con = sc.next(); if(con.equals("n")){//如果不開始輸入"n"的話 就提示退出 System.out.println("系統(tǒng)退出!"); } int perFist;//用戶出的拳 int comFist;//計(jì)算機(jī)出的拳 while(con.equals("y")){ //出拳 perFist = User.showFirst();//調(diào)用用戶類的方法 comFist = Computer.chuQuan();//調(diào)用電腦類的方法 //裁決 if((perFist == 1 && comFist == 1) || (perFist == 2 && comFist == 2) || (perFist == 3 && comFist == 3)){ System.out.println("結(jié)果:和局,真衰!");//平局 }else if((perFist == 1 && comFist == 3) || (perFist == 2 && comFist == 1) || (perFist == 3 && comFist == 2)){ System.out.println("You lost!");//用戶輸了 System.out.println("結(jié)果:你被KO"); Computer.score++;//記錄電腦贏的分?jǐn)?shù) }else{ System.out.println("You win!");//用戶贏了 System.out.println("結(jié)果:恭喜,你贏了!"); User.score++;//記錄用戶贏的分?jǐn)?shù) } count++;//對(duì)戰(zhàn)次數(shù)依次加一 System.out.println("是否進(jìn)入下一輪(y/n)"); con = sc.next(); } //如果結(jié)束 則顯示最后的結(jié)果 showResult(); } //顯示最后的輸出結(jié)果 public void showResult(){ System.out.println("------------------------------------------------"); System.out.println(Computer.computerName+"\tVS\t"+User.userName); System.out.println("對(duì)戰(zhàn)次數(shù):"+count); System.out.println("姓名"+"\t"+"積分"); System.out.println(User.userName+"\t"+User.score); System.out.println(Computer.computerName+"\t"+Computer.score); if(User.score>Computer.score){//如果用戶的分?jǐn)?shù)大于電腦的分?jǐn)?shù) 則用戶贏 System.out.println(User.userName+"贏了!"); }else{ System.out.println(Computer.computerName+"贏了!"); } System.out.println("-------------------------------------------------"); } }
User.java
import java.util.Scanner; public class User { String userName;//用戶名 int score;//積分 public int showFirst() { System.out.print("請(qǐng)出拳:1.剪刀2.石頭3.布(輸入相應(yīng)的數(shù)字):"); Scanner sc = new Scanner(System.in); int choice = sc.nextInt(); switch(choice) { case 1: System.out.println("你出拳:石頭"); break; case 2: System.out.println("你出拳:剪刀"); break; case 3: System.out.println("你出拳:布"); break; default: System.out.println("輸入錯(cuò)誤!"); break; } return choice; } }
Computer.java
import java.util.Scanner; public class Computer { String computerName;//電腦名 int score;//電腦積分 public int chuQuan() { int random =(int)(Math.random()*3)+1; switch(random) { case 1: System.out.println(computerName+"出拳:石頭"); break; case 2: System.out.println(computerName+"出拳:剪刀"); break; case 3: System.out.println(computerName+"出拳:布"); break; default: System.out.println("輸入有錯(cuò),請(qǐng)重新輸入:"); break; } return random; } }
Main.java
public class Main { public static void main(String[] args) { Game g = new Game(); g.initial();//調(diào)用初始化方法 g.startGame();//調(diào)用開始游戲的方法 } }
總的來說,User和Computer類比較好寫,就是Game類要求比較多,但是按照步驟一步一步走穩(wěn),就不會(huì)有太大的問題,但是注意name和score這兩個(gè)在兩個(gè)類中都可以出現(xiàn),但是要注意區(qū)分,給讀者客觀上有一種提示。最后,Main中,可以不用再去初始化或者創(chuàng)建一個(gè)新的對(duì)象,直接調(diào)用前面那一系列方法就行,寫的越多,錯(cuò)的幾率就越大。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java實(shí)現(xiàn)多人聊天工具(socket+多線程)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)多人聊天工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08java map中相同的key保存多個(gè)value值方式
這篇文章主要介紹了java map中相同的key保存多個(gè)value值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Java中基于maven實(shí)現(xiàn)zxing二維碼功能
這篇文章主要介紹了Java中基于maven實(shí)現(xiàn)zxing二維碼功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02Druid關(guān)閉監(jiān)控頁面關(guān)閉不了的問題及解決
這篇文章主要介紹了Druid關(guān)閉監(jiān)控頁面關(guān)閉不了的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(9)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07一文了解MyBatis Plus批量數(shù)據(jù)插入功能
mybatisPlus底層的新增方法是一條一條的新增的,下面這篇文章主要給大家介紹了MyBatis Plus批量數(shù)據(jù)插入功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09SpringMVC中使用bean來接收form表單提交的參數(shù)時(shí)的注意點(diǎn)
本篇文章主要介紹了SpringMVC中使用bean來接收form表單提交的參數(shù)時(shí)的注意點(diǎn),具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-05-05