画像(logo)

HOME/[C言語DXライブラリ]STGの作り方 目次/十二日目 ボスの爆発エフェクト

広告

[C言語 DXライブラリ STGの作り方]
十二日目 ボスの爆発エフェクト

広告

↓発売日:2018年09月22日↓

たった1日で基本が身に付く! C言語 超入門

新品価格
¥2,225から
(2018/10/8 23:10時点)

目次へ戻る

ボスの爆発エフェクト

ようやくボスも登場したのでステージ遷移などの処理に移りたいトコロですが、ステージボス撃破の時に通常の敵と同じ爆発エフェクトだとちょっとさみしいのでほんのちょっとグレードアップした爆発エフェクトを作りたいと思います。

「my_move_exp_effect()」の「case 2」に当たる部分です。

初期化部分と移動部分に分かれます。

まずは初期化部分見てみましょう。

if (exp_effect[i].init_flag == 0){
	exp_effect[i].x = exp_effect[i].first_x;
	exp_effect[i].y = exp_effect[i].first_y;
	exp_effect[i].gamecount_point = gamecount;
	exp_effect[i].init_flag = 1;
}
else{
	/*移動部分*/
}

座標を移して「gamecount」を登録して・・・、このへんは通常の爆発エフェクトと変わりありません。

では移動部分を見てみたいと思います。

さきほどの「else」部分ですね。

if (gamecount < exp_effect[i].gamecount_point + 200){
	if(gamecount % 10 == 1){
		int ran = (rand() % 5);
		int ran2 = (rand() % 5);
		int ary[5] = {-20,-10,0,10,20};
		exp_effect[i].x = exp_effect[i].first_x + ary[ran];
		exp_effect[i].y = exp_effect[i].first_y + ary[ran2];
	}
}
else{
	exp_effect[i].move_flag = 0;
	exp_effect[i].init_flag = 0;
}

「gamecount_point」を基準に「200」カウント分定期的に爆発エフェクトの座標をランダムに更新させているような処理になります。

ランダムに?乱数?という方はこちらの乱数の項目を参考にしてみてください。

「srand()」文は「my_init_variable()」に記述してあります。

ではあらためまして

if(gamecount % 10 == 1){
}

「10」カウント毎に

int ran = (rand() % 5);
int ran2 = (rand() % 5);

乱数を2つ作って

int ary[5] = {-20,-10,0,10,20};

座標をずらす為の値をあらかじめ用意

exp_effect[i].x = exp_effect[i].first_x + ary[ran];
exp_effect[i].y = exp_effect[i].first_y + ary[ran2];

その座標をランダムに元の座標に加えているだけですね!

これでとりあえずボスの爆発エフェクトは完成です。

ステージ遷移前準備

前準備ってほどでもないですが、さっそく今作った爆発エフェクトをボス用に変更して

1・ステージボス撃破

2・ボス用爆発エフェクト起動

3・ステージクリアフラグ確認

というトコロまでやってみたいと思います。

ボスの残り体力を調べる「my_check_boss_power()」を少し変更します。

void my_check_boss_power(){
	for(int i = 0;i < DISP_BOSS_MAX;i++){
		if(boss[i].move_flag == 1 && boss[i].init_flag == 1){
			if(boss[i].power <= 0){
				gamecount2++;
				if(gamecount2 == 1){
					my_set_exp_effect(boss[i].x,boss[i].y,2);
				}
				else if(gamecount2 == 200){
					boss[i].move_flag = 0;
					boss[i].init_flag = 0;
					if(boss[i].end_flag == 1){
						/*to next stage*/
					}
					gamecount2 = 0;
				}
			}
		}
	}
}

ステージボスを撃破、すぐに次のステージという感じでは慌ただしいし、さっきの爆発エフェクトの意味がないので時間調整の為に「gamecount2」という変数を用意して「200」カウント分はかるようにしております。

この間に先ほどの爆発エフェクトを差し込みます。

このように無造作に変数を用意するのはあまりよくはありませんが、そのへんは入門用プログラムという事でご了承ください。

カウントがはじまってすぐにさきほどの爆発エフェクトを起動!

if(gamecount2 == 1){
	my_set_exp_effect(boss[i].x,boss[i].y,2);
}

そしてカウントが「200」になったらステージクリアの為のフラグ「boss[i].end_flag」を確認してステージ遷移などの処理に入っていきます。

else if(gamecount2 == 200){
	boss[i].move_flag = 0;
	boss[i].init_flag = 0;
	if(boss[i].end_flag == 1){
		/*to next stage*/
	}
	gamecount2 = 0;
}

もし「if(boss[i].end_flag == 1)」が機能しているかどうか心配でしたら「WaitKey()」などを使って無理やり停止するなりなんなりして確かめてみてください。

画像(cdxs_12_1)

ボス撃破!!!

ボスが爆発している最中にも動いてしまわないようにボスの動きのトコロに「boss[i].power > 0」という条件を加えております。

ここまでの中間ソースになります。

中間ソース11

次回はここにステージ遷移やゲームオーバーなどの処理を加えていきます。

次回

十三日目 ステージ遷移

□ページの先頭へ□

□目次へ戻る□

□HOME□

広告

↓発売日:2016年02月29日↓

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

新品価格
¥2,462から
(2018/10/8 23:25時点)

↓発売日:2018年06月22日↓

スッキリわかるC言語入門

新品価格
¥2,916から
(2018/10/8 23:15時点)

↓発売日:2018年03月09日↓

C言語本格入門 ~基礎知識からコンピュータの本質まで

新品価格
¥3,218から
(2018/10/8 23:16時点)

↓発売日:2017年06月14日↓

やさしいC 第5版 (「やさしい」シリーズ)

新品価格
¥2,700から
(2018/10/8 23:17時点)

↓発売日:2018年05月21日↓

作って身につく C言語入門

新品価格
¥2,462から
(2018/10/8 23:18時点)

↓発売日:2017年12月07日↓

新・標準プログラマーズライブラリ C言語 ポインタ完全制覇

新品価格
¥2,678から
(2018/10/8 23:19時点)

↓発売日:2017年02月08日↓

新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ)

新品価格
¥2,700から
(2018/10/8 23:20時点)

↓発売日:2017年09月26日↓

かんたん C言語 [改訂2版] (プログラミングの教科書)

新品価格
¥2,916から
(2018/10/8 23:22時点)