zoukankan      html  css  js  c++  java
  • 使用面向对象的编程思想设计编写一个猜拳游戏

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

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

    玩家类

    /**
    *玩家类
    */
    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();
      }
    }
  • 相关阅读:
    C语言枚举类型(C语言enum用法)详解
    基础练习 报时助手
    怎么将CAD转JPG?教你两种CAD转JPG方法
    CAD图纸怎么看?这两种方法值得看
    某酒店建筑设计CAD施工图
    CAD怎么算面积?这种方法你要知道
    怎么将DWG转PDF?分享一个在线转换方法
    如何使用CAD删除命令?怎么删除图纸中线段
    CAD制图软件哪个好?试试这两个就知道了
    CAD制图初学入门如何学好CAD?CAD大神总结5点诀窍,必须收藏
  • 原文地址:https://www.cnblogs.com/gfl-1112/p/12676900.html
Copyright © 2011-2022 走看看