2.軍隊の戦闘シーンをシミュレートします。軍隊には、騎兵、歩兵、砲兵など、さまざまな種類の武器があります。各種類の兵士は敵を攻撃できますが、敵を攻撃する具体的な方法は異なります。それぞれ3つのオブジェクトを持つこれらの3種類の兵士を確立します。次に、オフィサーオブジェクトを作成します。オフィサーもフィールドに移動して敵を攻撃しますが、軍隊は

トピック:
2。軍隊の戦闘シーンをシミュレートします。軍隊には、騎兵、歩兵、砲兵など、さまざまな種類の武器があります。各種類の兵士は敵を攻撃できますが、敵を攻撃する具体的な方法は異なります。それぞれ3つのオブジェクトを持つこれらの3種類の兵士を確立します。次に、オフィサーオブジェクトを作成すると、オフィサーも戦場に出て敵を攻撃しますが、オフィサーが命令を出す別の方法があります。オフィサーは命令を出します。すべての兵士は、武器に関係なく、戦場に出て敵を攻撃します。プログラム操作の効果は、将校が命令を出し始め、その後、将校を含むすべての在来の兵士が敵を攻撃し、誰もがどのように敵を攻撃するかを示すことです。

分析:

コード

主な機能テストクラス

package exer2;

/**
 * @author 胖胖的山头
 * @create 2020-10-28 18:44
 */
public class ArmyOperationsTest {
    
    
    public static void main(String[] args) {
    
    
        Soldier[] soldiers = new Soldier[10];

        for (int i = 0; i < 10; i++) {
    
    
            if(i<3){
    
    
                soldiers[i]= new Cavalryman();
            }
            else if (i<6){
    
    
                soldiers[i]=new Infantry();
            }
            else if (i<9){
    
    
                soldiers[i]=new Artillery();
            }
            else{
    
    
                soldiers[i]=new Officer();
            }
        }

        Officer officer=(Officer) soldiers[9];
        officer.Signal(soldiers);
    }
}

抽象兵士クラス

package exer2;

/**
 * 士兵
 * @author 胖胖的山头
 * @create 2020-10-28 18:47
 */
public abstract class Soldier {
    
    
   abstract void attack();
}

コマンドインターフェースクラス

package exer2;

/**
 * @author 胖胖的山头
 * @create 2020-10-28 19:10
 */
public interface SendSignals {
    
    
    void Signal(Soldier[] soldier);
}

騎兵

package exer2;

/**
 * 骑兵
 * @author 胖胖的山头
 * @create 2020-10-28 19:01
 */
public class Cavalryman extends Soldier{
    
    
    @Override
    void attack() {
    
    
        System.out.println("骑兵骑马挥舞大刀攻击敌人");
    }
}

歩兵

package exer2;

/**
 * 步兵
 * @author 胖胖的山头
 * @create 2020-10-28 19:02
 */
public class Infantry extends Soldier{
    
    
    @Override
    void attack() {
    
    
        System.out.println("步兵端起枪打击敌人");
    }
}

砲兵

package exer2;

/**
 * 炮兵
 * @author 胖胖的山头
 * @create 2020-10-28 19:02
 */
public class Artillery extends Soldier{
    
    
    @Override
    void attack() {
    
    
        System.out.println("炮兵开炮攻击敌人");
    }
}

オフィサークラス

package exer2;

/**
 * 军官
 * @author 胖胖的山头
 * @create 2020-10-28 19:03
 */
public class Officer extends Soldier implements SendSignals {
    
    
    @Override
    void attack() {
    
    
        System.out.println("军官开始开始攻击敌人");
    }

    @Override
    public void Signal(Soldier[] soldier) {
    
    
        for (int i = 0; i < soldier.length; i++) {
    
    
            soldier[i].attack();//调用各个对象的attack()方法;
        }
    }
}

実現結果グラフ

ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/qq_46931134/article/details/109343817