猜拳遊戲,利用面向物件
阿新 • • 發佈:2018-12-11
猜拳遊戲專案
專案功能點:
1)猜拳遊戲,每一把遊戲進行三局,可以玩多把,每一局贏者積一分,輸者不扣分,平局不計分,三局決勝負。
2)兩人進行猜拳遊戲。可以隨機選取要比賽的對手。
考察知識點:
Java類和物件
設計思路:
1) 有兩方,甲方:玩家(Player) 乙方:電腦(Computer)模擬 進行猜拳遊戲
2) 猜拳開始:贏者積一分,平局不計分,輸者不扣分。每次三局決勝負
3) 每一把遊戲決定最終的勝負,繼續下一輪遊戲的開始。
package FingerGuess; /** * Description:常量類 * * @Author Fann * @Data 2018/12/8 */ public class Constant { public static final int ROCK = 0;//A代表石頭 public static final int SCISSORS = 1;//B代表剪刀 public static final int PAPER = 2;//C代表布 }
package FingerGuess; import java.util.Random; import java.util.Scanner; /** * Description: * * @Author Fann * @Data 2018/12/8 */ public class GuessFingerGame { public int score_Player; //玩家分數 public int score_Computer;//電腦分數 Scanner in = new Scanner( System.in ); //用來讓玩家輸入 Random random = new Random( ); //隨機產生當作電腦出的拳 //遊戲開始,進行三次. public void gameStart() throws Exception { System.out.println("遊戲開始:-----------------"); for (int i = 0; i < 3; i++) { System.out.println("玩家第"+i+"次出拳(輸入0代表石頭,輸入1代表剪刀,輸入2代表布):"); int player = in.nextInt(); int computer = random.nextInt(3); //0-2 if(computer == Constant.ROCK){ System.out.println("電腦出拳為:0(石頭)"); }else if(computer == Constant.SCISSORS){ System.out.println("電腦出拳為:1(剪刀)"); }else{ System.out.println("電腦出拳為:2(布)"); } int result = compare( player,computer ); //判斷比較的結果是什麼,進行加分. if(result == 1){ //玩家贏了,玩家加分 score_Player++; }else if(result == -1){ //電腦贏了,電腦加分 score_Computer++; } } //三次迴圈後,遊戲結束. gameEnd(); } public void showScore(){ System.out.print("player的分數:"+score_Player+"玩家的分數:"+score_Computer); } /** * 用來比較電腦和玩家的猜拳 * 返回1表示玩家贏 返回0表示平局 返回-1表示電腦贏 */ public int compare(int player,int computer) throws Exception { //引數校驗 if(player < 0 || player > 2 || computer < 0 || computer > 2){ throw new Exception( "引數錯誤" ); } if(player == Constant.ROCK){ //玩家為石頭 if(computer == Constant.ROCK){ return 0; //電腦也為石頭 返回平局. }else if(computer == Constant.PAPER){ return -1; //電腦為布,返回電腦贏 }else{ return 1; } } if(player == Constant.PAPER){ //玩家為布 if(computer == Constant.ROCK){ return 1; //電腦為石頭,返回玩家贏 }else if(computer == Constant.PAPER){ return 0; //電腦也為布,返回平局. }else{ return -1; } } if(player == Constant.SCISSORS){ //玩家為剪刀 if(computer == Constant.SCISSORS){ return 0; //電腦也為剪刀,返回平局. }else if(computer == Constant.ROCK){ return -1; //電腦為石頭,返回-1. }else{ return 1; } } return 2; } /** *遊戲結束時,打印出結果. */ public void gameEnd(){ System.out.println("遊戲結束:-------------"); if(score_Computer > score_Player){ System.out.println("電腦"+score_Computer+"分,玩家"+score_Player+"分, 電腦獲勝!!"); }else if(score_Player == score_Computer){ System.out.println("電腦"+score_Computer+"分,玩家"+score_Player+"分, 兩人平局!!"); }else{ System.out.println("電腦"+score_Computer+"分,玩家"+score_Player+"分, 玩家獲勝!!"); } } }
package FingerGuess; import java.util.Scanner; /** * Description: * * @Author Fann * @Data 2018/12/8 */ public class Main { public static void main(String[] args) throws Exception { //判斷玩家是否要繼續 Scanner in = new Scanner( System.in ); while (true){ GuessFingerGame game = new GuessFingerGame(); game.gameStart(); System.out.println("是否繼續遊戲 y/n?"); if(in.nextLine().equalsIgnoreCase( "n" )){ break; } } System.out.println("程式退出"); } }