今までで解説した変数操作や条件分岐。そしてDBを使って実際に戦闘システムを作ってみましょう。
戦闘システムを考える
まず初めに、戦闘の流れを簡単に頭の中で決めてしまいましょう。
●味方と敵は1人ずつである。
●素早さが早いほうが先に行動し、敵と味方で交互に攻撃する。
●敵は通常攻撃のみしてくる。
●味方はMPを使わない通常攻撃と、MPを使う攻撃魔法2種、回復魔法2種類の、計5種類を使える。
●攻撃魔法のダメージや、回復魔法の回復量は固定。
●通常攻撃は、攻撃側の攻撃力と、受ける側の守備力で計算する。
●先に相手のHPを0にしたほうが勝ち
単純ですが、なかなか本格的なシステムではないでしょうか。
それでは作っていきましょう!
データベースを作成する
ウディタでシステムを組む時は、まずDBの設定から行います。
コモンイベントを組んでから、あのDB項目も必要だったと気づいて、後付けすることはお勧めできません。
DBをいかにきれいに作るかが、製作のしやすさに大きくかかわってきます。
しかしそれは理想論で、なんだかんだ言って後からDBを編集することは多々あります。
ですが、DBをきちんと組み立てることが大切だということは覚えておいてください。
可変データベースを設定する
さて、上の仕様から、必要な変数を考えます。今回の場合、
●HP ●MP ●攻撃力 ●守備力 ●素早さ
が変数として必要となります。
これらはキャラクターが個別に持つ変数なので、DBを使うのが適切です。
また、HPとMPは現在の値の他に、最大値も必要です。主人公の名前もあったほうがいいでしょう。
なので実際に必要となる可変DBの項目は
●キャラクター名
●最大HP
●現在HP
●最大MP
●現在MP
●攻撃力
●守備力
●素早さ
の8種類となります。
可変DBの画面を開いてください。
キャラクター名は文字列なので文字列変数。それ以外は変数ですね。
なので次のように設定します。
敵と味方で共通のステータスを使うので、敵の味方二つ分のデータを作ります。
先ほどのDB設定で、データIDの設定方法を“最初の文字列と同じ”にしているので(赤枠のところ)
項目の0番「キャラクター名」が、そのままデータの名前になっています。
これで可変DBの設定は終了です。
ユーザーデータベースを設定する
ユーザーデータベースは、ゲーム中でも数値の変わらない「定数」を入れておくものでしたね。
今回の仕様では、攻撃魔法を2種類。回復魔法を2種類ということになっています。
これらを「魔法」としてユーザーデータベースにまとめてみます。
「魔法」というデータに、与えるダメージとMPがという要素。つまり「項目」を作ります。
回復魔法は負のダメージとして設定することにします。
戦闘のコモンイベントを作る
戦闘のコモンイベントを作っていきます。
新たに「戦闘」のコモンベントを用意します。
一時変数を5つ用意します。
計算の途中結果を保存しておく、使いまわす変数です。
ループさせる
先攻の行動→後攻の行動→先攻の行動→後攻の行動→先攻の行動…と、
どちらかのHPが0になるまで繰り返すので、繰り返し処理の「ループ」をまず設置します。
イベント制御からループ(繰り返し)をクリックしてください。
次のように入力されます。
■ループ開始
┃■
◇ループここまで◇
■
このままだ無限にループしてしまうので、ループを抜けだす処理を作ります。
「戦闘終了フラグ」という名前の変数を作ってください。
「戦闘終了フラグ」が0か0以外かで分岐させます
■ループ開始
┃■条件分岐(変数):【1】CSelf15[戦闘終了フラグ]が0以外
┃-◇分岐:【1】[CSelf15[戦闘終了フラグ]が0以外]の場合↓
┃┃■
┃◇分岐終了◇
┃■
◇ループここまで◇
■
「戦闘終了フラグ」が0以外になったときの処理にループを抜け出すため、
条件分岐の中にループの中断を挿入します
■ループ開始
┃■条件分岐(変数):【1】CSelf15[戦闘終了フラグ]が0以外
┃-◇分岐:【1】[CSelf15[戦闘終了フラグ]が0以外]の場合↓
┃┃■ループ中断
┃┃■
┃◇分岐終了◇
┃■
◇ループここまで◇
■
ループに入る前に、「戦闘終了フラグ」の値をリセットさせます。
■変数操作:CSelf15[戦闘フラグ] = 0 + 0
■ループ開始
┃■条件分岐(変数):【1】CSelf15[戦闘終了フラグ]が0以外
┃-◇分岐:【1】[CSelf15[戦闘終了フラグ]が0以外]の場合↓
┃┃■ループ中断
┃┃■
┃◇分岐終了◇
┃■
◇ループここまで◇
■
これで、「戦闘終了フラグ」が0以外になるとループを抜け出すという処理ができました。
素早さで行動準を決める。
味方(勇者)と、敵(魔王)の素早さをまず収得します。
それぞれ、一時変数1と一時変数2に代入させましょう。
■変数操作:CSelf[戦闘フラグ] = 0 + 0
■ループ開始
┃■DB読み込み(可変):CSelf10[一時変数1] = 可変DB[0:0:7](勇者:素早さ)
┃■DB読み込み(可変):CSelf11[一時変数2] = 可変DB[0:1:7](魔王:素早さ)
┃■条件分岐(変数):【1】CSelf15[戦闘終了フラグ]が0以外
┃-◇分岐:【1】[CSelf15[戦闘終了フラグ]が0以外]の場合↓
┃┃■ループ中断
┃┃■
┃◇分岐終了◇
┃■
◇ループここまで◇
■
2つの変数を比べて分岐させます。
■変数操作:CSelf15[戦闘フラグ] = 0 + 0
■ループ開始
┃■DB読み込み(可変):CSelf10[一時変数1] = 可変DB[0:0:7](勇者:素早さ)
┃■DB読み込み(可変):CSelf11[一時変数2] = 可変DB[0:1:7](魔王:素早さ)
┃■条件分岐(変数):【1】CSelf10[一時変数1]がCSelf11[一時変数2]以上
┃-◇分岐:【1】[CSelf10[一時変数1]がCSelf11[一時変数2]以上]の場合↓
┃┃■
┃-◇上記以外
┃┃■
┃◇分岐終了◇
┃■条件分岐(変数):【1】CSelf15[戦闘終了フラグ]が0以外
┃-◇分岐:【1】[CSelf15[戦闘終了フラグ]が0以外]の場合↓
┃┃■ループ中断
┃┃■
┃◇分岐終了◇
┃■
◇ループここまで◇
■
先攻がだれで、後攻がだれなのかを保存する変数を作ります。
今回は2人だけなので、先攻が決まれば後攻も自動的に決まるため変数は1つでいいのですが、
処理がわかりやすく、応用もわかりやすいので先攻後攻それぞれ変数を用意してみたいと思います。
「先攻キャラ」「後攻キャラ」2つの変数を作ります。
話が少しそれますが、◯だったところが■になっている変数がありますね。
これは、■の変数は実際に使われている変数で、◯はまだ使っていない変数とだということを表しています。
条件分岐によって、先攻キャラ、後攻キャラの変数に代入していきます。
ステータスのユーザーデータベースが、勇者は0。魔王は1となっているので、
先攻が勇者なら「先攻キャラ=0」
先攻が魔王なら「先攻キャラ=1」
とすることにします。
■変数操作:CSelf15[戦闘フラグ] = 0 + 0
■ループ開始
┃■DB読み込み(可変):CSelf10[一時変数1] = 可変DB[0:0:7](勇者:素早さ)
┃■DB読み込み(可変):CSelf11[一時変数2] = 可変DB[0:1:7](魔王:素早さ)
┃■条件分岐(変数):【1】CSelf10[一時変数1]がCSelf11[一時変数2]以上
┃-◇分岐:【1】[CSelf10[一時変数1]がCSelf11[一時変数2]以上]の場合↓
┃┃■変数操作:CSelf16[先攻キャラ] = 0 + 0
┃┃■変数操作:CSelf17[後攻キャラ] = 1 + 0
┃┃■
┃-◇上記以外
┃┃■変数操作:CSelf16[先攻キャラ] = 1 + 0
┃┃■変数操作:CSelf17[後攻キャラ] = 0 + 0
┃┃■
┃◇分岐終了◇
┃■条件分岐(変数):【1】CSelf15[戦闘終了フラグ]が0以外
┃-◇分岐:【1】[CSelf15[戦闘終了フラグ]が0以外]の場合↓
┃┃■ループ中断
┃┃■
┃◇分岐終了◇
┃■
◇ループここまで◇
■
コメントで処理を分かりやすくする。
このまま作っていくと、何が何だかわからなくなってきますので、注釈である「コメント」を入れます。
コメントとはメモ書きのようなものでで、処理には一切影響しません。
■変数操作:CSelf[戦闘フラグ]15 = 0 + 0
■ループ開始
┃▼キャラの素早さを収得し比較
┃■DB読み込み(可変):CSelf10[一時変数1] = 可変DB[0:0:7](勇者:素早さ)
┃■DB読み込み(可変):CSelf11[一時変数2] = 可変DB[0:1:7](魔王:素早さ)
┃■条件分岐(変数):【1】CSelf10[一時変数1]がCSelf11[一時変数2]以上
┃-◇分岐:【1】[CSelf10[一時変数1]がCSelf11[一時変数2]以上]の場合↓
┃┃▼勇者が先攻
┃┃■変数操作:CSelf16[先攻キャラ] = 0 + 0
┃┃■変数操作:CSelf17[後攻キャラ] = 1 + 0
┃┃■
┃-◇上記以外
┃┃▼魔王が先攻
┃┃■変数操作:CSelf16[先攻キャラ] = 1 + 0
┃┃■変数操作:CSelf17[後攻キャラ] = 0 + 0
┃┃■
┃◇分岐終了◇
┃▼
┃▼戦闘終了フラグの確認
┃■条件分岐(変数):【1】CSelf15[戦闘終了フラグ]が0以外
┃-◇分岐:【1】[CSelf15[戦闘終了フラグ]が0以外]の場合↓
┃┃■ループ中断
┃┃■
┃◇分岐終了◇
┃■
◇ループここまで◇
■
緑色の字がコメントです。
文章の表示でコメント文から挿入することができます。
使い方は人それぞれですが、処理の内容把握しやすくために、注釈やセパレータ(仕切り) として使ってみてください。
行動コマンド入力を作る
攻撃か魔法どちらを使うか。魔法は何を使うかの選択をプレイヤーにさせる処理を使います。
画像の表示と条件分岐を使ったほうが、自由自在に作れますが、少し製作と解説が大変です。
なので今回は、「選択肢」を使ってみたいと思います。
「選択肢」コマンドは、呼び出すと選択肢が画面に表示され、それをプレイヤーが操作させることができます。
そして、プレイヤーが選択した選択肢によって条件分岐を行うことができます。
もちろん画像や大きさ、位置を変えることもできますが、今回は説明を省略します。
「選択肢」から次のように入力します。
キャンセルできないように、「キャンセル不能」も押して下さい。
場所は先攻後攻を決める処理の前です。
■変数操作:CSelf15[戦闘フラグ] = 0 + 0
■ループ開始
┃■文章選択肢:【1】攻撃する/【2】魔法を使う
┃-◇選択肢:【1】攻撃する の場合↓
┃┃■
┃-◇選択肢:【2】魔法を使う の場合↓
┃┃■
┃◇分岐終了◇
┃▼
┃▼キャラの素早さを収得し比較
┃■DB読み込み(可変):CSelf10[一時変数1] = 可変DB[0:0:7](勇者:素早さ)
┃■DB読み込み(可変):CSelf11[一時変数2] = 可変DB[0:1:7](魔王:素早さ)
┃■条件分岐(変数):【1】CSelf10[一時変数1]がCSelf11[一時変数2]以上
┃-◇分岐:【1】[CSelf10[一時変数1]がCSelf11[一時変数2]以上]の場合↓
┃┃▼勇者が先攻
┃┃■変数操作:CSelf16[先攻キャラ] = 0 + 0
┃┃■変数操作:CSelf17[後攻キャラ] = 1 + 0
┃┃■
┃-◇上記以外
┃┃▼魔王が先攻
┃┃■変数操作:CSelf16[先攻キャラ] = 1 + 0
┃┃■変数操作:CSelf17[後攻キャラ] = 0 + 0
┃┃■
┃◇分岐終了◇
┃▼
┃▼戦闘終了フラグの確認
┃■条件分岐(変数):【1】CSelf15[戦闘終了フラグ]が0以外
┃-◇分岐:【1】[CSelf15[戦闘終了フラグ]が0以外]の場合↓
「魔法」の条件分岐の処理に、何の魔法を使うかの選択肢を作ります。
今回はキャンセルを有効にしておきます。
選択肢に変数呼び出し値を使っています。
¥udb[0:X:0]は、タイプ0のデータXの項目1。つまり、X番の魔法の名前を参照しています。
選択肢が表示されるとき、¥udb[0:X:0]はX番目の魔法の名前が表示されるようにしているわけです。
¥udb[0:0:0]ではなく、¥udb[0:1:0]から始めているのは、最初の0番目のデータは使わないでおきたいからです。
「戦士の魔法の欄を、0番の「無し」という魔法で埋め尽くす」なんて処理をさせたりするために0番を空けています。
これで、魔法の選択肢ができあがりました。
■変数操作:CSelf15[戦闘フラグ] = 0 + 0
■ループ開始
┃■文章選択肢:【1】攻撃する/【2】魔法を使う
┃-◇選択肢:【1】攻撃する の場合↓
┃┃■
┃-◇選択肢:【2】魔法を使う の場合↓
┃┃▼魔法を使う
┃┃■文章選択肢:【1】\udb[0:1:0]/【2】\udb[0:2:0]/【3】\udb[0:3:0]/【4】\udb[0:4:0]
┃┃-◇選択肢:【1】\udb[0:1:0] の場合↓
┃┃┃■
┃┃-◇選択肢:【2】\udb[0:3:0] の場合↓
┃┃┃■
┃┃-◇選択肢:【3】\udb[0:3:0] の場合↓
┃┃┃■
┃┃-◇選択肢:【4】\udb[0:4:0] の場合↓
┃┃┃■
┃┃-◇キャンセルの場合
┃┃┃■
┃┃◇分岐終了◇
┃┃■
┃◇分岐終了◇
┃▼
┃▼キャラの素早さを収得し比較
┃■DB読み込み(可変):CSelf10[一時変数1] = 可変DB[0:0:7](勇者:素早さ)
┃■DB読み込み(可変):CSelf11[一時変数2] = 可変DB[0:1:7](魔王:素早さ)
┃■条件分岐(変数):【1】CSelf10[一時変数1]がCSelf11[一時変数2]以上
┃-◇分岐:【1】[CSelf10[一時変数1]がCSelf11[一時変数2]以上]の場合↓
魔法の選択肢がキャンセルされた場合の処理として、ラベルを使います。
多用するのはよくないと言われていますが、ループを抜け出す用途には使ってもよいとされています。
今回はキャンセルした場合、「攻撃か魔法かの選択処理」に戻る挙動にします。
■変数操作:CSelf15[戦闘フラグ] = 0 + 0
■ループ開始
┃●ラベル地点「攻撃・魔法選択」 <<<<<<<<<<<<<<<<<<<<<<<<★
┃■文章選択肢:【1】攻撃する/【2】魔法を使う
┃-◇選択肢:【1】攻撃する の場合↓
┃┃■
┃-◇選択肢:【2】魔法を使う の場合↓
┃┃▼魔法を使う
┃┃■文章選択肢:【1】\udb[0:1:0]/【2】\udb[0:2:0]/【3】\udb[0:3:0]/【4】\udb[0:4:0]
┃┃-◇選択肢:【1】\udb[0:1:0] の場合↓
┃┃┃■
┃┃-◇選択肢:【2】\udb[0:3:0] の場合↓
┃┃┃■
┃┃-◇選択肢:【3】\udb[0:3:0] の場合↓
┃┃┃■
┃┃-◇選択肢:【4】\udb[0:4:0] の場合↓
┃┃┃■
┃┃-◇キャンセルの場合
┃┃┃●ラベル「攻撃・魔法選択」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
┃┃┃■
┃┃◇分岐終了◇
┃┃■
┃◇分岐終了◇
┃▼
次に、味方行動という変数を作ります。
この変数に、選択した魔法によって値を代入させます。代入する値は、udbの魔法のデータ番号に合わせてます。
今回は、0番の魔法を使わないことを前提にすることで、0番は通常攻撃ということにしました。
行動0は「通常攻撃」。1以上の行動Xは「X番の魔法」ということになります。
■変数操作:CSelf15[戦闘フラグ] = 0 + 0
■ループ開始
┃●ラベル地点「攻撃・魔法選択」 <<<<<<<<<<<<<<<<<<<<<<<<★
┃■文章選択肢:【1】攻撃する/【2】魔法を使う
┃-◇選択肢:【1】攻撃する の場合↓
┃┃■変数操作:CSelf18[味方行動] = 0 + 0
┃┃■
┃-◇選択肢:【2】魔法を使う の場合↓
┃┃▼魔法を使う
┃┃■文章選択肢:【1】\udb[0:1:0]/【2】\udb[0:2:0]/【3】\udb[0:3:0]/【4】\udb[0:4:0]
┃┃-◇選択肢:【1】\udb[0:1:0] の場合↓
┃┃┃■変数操作:CSelf18[味方行動] = 1 + 0
┃┃┃■
┃┃-◇選択肢:【2】\udb[0:3:0] の場合↓
┃┃┃■変数操作:CSelf18[味方行動] = 2 + 0
┃┃┃■
┃┃-◇選択肢:【3】\udb[0:3:0] の場合↓
┃┃┃■変数操作:CSelf18[味方行動] = 3 + 0
┃┃┃■
┃┃-◇選択肢:【4】\udb[0:4:0] の場合↓
┃┃┃■変数操作:CSelf18[味方行動] = 4 + 0
┃┃┃■
┃┃-◇キャンセルの場合
┃┃┃●ラベル「攻撃・魔法選択」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
┃┃┃■
┃┃◇分岐終了◇
┃┃■
┃◇分岐終了◇
┃▼
┃▼キャラの素早さを収得し比較
┃■DB読み込み(可変):CSelf10[一時変数1] = 可変DB[0:0:7](勇者:素早さ)
┃■DB読み込み(可変):CSelf11[一時変数2] = 可変DB[0:1:7](魔王:素早さ)
┃■条件分岐(変数):【1】CSelf10[一時変数1]がCSelf11[一時変数2]以上
┃-◇分岐:【1】[CSelf10[一時変数1]がCSelf11[一時変数2]以上]の場合↓
全体としてはこんな感じです。
■変数操作:CSelf15[戦闘フラグ] = 0 + 0
■ループ開始
┃●ラベル地点「攻撃・魔法選択」 <<<<<<<<<<<<<<<<<<<<<<<<★
┃■文章選択肢:【1】攻撃する/【2】魔法を使う
┃-◇選択肢:【1】攻撃する の場合↓
┃┃■変数操作:CSelf18[味方行動] = 0 + 0
┃┃■
┃-◇選択肢:【2】魔法を使う の場合↓
┃┃▼魔法を使う
┃┃■文章選択肢:【1】\udb[0:1:0]/【2】\udb[0:2:0]/【3】\udb[0:3:0]/【4】\udb[0:4:0]
┃┃-◇選択肢:【1】\udb[0:1:0] の場合↓
┃┃┃■変数操作:CSelf18[味方行動] = 1 + 0
┃┃┃■
┃┃-◇選択肢:【2】\udb[0:3:0] の場合↓
┃┃┃■変数操作:CSelf18[味方行動] = 2 + 0
┃┃┃■
┃┃-◇選択肢:【3】\udb[0:3:0] の場合↓
┃┃┃■変数操作:CSelf18[味方行動] = 3 + 0
┃┃┃■
┃┃-◇選択肢:【4】\udb[0:4:0] の場合↓
┃┃┃■変数操作:CSelf18[味方行動] = 4 + 0
┃┃┃■
┃┃-◇キャンセルの場合
┃┃┃●ラベル「攻撃・魔法選択」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
┃┃┃■
┃┃◇分岐終了◇
┃┃■
┃◇分岐終了◇
┃▼
┃▼キャラの素早さを収得し比較
┃■DB読み込み(可変):CSelf10[一時変数1] = 可変DB[0:0:7](勇者:素早さ)
┃■DB読み込み(可変):CSelf11[一時変数2] = 可変DB[0:1:7](魔王:素早さ)
┃■条件分岐(変数):【1】CSelf10[一時変数1]がCSelf11[一時変数2]以上
┃-◇分岐:【1】[CSelf10[一時変数1]がCSelf11[一時変数2]以上]の場合↓
┃┃▼勇者が先攻
┃┃■変数操作:CSelf16[先攻キャラ] = 0 + 0
┃┃■変数操作:CSelf17[後攻キャラ] = 1 + 0
┃┃■
┃-◇上記以外
┃┃▼魔王が先攻
┃┃■変数操作:CSelf16[先攻キャラ] = 1 + 0
┃┃■変数操作:CSelf17[後攻キャラ] = 0 + 0
┃┃■
┃◇分岐終了◇
┃▼
┃▼戦闘終了フラグの確認
┃■条件分岐(変数):【1】CSelf15[戦闘終了フラグ]が0以外
┃-◇分岐:【1】[CSelf15[戦闘終了フラグ]が0以外]の場合↓
┃┃■ループ中断
┃┃■
┃◇分岐終了◇
┃■
◇ループここまで◇
■
先攻・後攻や、敵・味方で分岐させる
実装する処理を軽くまとめてみましょう。
一つの考え方として、次のようなものがあります。
まず、先攻を行動させます。そして、先行が味方なのか敵なのか分岐。
味方ならさきほど入力したコマンドの行動を行い、敵なら通常攻撃してくるようにします。
敵、もしくは味方が行動したら、後攻の行動をさせます。
こちらも、後攻が味方なのか敵なのか分岐させて処理を行わせる、というものです。
しかし、先行の味方の行動の処理。後攻の味方の行動の処理を別々にするのはスマートではないので
2回ループを使い、1回目のループを「先攻」の処理。2回目のループを「後攻の処理」とさせます。
そして、そのループでの処理が「味方」なのか「敵」なのかで分岐させれば、いちいち同じ処理を2回させずにすみますよね!
まず、ループが1回目なのか2回目なのかを判定させるための変数を作ります。
2回の回数付きループを挿入します。場所は、先攻後攻を決めた処理の直後です。
さきほどのループとは違い、回数制限のついたループです。この場合2回ループします。
次に、ループの前に変数を0にリセットし、ループの最後に変数を+1させます。
┃-◇上記以外
┃┃▼魔王が先攻
┃┃■変数操作:CSelf16[先攻キャラ] = 1 + 0
┃┃■変数操作:CSelf17[後攻キャラ] = 0 + 0
┃┃■
┃◇分岐終了◇
┃▼
┃▼先攻と後攻の処理
┃■変数操作:CSelf19[先攻or後攻] = 0 + 0
┃■回数付きループ[2]回
┃┃■変数操作:CSelf19[先攻or後攻] += 1 + 0
┃┃■
┃◇ループここまで◇◇
┃▼
┃▼戦闘終了フラグの確認
これで、1ループ目は0。2ループ目は1となる変数「先攻or後攻」が出来上がりました。
先攻後攻で分岐させて
┃◇分岐終了◇
┃▼
┃▼先攻と後攻の処理
┃■変数操作:CSelf19[先攻or後攻] = 0 + 0
┃■回数付きループ[2]回
┃┃■条件分岐(変数):【1】CSelf19[先攻or後攻]が0と同じ
┃┃-◇分岐:【1】[CSelf19[先攻or後攻]が0と同じ]の場合↓
┃┃┃▼先攻を行動させる
┃┃┃■
┃┃-◇上記以外
┃┃┃▼後攻を行動させる
┃┃┃■
┃-◇分岐終了◇
┃┃■変数操作:CSelf19[先攻or後攻] += 1 + 0
┃┃■
┃◇ループここまで◇◇
┃▼
┃▼戦闘終了フラグの確認
「行動キャラ」という変数を作って、どちらが行動するか代入させます。
先攻後攻で分岐させて
┃◇分岐終了◇
┃▼
┃▼先攻と後攻の処理
┃■変数操作:CSelf19[先攻or後攻] = 0 + 0
┃■回数付きループ[2]回
┃┃■条件分岐(変数):【1】CSelf19[先攻or後攻]が0と同じ
┃┃-◇分岐:【1】[CSelf19[先攻or後攻]が0と同じ]の場合↓
┃┃┃▼先攻を行動させる
┃┃┃■変数操作:CSelf20[行動キャラ] = CSelf16[先攻キャラ] + 0
┃┃┃■
┃┃-◇上記以外
┃┃┃▼後攻を行動させる
┃┃┃■変数操作:CSelf20[行動キャラ] = CSelf17[後攻キャラ] + 0
┃┃┃■
┃-◇分岐終了◇
┃┃■変数操作:CSelf19[先攻or後攻] += 1 + 0
┃┃■
┃◇ループここまで◇◇
┃▼
┃▼戦闘終了フラグの確認
「行動キャラ」で条件分岐させれば、味方か敵かで分岐させることができます。
┃◇分岐終了◇
┃▼
┃▼先攻と後攻の処理
┃■変数操作:CSelf19[先攻or後攻] = 0 + 0
┃■回数付きループ[2]回
┃┃■条件分岐(変数):【1】CSelf19[先攻or後攻]が0と同じ
┃┃-◇分岐:【1】[CSelf19[先攻or後攻]が0と同じ]の場合↓
┃┃┃▼先攻を行動させる
┃┃┃■変数操作:CSelf20[行動キャラ] = CSelf16[先攻キャラ] + 0
┃┃┃■
┃┃-◇上記以外
┃┃┃▼後攻を行動させる
┃┃┃■変数操作:CSelf20[行動キャラ] = CSelf17[後攻キャラ] + 0
┃┃┃■
┃◇分岐終了◇
┃┃▼
┃┃▼行動キャラで分岐
┃┃┃■条件分岐(変数):【1】CSelf20[行動キャラ]が0と同じ
┃┃┃-◇分岐:【1】[】CSelf20[行動キャラ]が0と同じ]の場合↓
┃┃┃▼味方の行動
┃┃┃■
┃┃┃-◇分岐:【1】[】CSelf20[行動キャラ]が1と同じ]の場合↓
┃┃┃▼敵の行動
┃┃┃■
┃┃◇分岐終了◇
┃┃■変数操作:CSelf19[先攻or後攻] += 1 + 0
┃┃■
┃◇ループここまで◇◇
┃▼
┃▼戦闘終了フラグの確認
ダメージを計算の実装
今回程度の規模ならあまり必要ないのですが、練習と説明のためにダメージ計算を別イベントにします
新しいコモンイベントを作ります。
先ほどのように、一時変数を5つほど用意してくださいね
今回、ダメージ計算はシンプルに「攻撃する側の攻撃力-攻撃された側の守備力」にしたいと思います。
そのためには、「攻撃する側の攻撃力」と「攻撃された側の守備力」を収得する必要があります。
そして、攻撃する側は勇者だったり魔王だったりと場合によって変わるわけですよね。
攻撃する側が勇者のときも、魔王のときも、汎用的に使えるダメージ計算の処理を作るにはどうすればいいのでしょうか。
こういう時に、コモンイベント入門2でやった、入力内容の設定を使います。
入力内容として「攻撃キャラ」と「被攻撃キャラ」を設定するのです。
この「攻撃キャラ」と「被攻撃キャラ」には、可変データベースの「ステータス」のデータ番号を代入させます。
勇者なら0。魔王なら1ですね。
攻撃側の攻撃力を、一時変数1へ代入します。
データの部分(赤枠)をコモンセルフ変数の0番の「攻撃キャラ」にしています。
「攻撃キャラ」が0なら、勇者の攻撃力。1なら魔王の攻撃力が代入されます。
これができるのが、階層構造を持つデータベースを使うことの最大の利点です
同じように、「被攻撃キャラ」の守備力も一時変数2へ代入させましょう。
▼ステータスを収得
■DB読み込み(可変):CSelf10[一時変数1] = 可変DB[0:CSelf0[攻撃キャラ]:5](攻撃力)
■DB読み込み(可変):CSelf11[一時変数2] = 可変DB[0:CSelf1[被攻撃キャラ]:6](守備力)
攻撃する側の攻撃力-攻撃された側の守備力を計算させます。結果は「一時変数1」に代入させます。
複合代入演算子を使ってみましょう。
▼ステータスを収得
■DB読み込み(可変):CSelf10[一時変数1] = 可変DB[0:CSelf0[攻撃キャラ]:5](攻撃力)
■DB読み込み(可変):CSelf10[一時変数2] = 可変DB[0:CSelf1[被攻撃キャラ]:6](守備力)
▼
▼ダメージを計算
■変数操作:CSelf10[一時変数1] -= CSelf11[一時変数2] + 0
このままだと、守備力が攻撃力を上回ったとき、負のダメージが(回復)になってしまうので、条件分岐を使って防ぎます。
ダメージが負なら0にするという処理を実装します。
▼ステータスを収得
■DB読み込み(可変):CSelf10[一時変数1] = 可変DB[0:CSelf0[攻撃キャラ]:5](攻撃力)
■DB読み込み(可変):CSelf10[一時変数2] = 可変DB[0:CSelf1[被攻撃キャラ]:6](守備力)
▼
▼ダメージを計算
■変数操作:CSelf10[一時変数1] -= CSelf11[一時変数2] + 0
▼
▼ダメージが負なら0にする
■条件分岐(変数):【1】CSelf10[一時変数1]が0未満
-◇分岐:【1】[CSelf10[一時変数1]が0未満]の場合↓
┃■変数操作:CSelf10[一時変数1] = 0 + 0
┃■
◇分岐終了◇
■
これで、一時変数1にダメージの値が代入されました。
今度はこれを、この「ダメージ計算」のイベントを呼び出したイベントも使えるようにします。
再び、入力内容の設定を開いてください。
「結果を返す」を選択して、名前とその変数を選択してOKを押します。
今回はダメージの値が欲しいので、それが代入されている一時変数1を選んでください。名前はそのまま「ダメージ」です。
敵と味方の通常攻撃処理
敵の通常攻撃から実装してしまいましょう。
今回のシステムでは、敵は通常攻撃だけをしてくるものとします。
先ほど作った「ダメージ計算」を呼び出して、ダメージを求めてしまいましょう!
┃◇分岐終了◇
┃┃▼
┃┃▼行動キャラで分岐
┃┃■条件分岐(変数):【1】CSelf20[行動キャラ]が0と同じ
┃┃-◇分岐:【1】[】CSelf20[行動キャラ]が0と同じ]の場合↓
┃┃┃▼味方の行動
┃┃┃■
┃┃┃-◇分岐:【1】[】CSelf20[行動キャラ]が1と同じ]の場合↓
┃┃┃▼敵の行動
┃┃┃■イベントの挿入:CSelf10[一時変数1] =コモン2:[ダメージ計算]/1/0
┃┃┃■
┃┃◇分岐終了◇
┃┃■変数操作:CSelf19[先攻or後攻] += 1 + 0
┃┃■
┃◇ループここまで◇◇
┃▼
ここでの攻撃キャラの1と、被攻撃キャラの0は、それぞれ可変データベース1番のデータ番号に対応しています。
下の枠線の部分で、さきほど設定した「ダメージ」をどこに代入するかを指定しています。
今回は一時変数1に代入されることになります。
味方の現在HPから、ダメージの値を引きます。
┃┃▼行動キャラで分岐
┃┃■条件分岐(変数):【1】CSelf20[行動キャラ]が0と同じ
┃┃-◇分岐:【1】[】CSelf20[行動キャラ]が0と同じ]の場合↓
┃┃┃▼味方の行動
┃┃┃■
┃┃┃-◇分岐:【1】[CSelf20[行動キャラ]が1と同じ]の場合↓
┃┃┃▼敵の行動
┃┃┃■イベントの挿入:CSelf10[一時変数1] =コモン2:[ダメージ計算]/1/0
┃┃┃■可変DB書き込み:DB[0:0:2](勇者:現在HP) -= CSelf10[一時変数1]
┃┃┃■
┃┃◇分岐終了◇
┃┃■変数操作:CSelf19[先攻or後攻] += 1 + 0
┃┃■
┃◇ループここまで◇◇
┃▼
HPを0未満の値にしたくない場合は、次のように条件分岐と変数操作を使います。
┃┃┃-◇分岐:【1】[】CSelf20[行動キャラ]が1と同じ]の場合↓
┃┃┃▼敵の行動
┃┃┃■イベントの挿入:CSelf10[一時変数1] =コモン2:[ダメージ計算]/1/0
┃┃┃■可変DB書き込み:DB[0:0:2](勇者:現在HP) -= CSelf10[一時変数1]
┃┃┃■条件分岐(変数):【1】可変DC[0:0:2](勇者 現在HP)が0未満
┃┃┃▼HPが0未満にならないようにする
┃┃┃-◇分岐:【1】[可変DC[0:0:2](勇者 現在HP)が0と未満]の場合↓
┃┃┃┃■可変DB書き込み:DB[0:0:2](勇者:現在HP) = 0
┃┃┃┃■
┃┃┃◇分岐終了◇
┃┃┃■
┃┃◇分岐終了◇
┃┃■変数操作:CSelf19[先攻or後攻] += 1 + 0
次は味方の行動の場合です
「味方行動」の変数のが0の場合は通常攻撃。1以上の場合は魔法なので、まずはそれで分岐させます。
┃┃■条件分岐(変数):【1】CSelf20[行動キャラ]が0と同じ
┃┃-◇分岐:【1】[】CSelf20[行動キャラ]が0と同じ]の場合↓
┃┃┃▼味方の行動
┃┃┃▼
┃┃┃▼通常攻撃か、魔法かで分岐
┃┃┃■条件分岐(変数):【1】CSelf18[味方行動]が0と同じ
┃┃┃-◇分岐:【1】[】CSelf18[味方行動]が0と同じ]の場合↓
┃┃┃┃■
┃┃┃-◇上記以外
┃┃┃┃■
┃┃┃◇分岐終了◇
┃┃┃■
┃┃┃-◇分岐:【1】[CSelf20[行動キャラ]が1と同じ]の場合↓
通常攻撃の場合は、先ほどの敵の通常攻撃とほぼ同じです。
ダメージ計算の呼び出しは、攻撃キャラを0。被攻撃キャラを1にします。
ダメージを与えるのも、敵のHPから引きます
┃┃■条件分岐(変数):【1】CSelf20[行動キャラ]が0と同じ
┃┃-◇分岐:【1】[】CSelf20[行動キャラ]が0と同じ]の場合↓
┃┃┃▼味方の行動
┃┃┃▼
┃┃┃▼通常攻撃か、魔法かで分岐
┃┃┃■条件分岐(変数):【1】CSelf18[味方行動]が0と同じ
┃┃┃-◇分岐:【1】[】CSelf18[味方行動]が0と同じ]の場合↓
┃┃┃┃▼通常攻撃
┃┃┃┃■イベントの挿入:CSelf10[一時変数1] =コモン2:[ダメージ計算]/0/1
┃┃┃┃■可変DB書き込み:DB[0:1:2](魔王:現在HP) -= CSelf10[一時変数1]
┃┃┃┃■
┃┃┃-◇上記以外
┃┃┃┃■
┃┃┃◇分岐終了◇
┃┃┃■
┃┃┃-◇分岐:【1】[CSelf20[行動キャラ]が1と同じ]の場合↓
味方の魔法処理
1以上のXの値を持つ行動は、X番の魔法でしたね!
まず、一時変数1に魔法の消費MPを代入させます。
この部分を収得すればいいので、
こうですね。
┃┃┃-◇分岐:【1】[】CSelf18[味方行動]が0と同じ]の場合↓
┃┃┃┃▼通常攻撃
┃┃┃┃■イベントの挿入:CSelf10[一時変数1] =コモン2:[ダメージ計算]/0/1
┃┃┃┃■可変DB書き込み:DB[0:1:2](魔王:現在HP) -= CSelf10[一時変数1]
┃┃┃┃■
┃┃┃-◇上記以外
┃┃┃┃▼魔法
┃┃┃┃▼
┃┃┃┃▼消費MPを収得
┃┃┃┃■DB読み込み(ユーザ):CSelf10[一時変数1] = ユーザDB[0:CSelf18[味方行動]:2](消費MP)
┃┃┃┃■
┃┃┃◇分岐終了◇
┃┃┃■
┃┃┃-◇分岐:【1】[CSelf20[行動キャラ]が1と同じ]の場合↓
一時変数2に味方の現在MPを収得させ、MPが足りるか条件分岐で判定します。
┃┃┃-◇上記以外
┃┃┃┃▼魔法
┃┃┃┃▼
┃┃┃┃▼消費MPを収得
┃┃┃┃■DB読み込み(ユーザ):CSelf10[一時変数1] = ユーザDB[0:CSelf18[味方行動]:2](消費MP)
┃┃┃┃▼現在MPを収得
┃┃┃┃■DB読み込み(可変):CSelf10[一時変数2] = 可変DB[0:0:4](勇者:現在MP)
┃┃┃┃■条件分岐(変数):【1】CSelf10[一時変数1]がCSelf11[一時変数2]以下
┃┃┃┃-◇分岐:【1】[CSelf10[一時変数1]がCSelf11[一時変数2]以下]の場合↓
┃┃┃┃┃▼MPが足りる
┃┃┃┃┃■
┃┃┃┃-◇上記以外
┃┃┃┃┃▼MPが足りない
┃┃┃┃┃■
┃┃┃┃◇分岐終了◇
┃┃┃┃■
┃┃┃◇分岐終了◇
┃┃┃■
┃┃┃-◇分岐:【1】[CSelf20[行動キャラ]が1と同じ]の場合↓
次に、その魔法のダメージと、対象が味方なのか敵なのか、DBを呼び出して収得します。
┃┃┃-◇上記以外
┃┃┃┃▼魔法
┃┃┃┃▼
┃┃┃┃▼消費MPを収得
┃┃┃┃■DB読み込み(ユーザ):CSelf10[一時変数1] = ユーザDB[0:CSelf18[味方行動]:2](消費MP)
┃┃┃┃▼現在MPを収得
┃┃┃┃■DB読み込み(可変):CSelf10[一時変数2] = 可変゙DB[0:0:4](勇者:現在MP)
┃┃┃┃■条件分岐(変数):【1】CSelf10[一時変数1]がCSelf11[一時変数2]以下
┃┃┃┃-◇分岐:【1】[CSelf10[一時変数1]がCSelf11[一時変数2]以下]の場合↓
┃┃┃┃┃▼MPが足りる
┃┃┃┃┃▼
┃┃┃┃┃▼ダメージ量を収得
┃┃┃┃┃■DB読み込み(ユーザ):CSelf11[一時変数2] = ユーザDB[0:CSelf18[味方行動]:1](ダメージ量(-で回復))
┃┃┃┃┃▼対象がどちらなのか収得
┃┃┃┃┃■DB読み込み(ユーザ):CSelf12[一時変数3] = ユーザDB[0:CSelf18[味方行動]:3](対象(0で味方、1で敵))
┃┃┃┃┃■
┃┃┃┃-◇上記以外
┃┃┃┃┃▼MPが足りない
┃┃┃┃┃■
┃┃┃┃◇分岐終了◇
┃┃┃┃■
┃┃┃◇分岐終了◇
┃┃┃■
┃┃┃-◇分岐:【1】[CSelf20[行動キャラ]が1と同じ]の場合↓
一時変数2と3に、ダメージの数値と、対象がどちらなのか代入されました。
まずはダメージ。一時変数2と3を使って、対象のHPを減らします。
┃┃┃┃-◇分岐:【1】[CSelf10[一時変数1]がCSelf11[一時変数2]以下]の場合↓
┃┃┃┃┃▼MPが足りる
┃┃┃┃┃▼
┃┃┃┃┃▼ダメージ量を収得
┃┃┃┃┃■DB読み込み(ユーザ):CSelf11[一時変数2] = ユーザDB[0:CSelf18[味方行動]:1](ダメージ量(-で回復))
┃┃┃┃┃▼対象がどちらなのか収得
┃┃┃┃┃■DB読み込み(ユーザ):CSelf12[一時変数3] = ユーザDB[0:CSelf18[味方行動]:3](対象(0で味方、1で敵))
┃┃┃┃┃▼
┃┃┃┃┃▼ダメージ(回復)
┃┃┃┃┃■可変DB書込:DB[0:CSelf12[一時変数3]:2](現在HP) -= CSelf11[一時変数2]
┃┃┃┃┃■
┃┃┃┃-◇上記以外
魔法のユーザー‐データベースの対象の数値を、ステータスの可変データベースの番号に合わせているので、
そのまま使うことができます。
味方が対象の0と、味方の番号0を揃えているわけです。
次に、MPを消費させるために味方の現在MPから引きましょう
┃┃┃┃-◇分岐:【1】[CSelf10[一時変数1]がCSelf11[一時変数2]以下]の場合↓
┃┃┃┃┃▼MPが足りる
┃┃┃┃┃▼
┃┃┃┃┃▼ダメージ量を収得
┃┃┃┃┃■DB読み込み(ユーザ):CSelf11[一時変数2] = ユーザDB[0:CSelf18[味方行動]:1](ダメージ量(-で回復))
┃┃┃┃┃▼対象がどちらなのか収得
┃┃┃┃┃■DB読み込み(ユーザ):CSelf12[一時変数3] = ユーザDB[0:CSelf18[味方行動]:3](対象(0で味方、1で敵))
┃┃┃┃┃▼
┃┃┃┃┃▼ダメージ(回復)
┃┃┃┃┃■可変DB書込:DB[0:CSelf12[一時変数3]:2](現在HP) -= CSelf11[一時変数2]
┃┃┃┃┃▼
┃┃┃┃┃▼MPを消費
┃┃┃┃┃■可変DB書込:DB[0:0:4](勇者:現在MP) -= CSelf11[一時変数1]
┃┃┃┃┃■
┃┃┃┃-◇上記以外
これで、消費MP分だけ現在MPが減りましたね!
最後に、HPが0未満になったり、最大HPを超えて回復しないようにさせましょう。
変数操作やDB操作。条件分岐を使います。
┃┃┃┃┃▼
┃┃┃┃┃▼MPを消費
┃┃┃┃┃■可変DB書込:DB[0:0:4](勇者:現在MP) -= CSelf11[一時変数1]
┃┃┃┃┃▼
┃┃┃┃┃▼HPが0未満になったり、最大HPを超えないようにする
┃┃┃┃┃■DB読み込み(可変):CSelf10[一時変数1] = 可変DB[0:CSelf12[一時変数3]:1](最大HP)
┃┃┃┃┃■DB読み込み(可変):CSelf11[一時変数2] = 可変DB[0:CSelf12[一時変数3]:2](現在HP)
┃┃┃┃┃■条件分岐(変数):【1】CSelf11[一時変数2]がCSelf10[一時変数1]超【2】CSelf11[一時変数2]が0未満
┃┃┃┃┃-◇分岐:【1】[CSelf11[一時変数2]がCSelf10[一時変数1]超]の場合↓
┃┃┃┃┃┃■可変DB書込:DB[0:CSelf12[一時変数3]:2](現在HP) = CSelf10[一時変数1]
┃┃┃┃┃┃■
┃┃┃┃┃-◇分岐:【1】[CSelf11[一時変数2]が0未満]の場合↓
┃┃┃┃┃┃■可変DB書込:DB[0:CSelf12[一時変数3]:2](現在HP) = 0
┃┃┃┃┃┃■
┃┃┃┃┃◇分岐終了◇
┃┃┃┃┃■
┃┃┃┃-◇上記以外
どちらかHPが0になったら、戦闘を終了させる
敵か味方、どちらかのHPが0になった時点で戦闘は終了となります。
条件分岐を使って、味方のHPが0になった場合と、敵が0になった場合の処理を作ります。
「3変数を連動」のチェックを外すと、左辺に異なる変数をおくことができます。
ただし、3つの式のうち1つが条件にあてはまり実行されると、それより下の条件分岐はその真偽に関わらず無視されます。
今回の場合は、敵も味方もHPが0の場合、一番初めの味方のHPが0の場合の処理しか実行されないということです。
これは、「3変数を連動」させている場合も起こります。バグの原因になったりするので頭の隅に入れておいてください。
場所は、味方か敵が行動した直後です。
┃┃┃▼HPが0未満にならないようにする
┃┃┃-◇分岐:【1】[可変DC[0:0:2](勇者 現在HP)が0と未満]の場合↓
┃┃┃┃■可変DB書き込み:DB[0:0:2](勇者:現在HP) = 0
┃┃┃┃■
┃┃┃◇分岐終了◇
┃┃┃■
┃┃◇分岐終了◇
┃┃▼
┃┃▼HPが0か判定
┃┃■条件分岐(変数):【1】可変DB(0,0,2)[勇者 現在HP]が0と同じ【2】可変DB(0,1,2)[魔王 現在HP]が0と同じ
┃┃-◇分岐:【1】[可変DB(0,0,2)[勇者 現在HP]が0と同じ]の場合↓
┃┃┃▼敵の勝利
┃┃┃■
┃┃-◇分岐:【1】[可変DB(0,1,2)[魔王 現在HP]が0と同じ]の場合↓
┃┃┃▼味方の勝利
┃┃┃■
┃┃◇分岐終了◇
┃┃▼
┃┃▼
┃┃■変数操作:CSelf19[先攻or後攻] += 1 + 0
2回のループから抜け出す必要があるので、「ループ中断」を挿入します。
┃┃▼HPが0か判定
┃┃■条件分岐(変数):【1】可変DB(0,0,2)[勇者 現在HP]が0と同じ【2】可変DB(0,1,2)[魔王 現在HP]が0と同じ
┃┃-◇分岐:【1】[可変DB(0,0,2)[勇者 現在HP]が0と同じ]の場合↓
┃┃┃▼敵の勝利
┃┃┃■ループ中断
┃┃┃■
┃┃-◇分岐:【1】[可変DB(0,1,2)[魔王 現在HP]が0と同じ]の場合↓
┃┃┃▼味方の勝利
┃┃┃■ループ中断
┃┃┃■
┃┃◇分岐終了◇
┃┃▼
┃┃▼
┃┃■変数操作:CSelf19[先攻or後攻] += 1 + 0
そのあと、戦闘全体のループからも抜け出さなければなりません。
一番最初に、0以外の値にするとループから抜け出せる変数をつくりましたね?
「戦闘終了フラグ」という変数でした。
それを0以外の数値…1にします。
┃┃▼HPが0か判定
┃┃■条件分岐(変数):【1】可変DB(0,0,2)[勇者 現在HP]が0と同じ【2】可変DB(0,1,2)[魔王 現在HP]が0と同じ
┃┃-◇分岐:【1】[可変DB(0,0,2)[勇者 現在HP]が0と同じ]の場合↓
┃┃┃▼敵の勝利
┃┃┃■変数操作:CSelf15[戦闘終了フラグ] = 1 + 0
┃┃┃■ループ中断
┃┃┃■
┃┃-◇分岐:【1】[可変DB(0,1,2)[魔王 現在HP]が0と同じ]の場合↓
┃┃┃▼味方の勝利
┃┃┃■変数操作:CSelf15[戦闘終了フラグ] = 1 + 0
┃┃┃■ループ中断
┃┃┃■
┃┃◇分岐終了◇
┃┃▼
┃┃▼
┃┃■変数操作:CSelf19[先攻or後攻] += 1 + 0
これで骨組みは完了です!!
メッセージやステータスを表示させる
処理は完成しても、数値がどうなっているのか分からなければおもしろくありません。
ダメージが入ったときとのメッセージと、ステータスの表示をつくっておきましょう。
ステータスの表示は、ピクチャを使いたいと思います。
ピクチャには、文字を画像として表示させる機能がありますので、それを使っていきましょう。
表示タイプは「文字列をピクチャとして描画」にして、特殊文字を使ってステータスを表します。
位置と座標はそのままでOKです。デフォルトだと、左上に表示されます。
このコマンドの場所ですが、ループの先頭と、魔法使用の直後。それとダメージ処理の直後に入れます。
コマンドが実行された瞬間の値が表示されるので、ステータスが変わる場所に配置します。
また、ピクチャは既に同じピクチャ番号(青枠)が描画されている場合、それが消えて新たに描画されます。
なので、新たに同じピクチャコマンドを呼び出すだけで、ステータス表示の更新が行われます。
メッセージは文章の表示を使いたいと思います。
文章の表示はエンターキーを押すまでその処理を止める性質もあります。
特殊文字も使ってメッセージを書いていきます。
\cdb[0:0:0]の攻撃!
\cdb[0:1:0]に\CSelf[10]のダメージ
といった感じです。
\cdb[0:0:0]の魔法”\udb[0:\CSelf[18]:0]”!
\cdb[0:\CSelf[12]:0]に\CSelf[10]のダメージ
というように、特殊文字の数字に特殊文字を使うことも可能です。
魔法の場合は、ダメージか回復かで条件分岐させて、メッセージを変えたほうがいいでしょう。
戦闘のコモンイベントを呼び出す
あとは実際に呼び出すだけです。
魔王の画像はサンプルゲームのDataフォルダに同梱してあります。
DBの設定もお忘れなく!!
最後に
初級編の講座はこれで終了です。お疲れさまでした。
基本的なコマンドだけを使ってゲームを作ってみましたが、大体のゲーム制作の流れがわかったのではないでしょうか。
ピクチャやDBなど、まだ細かく説明できる部分はありますが、
ここまでできれば公式マニュアルを見ながら作れるレベルにはなっていると思います。
さすがに初心者が、これを30分で、設計から実装できるとは考えていません。
いくら変数操作や条件分岐がわかっても、実際にそれを使い組み立てるのは経験や慣れが必要でしょう。
ウディタが、「プログラム的な思考が必要」と言われるのは、こういった部分があるからです。
しかしウディタがプログラムと決定的に違うのが、コマンドがリストアップされ、何ができるのかが明示されていることでしょう。
自分が実装したい機能を、コマンドを見ながら試行錯誤することが、ウディタには可能です。
初心者は時間がかかってしまったり、回り道をしてしまうことがあるでしょうが、
逆に言うと、初心者でも時間をかければ、遠回りなってしまってもウディタでシステムをくみ上げられるということです。
この講座が少しでもウディタを扱い始めた方々の助力になれば幸いです。
初級編の講座はこれで終了ですが、最後に演習問題を置いておきます。
ぜひトライしてみてください!!