我的想法。
面向对象,首先要弄清楚有什么对象,对象有什么属性,有行为
首先游戏game,对象有什么属性,什么方法。
根据你的描述,geme有一个目标target,当然肯定有个play方法。
目标有一个数组属性。从你描述,目标应该只有提供数组的方法。
还有输入。目标应该没有输入功能,游戏也没。
只有player才有,玩家才有。
那么应该有个玩家对象。玩家有个输入方法。还要有个game对象,玩什么游戏。
你要的判断是否击中目标,这个应该由game对象来完成。这个流程就是游戏的核心。
也game才有资格。也就是play方法。但是他需要玩家传入一个输入值。现在清楚了。
Target int[] arr;
public int[] getArr();Game Target target;
private isFire();
public void play(input){isFire(target.getArr, input)//做判断}Player Game game;
private int input();game.play(input);

解决方案 »

  1.   


    谢谢2楼大神 ,讲的真好,可是小弟还有一个地方不明白,(private isFire();
    public void play(input){isFire(target.getArr, input)//做判断})
     为何这里要做一个private的isFire()方法与play()方法分开?都写在play()方法里不一样吗?  大神告诉我呗,谢谢
      

  2.   


    谢谢2楼大神 ,讲的真好,可是小弟还有一个地方不明白,(private isFire();
    public void play(input){isFire(target.getArr, input)//做判断})
     为何这里要做一个private的isFire()方法与play()方法分开?都写在play()方法里不一样吗?  大神告诉我呗,谢谢方法的规则,一个方法做一件事。不要在乎方法多。
    在说,play方法的规则我可能会变化,这样我就改下调用就好了。深层次考虑,如果现在是否击中的判断改规则了,
    那么把game 抽象化,这时game是个抽象类。照样提供一个public 的play方法。还提供一个受保护的isFire()抽象方法方法。play方法还是调用isFire();
    这时写个判断击中这个具体游戏的实现类,继承game类,实现isFire()方法。
    这样完成后,如果后续要加规则,我不用改原来的代码,只要加一个具体实现类,继承game,实现isFire()方法。就可以完成扩展。
      

  3.   


    谢谢2楼大神 ,讲的真好,可是小弟还有一个地方不明白,(private isFire();
    public void play(input){isFire(target.getArr, input)//做判断})
     为何这里要做一个private的isFire()方法与play()方法分开?都写在play()方法里不一样吗?  大神告诉我呗,谢谢方法的规则,一个方法做一件事。不要在乎方法多。
    在说,play方法的规则我可能会变化,这样我就改下调用就好了。深层次考虑,如果现在是否击中的判断改规则了,
    那么把game 抽象化,这时game是个抽象类。照样提供一个public 的play方法。还提供一个受保护的isFire()抽象方法方法。play方法还是调用isFire();
    这时写个判断击中这个具体游戏的实现类,继承game类,实现isFire()方法。
    这样完成后,如果后续要加规则,我不用改原来的代码,只要加一个具体实现类,继承game,实现isFire()方法。就可以完成扩展。谢谢大神,真给力
      

  4.   

    7楼基本猜中了 , 其实是headfirst java 里的例子 ,哈哈。 可是在这一步调用上,我的想法竟然和书上的不一样。。 是不是我又面向过程了捏。。