RPG製作記−4.戦闘処理の流れ

 今回は、戦闘シーンを追加してみます。といっても、実際の戦闘処理は入れないで単にメッセージを出すだけですが。

戦闘処理

 戦闘シーンには、乱数で突入するようにしました。具体的には、移動した時のスクロール処理の最後で乱数を発生させ、16分の一の確率で戦闘シーンに突入します。つまり、16歩に一度の確率で戦闘シーンに突入するわけです。

  if (rand() % 16==0) // 1/16の確率で戦闘発生
      battle();

 戦闘シーンでは、戦闘のメッセージを出して「闘う」か「逃げる」かを前回作成したダイアログで選択します。これを、「逃げる」が選択されるまで続けましょう。

  void battle() {

      message("敵と遭遇!");
      wait();

      message("どうしますか?");

      while (dialog("闘う","逃げる")==1) {

          message("戦闘処理");
          wait();

          message("どうしますか?");

      }

      drawScreen();

  }

 この関数は、「敵と遭遇!」メッセージを出した後は、「逃げる」が選択されるまでひたすらダイアログとメッセージを出しつづけます。実際の戦闘では、逃げ切るか決着がつくまで、同じように戦闘処理を繰り返す事になるでしょう。メッセージを出すたびにwait()関数でリターンキー入力を待っています。

 と、今回は短いですがここまでです。イベント処理と戦闘シーンの「流れ」が出来た事で、だいぶゲームらしくなってきましたね。

プログラム

 カーソルキーで上下左右に移動できます。戦闘シーンに突入したら、リターンキーでメッセージの確認とダイアログの選択を行ってください。終了する時には、戦闘シーンやメッセージが表示されていない状態でエスケープキーを押してください。

 プログラムをコンパイルする時には、DirectX5以上のSDKをインストールする必要があります。ソースをダウンロードしたら、拡張子をcppにしてプロジェクトの設定でddraw.libをリンクしてからビルドしてください。

プログラムソース表示

戻る