今からはじめるプログラミング63(シューティングその6)

メリハリがないので、ボス(みたいなもの)を追加しました。

まずはEnemyを継承したEnemyBを追加。とくに追加しなくてもできるといえばできます。

 

EnemyBのプログラム

--------------------------------

package sample20;

 

import java.util.Random;

 

public class EnemyB extends Enemy {

 

public int hp = 100;

 

public EnemyB(int x, int y)

{

        super.x = x;

        super.y = y;

    }

 

public void move(int x, int y){

Random random = new Random();

int direction =  random.nextInt(100);

 

if(direction<25){

this.moveVertical(y+3);

}else if(2<direction && direction<50){

this.moveVertical(-y);

}else if(5<direction && direction<75){

this.moveHorizontal(x);

}else{

this.moveHorizontal(-x);

}

}

}

--------------------------------

そして、Shootingのプログラムは。。。

1.80行目付近(変数がいっぱい並んでるところ)のボス用の変数をようい。

---------------------------------

EnemyB boss = null;

--------------------------------

2.125行目付近(時間を取得してレベルにインクリメントしているところ)でボスのインスタンスを生成、描画。elseを作って、ボスの移動も追加。listではないのでnullで判断しています。

--------------------------------

if (System.currentTimeMillis() - levelTimer > 10 * 1000) {

levelTimer = System.currentTimeMillis();

level++;

//BOSS?

boss = new EnemyB(50,50);

//boss write

gra.setColor(Color.BLACK);

gra.fillRect(boss.x, boss.y, 50, 50);

}else{

if(boss!=null){

boss.move(3, 3);

gra.setColor(Color.BLACK);

gra.fillRect(boss.x, boss.y, 50, 50);

}

}

--------------------------------

3.180行目付近(弾の挙動の中で)ボスの存在(not null)とあたり判定、スコアの追加など。

--------------------------------

if(boss!=null){

if(boss.hp>0){

if (bullet.x >= boss.x

&& bullet.x <= boss.x + 50

&& bullet.y >= boss.y

&& bullet.y <= boss.y + 50) {

boss.hp--;

}

}else{

gra.drawImage(bossBImage, boss.x, boss.y, 50, 50, null);

boss= null;

score+=1000;

}

}

--------------------------------

※ボスのHPが0以下になったら爆発の画像を表示しようとしていますが、一瞬?なので、わかりませんw

点数が増えたことで、確認してください。

ソースと実行形式ファイルです。⬇️

ソースと実行形式ファイル

おもしろそうな本です。⬇️