その9ー5 《総集編》 ロールプレイングゲームの作成 戦闘

 戦闘 


ロールプレイングゲーム制作、
ついに最終章となりました



HPを設定したり
ダメージ計算やイベント設定をして
ゲームを仕上げていきましょう!







初期設定・クリックに対する対応


まずは、戦闘やイベントに必要な変数を
前回のプログラムに加えていきます



順に説明していきます

全て整数int

battle=0;
現在戦闘中かどうかのフラグ
フラグが立った時、値を1にします

hp=100,mhp=100;
プレイヤーのHPとMAXHP

ap=0;
所持武器

kill=0;
敵を何体倒したか?


こんな感じで作ってみてください




プレイヤー(はむはむ♪)を表示するコードの後に
HPを表示するプログラムを足しましょう

整数hp、mhpの値を表示するため
wsprintf()関数で整数を文字列に変換しましょう


座標ははむはむ♪の少し上あたりに設定しました

画面上部とか、下部とか
自由に設定してOKです



Kaiwa()関数は
会話が成立すれば戻り値をTRUEに設定していましたが、
今回、会話が成立した時にはむはむ♪のHPを回復するようにしてみました
hp=mhp;
で、現在のHPをMAXHPにします




次に、WM_LBUTTONDOWN
(マウスがクリックされた時の処理)です


今までははむはむ♪が移動するのみでしたが、
戦闘が開始した場合は移動処理が行われないように
移動プログラムをelseで囲います


戦闘が開始した場合は
クリックされても何もしません

戦闘の中身の処理は
画面が反転するよう設定したBattle()関数内で行います







ダメージ計算


HPの設定や、クリック対応は出来たので
ダメージ計算を行います



//戦闘開始
以降にダメージ計算式を入れました


まずbattle=1にして、
マウスクリックを無反応にする処理をします

次にStretchBlt()関数で
画面中央に敵の姿を表示させます
(今回はぱんだぱんが敵です)


ap=0の時(武器が初期状態の時)
前回敵の出現範囲と、強さを設定しましたが
その敵の強さに応じてはむはむ♪のHPを減らします

武器が初期状態ではない場合は
HPの減る量を減らします



//戦闘後処理
敵を倒したのでkillを+1します
もしHPが0以下になった場合、
PostQuitMessage()関数により
ゲームは終了します


イベント


最後に、
戦闘に関連するイベントを作って完成です


特定の人と会話した時に、
手りゅう弾を入手してパワーアップできるようにします



敵を50体以上倒した場合、
会話した人が消えて
新たに通れる道ができるようにします







おつかれさまでした
以上で《総集編》ロールプレイングゲームの作成
は終了です


次回以降はAI・CG・ネットワークなど
順不同で不定期に更新していきたいと思います

お楽しみに!






ソースコード
(こちらのコードは、書き写したり改変したり自由に使用してください)
画像の自作ゲームでの使用は許可していませんプライバシーポリシー、ご自身で描いたものを使用してください)