今からはじめるプログラミング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
点数が増えたことで、確認してください。
ソースと実行形式ファイルです。⬇️
おもしろそうな本です。⬇️