30分で作ったゲーム+龍神録のボスの位置と進行度の表示

アバター
Tatu
記事: 445
登録日時: 14年前
住所: 北海道

30分で作ったゲーム+龍神録のボスの位置と進行度の表示

投稿記事 by Tatu » 14年前

回路と制御が終わり、すべての試験が終了。
弾幕はありません。前回のを作った後、作りたい弾幕が思い浮かばない。

今回は試験後、前にちょっとした大会で優勝したお祝いの飲み会まで暇だったので
キーやマウスの入力やFPS、メインループなどを書いておいたソリューションを
コピーしてから30分程で作ったゲームを公開します。

[拡張子 zip は無効化されているため、表示できません]

ルールは単純。円をクリックするだけ。
早くそして連続でヒットすると高得点。でも時間制限があるので注意。
終了はESC。

そして、龍神録プログラミングの館のプロジェクトに
エネミーマーカーと進行度の表示を追加。

変身とか二面とかもやってみたいけどいつになるのだろう。
そして、変身のほうは素材がない。自機も弾も。

手順は以下の通り。

ステージ進行の表示

ここではステージ進行の表示について書きます。
まず、表示とは何か?
それは画面左にある虹色の線とその上を進む自機画像です。
これまでは画面左上にある数字のみでしたが今回の追加により、目で見てどのくらい進んだのか
がよくわかるようになります。ただし、今回は一面のみの対応とします。

自機画像は既に用意されているので
虹色の線の画像を用意します。

GV.hに以下を追加

CODE:

GLOBAL int img_develop;//進行度表示用の画像
load.cppのloadに以下を追加

CODE:

	img_develop = LoadGraph( "../dat/img/board/meter.png");
龍神録ではボスがいないときのみ進行度を表示しています。
進行度は そのステージで進んだ距離 を そのステージのボスが出現する距離で割ったもので
1面の場合、2番目のボスが最後ですから stage_count/boss.appear_count[1]とあらわせます。

虹色の線の長さが400なので中心(FMY/2)から下端までの距離は200で
そこから400*stage_count/boss.appear_count[1]だけ上に移動した点に自機の画像を表示すればよさそうです。

これらのことを考え、graph.cppのgraph_develop()を以下のように変更します。

CODE:

void graph_develop(){
	//デバッグ用に数字を表示、公開時はコメントアウトする
	DrawFormatString(0,0,GetColor(255,255,255),"%d",stage_count);
	if(boss.flag==0){//ボスがいないときのみ表示
		//虹色の線を表示
		DrawRotaGraphF(16.0,FMY/2,1.0,0,img_develop,FALSE);
		//自機画像を表示
		DrawRotaGraphF(16.0,FMY/2+200-400.0*stage_count/boss.appear_count[1],0.5,0,img_ch[0][(stage_count/30)%4],TRUE);
	}
}
これで進行度の表示がされるようになったはずです。

二面以降に対応する場合、面の切り替え時にboss.appear_countの番号を変える処理が必要になります。



エネミーマーカー

ここではボスの位置を表示するエネミーマーカーを追加します。

画像を用意して画面下にボスのx座標に合わせて表示するだけです。

GV.hに以下を追加

CODE:

GLOBAL int img_enemy_rabel;//エネミーマーカー(ボスの位置表示)
load.cppのload()に以下を追加

CODE:

	img_enemy_rabel= LoadGraph( "../dat/img/enemy/enemy_rabel.png");
graph.cppに以下を追加

CODE:

//エネミーマーカーの表示
void graph_enemy_rabel(){
	if(boss.flag>0){
		DrawRotaGraph(FX+(int)boss.x,FY+FMY+8,1,0,img_enemy_rabel,TRUE);
	}
}
graph_main()に追加

CODE:

	graph_enemy_rabel();//エネミーマーカーの表示
これでボスがいるときにエネミーマーカーがつくようになったはずです。

コメントはまだありません。