
● 戦闘 ●
ロールプレイングゲーム制作、
ついに最終章となりました
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・ネットワークなど
順不同で不定期に更新していきたいと思います
お楽しみに!
ソースコード
(こちらのコードは、書き写したり改変したり自由に使用してください)
(画像の自作ゲームでの使用は許可していませんプライバシーポリシー、ご自身で描いたものを使用してください)
