1. 程式人生 > >猜拳遊戲,利用面向物件

猜拳遊戲,利用面向物件

猜拳遊戲專案

專案功能點:
    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("程式退出");
    }
}