使用面向對象的編程思想設計編寫一個猜拳游戲,實現玩家和電腦猜拳的過程,玩家和電腦都具備猜拳方法,玩家的出拳使用鍵盤輸入實現,電腦出拳使用隨機數,、
要求:每個回合雙方各處一次拳,每個回合結束后系統提示結果信息並提示玩家是否要繼續,退出游戲打印呈現游戲的結果(游戲總局,玩家獲勝、平、輸的次數,玩家勝率),通過勝率決定最終的勝利
玩家類
/** *玩家類 */ public class Player{ int winCount; int drawCount; Scanner sc; /** *玩家初始化 */ public void int(){ //將實例化寫入方法中,在使用是只用調用一次,不用多次new sc=new Scanner(System.in); } /** *玩家出拳的方法 */ public int showFinger(){ System.out.println("請選擇您的出拳:1代表石頭,2代表剪刀,3代表布"); int result=sc.nextInt(); return result; } }
電腦類
/** * 電腦類 */ public class Computer(){ Random random; /** * 電腦類初始化 */ public void init(){ random=new Random(); } /** *電腦出拳的方法 */ public int showFinger(){ //生成0-2加上1,即1-3(不用變量接收,直接返回) return random.nextInt(3)+1; } }
游戲類(封裝了游戲的完整過程)
public class Game{ //玩家對象 Player player; //電腦對象 Computer computer; //記錄總局數 int count; Scanner sc; /** * 初始化方法 */ public void init(){ //實例化玩家對象 player=new Player(); //初始化玩家 player.init(); //實例化電腦對象 computer=new Computer(); //初始化電腦 computer.init(); sc=new Scanner(System.in); //初始化總局數 count=0; } /** * 將出拳數字改為字符串的方法 */ public String changeToString(int result){ String str=""; switch(result){ case 1: str="石頭" break; case 2: str="剪刀" break; case 3: str="布" break; } return str; } /** * 描述游戲邏輯的方法 */ public void start(){ String answer; do{ //進入一次循環就總局數加一 count++; //調用玩家出拳的方法 int playerResult=player.showFinger(); //將出拳結果數字改為String System.out.println("玩家出拳:"+changeToString(playerResult)); //調用電腦出拳的方法 int computerResult=player.showFinger(); //將出拳結果數字改為String System.out.println("玩家出拳:"+changeToString(computerResult)); //玩家勝 if(playerResult==1;computerResult==2||playerResult==2;computerResult==3||playerResult==3;computerResult==1){ System.out.println("玩家贏了"); } //平局 else if(playerResult==computerResult) System.out.println("平局"); } //玩家輸 else(playerResult==computerResult) System.out.println("玩家輸了"); } System.out.println("是否繼續游戲:y/n"); answer=sc.next(); }while(answer.equals("y")); } /** * 顯示游戲結果的方法 */ public void showResult(){ //輸的次數 int loseCount=count-player.winCount-player.drawCount; System.out.println("游戲總場數:"+count); System.out.println("勝局:"+player.winCount); System.out.println("平局:"+player.drawCount); System.out.println("敗局:"+loseCount); System.out.println("勝率:"+(int)(player.winCount/(double)(count*100))+"%"); if(winCount>loseCount){ System.out.println("恭喜獲得最終勝利!"); } else if(winCount=loseCount){ System.out.println("平局"); } else if(winCount<loseCount){ System.out.println("很遺憾,您輸了!"); } }
啟動游戲的APP
public class GameAPP{ public static void main(String[] args){ //實例化游戲類 Game game=new Game(); //調用初始化方法 game.init(); //調用游戲邏輯開始的方法 game.start(); } }