使用面向對象的編程思想設計編寫一個猜拳游戲


使用面向對象的編程思想設計編寫一個猜拳游戲,實現玩家和電腦猜拳的過程,玩家和電腦都具備猜拳方法,玩家的出拳使用鍵盤輸入實現,電腦出拳使用隨機數,、

要求:每個回合雙方各處一次拳,每個回合結束后系統提示結果信息並提示玩家是否要繼續,退出游戲打印呈現游戲的結果(游戲總局,玩家獲勝、平、輸的次數,玩家勝率),通過勝率決定最終的勝利

玩家類

/**
*玩家類
*/
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();
  }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM