たぶん世界一単純で簡単なRPGの戦闘システムを考えてみました!
さすがに攻撃だけだと、勝敗がひっくり返せない場合が多くなってしまうため、防御もできるようにしました。
プレイヤーが選べるのは攻撃か防御かの二つだけで、防御を選ぶと防御力が2倍になります!
攻撃は5分の1の確率でクリティカルヒットになり、攻撃力が2倍になります。
そうすることで、敵がクリティカルヒットを出してきても、防御を選んでいればダメージを減らせます。
クリティカルヒットの発生率は、パラメータのバランスによって適正値が変わると思いますが、このサンプルでは動作確認がしやすいということもあり、発生率を比較的高めにしています。
このパラメータが適切なのかは分かりませんが、戦闘にかかる時間が長くなり過ぎないように考えた結果、このような数値になっています。
プレイヤーと敵がどちらも攻撃する場合、
プレイヤーが攻撃で敵が防御する場合、
プレイヤーが防御で敵が攻撃する場合、
プレイヤーと敵がどちらも防御する場合、
それら全てのパターンの処理を入力しています。
さらに、プレイヤーと敵のどちらかにクリティカルヒットが発生した場合も分岐しています。
このサンプルでは、ダメージ計算を簡単にするために、整数のみにしてありますが、攻撃力を1.5倍などにした場合には小数点以下が出ることになるので、それをどう補正するかを考えなければなりません!
また、ダメージがマイナスになる場合があるため、その場合の処理も入力する必要があります。
そして、ダメージにより体力がゼロ以下になった場合に、勝敗の処理が必要になります。
このように、できるたけ単純で簡単な戦闘システムにしようとしても、さまざまな状況に応じた処理が必要になります!
でも、これが分かれば、複雑な戦闘システムへ応用していくための基礎ができている状態になるでしょう。
入力したプログラムを実行(RUN)すると、この画像のように表示されます。
本来は、敵のパラメータは表示しないほうが良いのですけど、状況が分かりやすくなるから表示しています。
Xボタンの諦めるはゲームの途中で終了したい場合の非常用です。
基本的な戦闘システムを作るのに集中できるように、キャラクターを表示せず文字だけにしていましたが、文字だけのRPGではつまらないですよね?
戦闘システムが作れたら、次はキャラクターを追加表示しましょう!
プレイヤーと敵を表示することと、攻撃か防御を選んだ時の変化を合わせて入力します。
さらに、勝敗が決まった時の変化も忘れないようにしてください!
文字だけの時は画面写真3枚分でしたが、キャラクターを表示すると画面写真4枚分に増えてしまいますが、直前のサンプルにプログラムを追加するなら、そんなに多くありません。
ただし、プログラムの追加箇所は全体に分散しているので、入力し忘れのないように注意してください!
入力したプログラムを実行(RUN)すると、この画像のように表示されます。
攻撃を選ぶと剣が表示されます。
防御を選ぶと盾が表示されます。
勝敗が決まるとキャラクターが敗北状態に変化します。
やっぱり、キャラクターが表示されたほうが状況が分かりやすいですね♪
今回のサンプルプログラムに未使用の配列があることに気付いた人が多いと思いますが、それらは敵を増やす場合の準備として入力しておいたものです。
実際に、何種類かの敵と戦うためには、プログラムを改造しなければなりません!
この章の目的は、RPGのような戦闘システムの基本を学ぶことなので、複数の敵と戦うところまでは行いません。
このサンプルの内容を理解できれば、後はこれを応用していくだけです。
パラメータを増やしてみたり、魔法やスキルを使えるようにしたり、戦闘システムを複雑化してみたり……と、さまざまなアレンジが考えられます。
いろいろとチャレンジしてみてください!
ちなみに、初心者講座の卒業試験2.「初心者でも改造しやすい闘技場ゲーム」は、5種類の敵と戦うゲームになっています。
この章では未使用だった配列を使用しているので、参考になるでしょう。