java面對物件猜拳小遊戲
阿新 • • 發佈:2018-12-18
我覺的初學面對物件,首先是思路很重要。我寫的這個猜拳小遊戲,我覺得對於我的思路有幫助,需要的可以參考下
一共四個類
- 1:玩家類
- 2:電腦類
- 3:遊戲過程類
- 4:測試類
玩家類
public class Person { // 使用者類的屬性 public String pname;// 姓名 public int pscore;// 積分 public void showquan(int pnum) { switch(pnum) { case 1: System.out.println("你出拳為:剪刀"); break; case 2: System.out.println("你出拳為:石頭"); break; case 3: System.out.println("你出拳為:布"); break; default: System.out.println("輸入錯誤!"); } } }
電腦類
public class Computer { public String cname; public int cscore; public void show(int cnum) { switch(cnum) { case 1: System.out.println(cname+"出拳: 剪刀"); break; case 2: System.out.println(cname+"出拳: 石頭"); break; case 3: System.out.println(cname+"出拳: 布"); break; default: System.out.println("輸入有誤,請重新輸入!"); } } }
遊戲過程類
// 導包 import java.util.Random; import java.util.Scanner; public class Game { // 輸入資料的例項化物件 Scanner scan=new Scanner(System.in); // 存放電腦玩家資訊的陣列,陣列型別為我們的Computer類 Computer[] arr=new Computer[3]; // 例項化物件Person玩家類 Person p=new Person(); // 隨機數的例項化物件 Random ran=new Random(); /** * 電腦類的初始化 * 給電腦類建立一個電腦類的陣列,給其初始化 * 給其建立三個物件 賦值 給電腦型別的陣列arr */ public void initial() { // 需要注意的是這裡是建立的三個物件,所以需要電腦類的三次例項化物件 // 第一個電腦物件為 劉備 Computer c=new Computer(); c.cname="劉備"; arr[0]=c; // 第二個例項化物件為孫權 c=new Computer(); c.cname="孫權"; arr[1]=c; // 第三個電腦類例項化物件為 曹操 c=new Computer(); c.cname="曹操"; arr[2]=c; } /** * 遊戲的開始方法 * 放置的是我們整個的流程 */ public void startGame() { // 呼叫 本類中的開始選單 startMenu(); System.out.println("出拳規則:1.剪刀2.石頭3.布"); System.out.print("請選擇對方角色(1:劉備2:孫權3:曹操):"); // 選擇電腦角色 int num=scan.nextInt(); // 輸出選擇的是哪一個物件 System.out.println("你選擇了"+computerObject(num).cname+"對戰"); // 提示選擇是否開始 System.out.print("要開始嗎?(y/n):"); String choose=scan.next(); if("n".equals(choose)) { // 當選擇為n的時候也就是程式結束的時候。 // 程式結束的時候,需要注意的是推出的這個方法 // 使用 return來退出本方法 System.out.println("程式結束,歡迎下次使用!"); return ; } // 因為 不一定進行幾次遊戲,所以使用while的死迴圈來進行遊戲 // count 用來計數,一共進行了幾輪遊戲 int count=0; while(true) { // 呼叫 start的方法,一次猜拳的過程的方法 start(num); count+=1; // 提示是否進行下一輪 System.out.print("是否開始下一輪?(y/n):"); String choose1=scan.next(); if("n".equals(choose1)) { // 最後選擇不繼續玩的時候需要輸出下最後的積分,以及最後的結果 showResult(num,count); System.out.println("111程式結束,歡迎下次使用!"); return; } } } /** * 開始的選單方法 */ public void startMenu() { // 初始 選單介面 System.out.println("***************歡迎進入遊戲世界*****************"); System.out.println(); System.out.println(" *****************"); System.out.println(" ** 猜拳,開始 **"); System.out.println(" *****************"); System.out.println(); } /** * 這是返回我們玩家選擇 的是那個電腦物件 * @param num // 玩家選擇的是那個對應電腦角色的數字 * @return // 玩家選擇的是哪一個電腦物件 */ public Computer computerObject(int num) { // 因為是幾個選擇項,所以使用switch來選擇 switch(num) { case 1: return arr[0]; case 2: return arr[1]; case 3: return arr[2]; default: return null; } } /** * 一次猜拳的過程方法 * 玩家出拳以及電腦出拳,以及勝負和電腦玩家的積分 * 贏一次積一分,輸或者平局都不積分 * @param num */ public void start(int num) { System.out.print("請出拳:1.剪刀2.石頭3.布(輸入相對應的數字):"); int pnum=scan.nextInt(); //呼叫玩家的例項化物件 的showquan方法,輸出下玩家的出拳 p.showquan(pnum); // 電腦出拳,方式是隨機1-3之間的隨機數 int cnum=ran.nextInt(3)+1; computerObject(num).show(cnum); // 兩個出拳比較 compare(num,pnum,cnum); } /** * 比較玩家與電腦誰贏的方法 * 數字的對應關係: * 1: 剪刀 2:石頭 3:布 * @param num 決定電腦物件的數字 * @param pnum 玩家出拳對應的數字 * @param cnum 電腦出拳對應的數字 */ public void compare(int num,int pnum,int cnum) { if(pnum==cnum) { System.out.println("結果說:和局.真衰!嘿嘿,等著瞧吧"); }else if( pnum-cnum==1 || cnum-pnum==2) { System.out.println("結果說:恭喜恭喜,你贏了!"); //玩家獲勝的時候,玩家積分增加一分 p.pscore+=1; }else { System.out.println("結果說:你輸了,真笨"); // 電腦獲勝的時候,電腦加一分 computerObject(num).cscore+=1; } } /** * 最後顯示最終結果的方法 * @param num // 玩家選擇電腦角色對應的數字 * @param count // 對戰的次數 */ public void showResult(int num,int count) { System.out.print("請輸入你的姓名:"); String pname=scan.next(); p.pname=pname; System.out.println(p.pname+" VS "+computerObject(num).cname); System.out.println("對戰次數:"+count+"次"); System.out.println(); System.out.println("姓名\t得分"); System.out.println(p.pname+"\t"+p.pscore); System.out.println(computerObject(num).cname+"\t"+computerObject(num).cscore); if(p.pscore>computerObject(num).cscore) { System.out.println("最後的結果:恭喜恭喜!你獲勝了"); }else if(p.pscore==computerObject(num).cscore) { System.out.println("最後的結果:可惜可惜,平局"); }else { System.out.println("最後的結果,惜敗惜敗"); } } }
測試類Test
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 例項化物件
Game g=new Game();
// 初始化電腦類的資訊
g.initial();
// 開始遊戲
g.startGame();
}
}