玩家飞机模型设计

玩家飞机类是会飞的模型类的子类,除具有会飞的模型类中属性外,还具有图片数组(玩家飞机享有两张图片)、初始化切换玩家飞机图片时的索引、玩家飞机同时发射两枚导弹以及玩家飞机的生命数。玩家飞机的图片分别如图23.8和图23.9所示。

此外,玩家飞机类除需要重写会飞的模型类中 move() 方法和 outOfPanel() 方法外,还提供了一些特有的方法。例如,发射一枚导弹、同时发射两枚导弹、减少生命数、获得生命数、更新玩家飞机移动后的中心点坐标等。

(1)由于玩家飞机类具有 4 个特有的成员变量,因此要在玩家飞机类的构造方法中,为这 4 个特有的成员变量赋值。此外,还要为会飞的模型类中 5 个成员变量赋值。具体代码如下:

image 2024 03 06 17 13 20 059
Figure 1. 图23.8 玩家飞机图片1
image 2024 03 06 17 13 56 066
Figure 2. 图23.9 玩家飞机图片2
public class Player extends FlyModel {

}

(2)在会飞的模型类中,有两个抽象方法,即 move() 方法和 outOfPanel() 方法。因为玩家飞机类是会飞的模型类的子类,所以要在玩家飞机类中重写 move() 方法和 outOfPanel() 方法。代码如下:

/**
* 玩家飞机图片的移动方法
*/
public void move() {

}

/**
* 玩家飞机的图片不能移动到游戏面板外
*/
public boolean outOfPanel() {
    return false;
}

(3)游戏开始时,玩家飞机只能发射一枚导弹,此时 doubleAmmos 的值为 1,为了增强视觉效果,导弹的位置位于玩家飞机的中间,而且第一枚导弹与玩家飞机要有充足的距离。当导弹击中空投物资时,玩家飞机能够同时发射两枚导弹,此时 doubleAmmos 的值为 2,这两枚导弹的位置分别位于玩家飞机的左右两侧。代码如下:

/**
* 玩家飞机同时发射两枚导弹
*/
public void fireDoubleAmmos() {

}

/**
* 玩家飞机发射导弹
*/
public Ammo[] fireAmmo() {

}

(4)如果敌机与玩家飞机发生碰撞,游戏将结束。为此,需要对碰撞进行检验,检验过程由 hit() 方法予以实现,代码如下:

/**
* 判断玩家飞机是否发生碰撞
*/
public boolean hit(FlyModel model) {

}

(5)除上述方法外,玩家飞机类中,还包括减少生命数、获得生命数、更新玩家飞机移动后的中心点坐标3个方法,这3个方法的代码如下:

/**
* 减少生命数
*/
public void loseLifeNumbers() {

}