弾幕はありません。前回のを作った後、作りたい弾幕が思い浮かばない。
今回は試験後、前にちょっとした大会で優勝したお祝いの飲み会まで暇だったので
キーやマウスの入力やFPS、メインループなどを書いておいたソリューションを
コピーしてから30分程で作ったゲームを公開します。 ルールは単純。円をクリックするだけ。
早くそして連続でヒットすると高得点。でも時間制限があるので注意。
終了はESC。
そして、龍神録プログラミングの館のプロジェクトに
エネミーマーカーと進行度の表示を追加。
変身とか二面とかもやってみたいけどいつになるのだろう。
そして、変身のほうは素材がない。自機も弾も。
手順は以下の通り。
ステージ進行の表示
ここではステージ進行の表示について書きます。
まず、表示とは何か?
それは画面左にある虹色の線とその上を進む自機画像です。
これまでは画面左上にある数字のみでしたが今回の追加により、目で見てどのくらい進んだのか
がよくわかるようになります。ただし、今回は一面のみの対応とします。
自機画像は既に用意されているので
虹色の線の画像を用意します。
GV.hに以下を追加 load.cppのloadに以下を追加 龍神録ではボスがいないときのみ進行度を表示しています。
進行度は そのステージで進んだ距離 を そのステージのボスが出現する距離で割ったもので
1面の場合、2番目のボスが最後ですから stage_count/boss.appear_count[1]とあらわせます。
虹色の線の長さが400なので中心(FMY/2)から下端までの距離は200で
そこから400*stage_count/boss.appear_count[1]だけ上に移動した点に自機の画像を表示すればよさそうです。
これらのことを考え、graph.cppのgraph_develop()を以下のように変更します。
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に以下を追加
load.cppのload()に以下を追加
graph.cppに以下を追加
//エネミーマーカーの表示
void graph_enemy_rabel(){
if(boss.flag>0){
DrawRotaGraph(FX+(int)boss.x,FY+FMY+8,1,0,img_enemy_rabel,TRUE);
}
}