使用面向对象的编程思想设计编写一个猜拳游戏

使用面向对象的编程思想设计编写一个猜拳游戏,实现玩家和电脑猜拳的过程,玩家和电脑都具备猜拳方法,玩家的出拳使用键盘输入实现,电脑出拳使用随机数,、

要求:每个回合双方各处一次拳,每个回合结束后系统提示结果信息并提示玩家是否要继续,退出游戏打印呈现游戏的结果(游戏总局,玩家获胜、平、输的次数,玩家胜率),通过胜率决定最终的胜利

玩家类

/**
*玩家类
*/
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();
  }
}
posted @ 2020-04-12 23:09  小小野生程序员sunny  阅读(868)  评论(0编辑  收藏  举报