刚学习JAVA面向对象的编程思想,现在老师叫我们做一个猜拳的小游戏,做着做着就面向过程去了,请问应该怎么设计类和对象?猜拳 面向对象

解决方案 »

  1.   

    抽象一个接口 ,接口中有方法定义  ,剪刀、石头、布 实现它 ,
    public interface IGuest{
       public int guest(IGuest ig) ;
       
    }public class JDGuest{
    ...
    }
      

  2.   

    分析一下,类有玩家和“拳”,而其中“拳”又可以分为“包”“剪”“锤”三种,“玩家”可分为“计算机玩家”和“人类玩家”两种
    程序开始,计算机玩家和人类玩家分别实例化,其中,计算机玩家自动产生一个“拳”,人类玩家输入一个“拳”。
    还有一个类是GameMaster,控制游戏过程,比如给出指令让玩家出拳,然后再判断胜负。建议玩家接口:
    interface IPlayer {
      IFist propose();
      String getName();
    }
    拳接口:
    interface IFist {
      boolean beats(IFist opponent);
    }GameMaster可以直接在main过程里实现
    IPlayer player1 = new HumanPlayer();
    IPlayer player2 = new ComputerPlayer();
    while (true) {
      IFist fist1 = player1.propose();
      IFist fist2 = player2.propose();
      
      // if player terminates the game
      if (fist1 == null || fist2 == null)
        break;  if (fist1.equals(fist2))
        System.out.println("It's a draw!");
      else if (fist1.beats(fist2))
        System.out.println(player1.getName() + " wins!");
      else if (fist2.beats(fist1))
        System.out.println(player2.getName() + " wins!");
    }
      

  3.   

    java是一个面向对象的编程,我们要从现实中的具体事物来抽取它们的属性、行为,我们先做的是找出对象以及对象的属性和实现方式(方法)。猜拳基本上都是人和人之间进行的(当然你要说和电脑也可以),那猜拳本身的属性呢,不就是“石头”“剪刀”“布”咯,找到后就是考虑它们是如何实现的,那就是看比较这两个人出的手势,看谁打谁小或者相同,大小就是你在方法中去定义一个规则,再最后就是写代码了