こんばんは。YuuuuKiです。
【脱出ワールドの作り方】第32回は【コマンド】についてです。
↓【脱出ワールドの作り方】って何?という方はこちらの記事参照。↓
辞書を見ると「フラグ」とは下記のように書かれています。
・コンピューターのプログラムで、現在の状態や、設定した条件が成立したかどうかを表す変数。
・映画や小説などで、後の展開を予想させる出来事や登場人物の行動。伏線。「死亡フラグ」「恋愛フラグが立つ」
今回扱う「フラグ」は前者です。
解説
「コンピューターのプログラムで、現在の状態や、設定した条件が成立したかどうかを表す変数。」
という説明は、プログラミング経験が無い方には少しわかりにくいかと思います。
「変数」は「いろいろな値が入る箱」です。(数学のXとかYと同じです。)
例えば、Aさんが手に何も持っていない時、変数Xに0を入れます。
Aさんが手にリンゴを持っている時、変数Xに1を入れます。
すると、Xに0か1のどちらの数字が入っているかを見れば、Aさんがリンゴを持っているかどうかわかります。
脱出ワールドの中では
・プレイヤーが選択する
・全ての謎を解く
・特定の行動をとる
といった条件が成立したかどうかを判断したいときに、フラグを使う機会があると思います。
私は主に次の2つの方法でフラグを実現しています。
①scoreboardコマンドを使う
scoreboardは、変数を作成して値を管理することができるコマンドです。
詳細は調べていただければと思いますが、コマンドの中でも難しい部類なので、理解に時間がかかるかもしれません。
値の管理や現在の値を確認する方法も少し面倒だと思います。
②ブロックを使う
scoreboardより手軽で視覚的にもわかりやすいのが、ブロックを使った方法です。
条件が成立した時はどこか特定の場所にブロックを置き、成立していない時はそのブロックを削除します。
あとはtestforblocksコマンドやexecuteコマンドで、ブロックがあるかないかを確認すればよいだけです。
②について、私が過去に配布したワールド「恋したナースは行方不明」から具体例を示します。
ネタバレはありません。
実例
本作ではプレイ開始直後に以下のようなボタンがあり、ボス戦の戦闘難易度が設定できます。
コマンドは下記の通りです。
「ノーマル」ボタン
座標(135 -58 1)に「レッドストーンブロック」を設置
setblock 135 -58 1 redstone_block
「ハード」ボタン
座標(135 -58 1)に「空気」を設置
setblock 135 -58 1 air
フラグを使いたい時は下記のコマンドを連続で実行します。
条件が成立した方のコマンドだけ実行されます。
座標(135 -58 1)が「レッドストーンブロック」の場合は「ノーマル」用のモンスター(yurei:yurei_boss_normal)を召喚
execute if block 135 -58 1 redstone_block run summon yurei:yurei_boss_normal 92 21 71
座標(135 -58 1)が「空気」の時は「ハード」用のモンスター(yurei:yurei_boss_hard)を召喚
execute if block 135 -58 1 air run summon yurei:yurei_boss_hard 92 21 71
execute if block 座標 ブロック run コマンド
で座標に特定のブロックがあるときにrun以降に書いたコマンドを実行できます。
まとめ
今回は「フラグ」の実現方法を紹介しました。
本当はコマンドではなく、どういったときにフラグを使うべきかを掘り下げようかと思ったのですが……またそれは別の機会に。
以上、読んでいただきありがとうございました。