面向对象的知识实现愤怒的小鸟

一、设计分析

在手机游戏“愤怒的小鸟中”,有多种角色。我们以主角小鸟为例。当弹弓拉到极限后,小鸟就会飞出去进行攻击,这说明,小鸟都有飞的行为,即一个方法fly()同时飞的行为都是一样的。同时,小鸟发射出来的时候都会叫,但明显的是每个小鸟的叫声是不一样的,我们通过设计接口来实现让不同的小鸟拥有不同的叫声。
并且,在这款游戏中,每个小鸟都是有他们独特的攻击方式的。结合这些特点我们可以考虑使用接口来实现,那么我们接下来就来实现这个小游戏吧!

二代码实现

1.定义鸟叫的接口

//定义鸟叫的接口
public interface AngryBird {
    public void shout();//鸟叫的抽象方法
}

2.接下来确定接口的实现类。就是让各个鸟类实现接口,但这样的做法就是会导致代码冗余。实际的做法就是将各种鸟叫的方式作为接口的实现类。

定义类来描述“嗷嗷叫”、“喳喳叫”两种鸟叫的方式,并实现鸟叫的接口

package agb;

public class ZhaShout implements AngryBird {
    @Override
    public void shout() {
        System.out.println("渣渣__");
  }

 }
package agb;

public class AoShut implements AngryBird {
    @Override
    public void shout() {
        System.out.println("┗|`O′|┛ 嗷~~__");
    }
}

3.在鸟的抽象类中将接口作为属性,通过属性调用该接口的方法

package agb;

public abstract class Bird {
    AngryBird shout_ability;
    public Bird(AngryBird shout_ability){
        this.shout_ability=shout_ability;

    }
    public void shout(){
        shout_ability.shout();//调用接口的方法
    }
    public void fly(){
        System.out.println("弹射飞");
    }
    public abstract void attack();
}

4.写出几种鸟类的子类来继承鸟类来输出独有的方法
炸弹鸟

package agb;

public class BombBird extends Bird{
    public BombBird(AngryBird shout_ability) {
        super(shout_ability);
    }
    //重写攻击方法
    @Override
    public void attack() {
        System.out.println("炸弹攻击");
    }
}

分裂鸟

package agb;

public class SplitBird extends Bird{
    public SplitBird(AngryBird shout_ability) {
        super(shout_ability);
    }

    @Override
    public void attack() {
        System.out.println("分裂攻击");
    }

}

5.建立测试类,通过多态来输出各种方法

package agb;

public class Test {
    public static void main(String[] args) {
        AngryBird ao_shout = new AoShut();
        AngryBird zha_shout = new ZhaShout();

        Bird bomb =new BombBird(zha_shout);
        Bird split = new SplitBird(ao_shout);
        bomb.fly();
        bomb.attack();
        bomb.shout();
        System.out.println("*********************");
        split.fly();
        split.attack();
        split.fly();
        split.shout();
    }
}

输出结果:
弹射飞
炸弹攻击
渣渣__
*********************
弹射飞
分裂攻击
弹射飞
┗|`O′|┛ 嗷~~__

ok。这样,一个简单的愤怒的小鸟的游戏就能够通过控制台输出了,大家也可以试一试将代码改变一下,使得游戏变得更加有趣!

猜你喜欢

转载自blog.csdn.net/weixin_42507474/article/details/107409112
今日推荐