今日のツクールMZスクリプト【16】・変数の定義と配列をソートする。
今回は、スクリプトでわかりやすく変数を定義してそれを利用します。
ポーカーで数字の順を配列として格納するために
変数31-35をそれぞれ1枚目-5枚目のカードのナンバーとして
let pok = [$gameVariables.value(31),…,$gameVariables.valu(35)]
と添字0-4に変数31‐35を格納します。
pokはpokerの略で、配列なので[]を使う点に注意。
この配列を扱いやすくするために小さい順にソートします。
参考場所はここ。
【JavaScript】sort()で配列の値が大きい(小さい)順にソートする | ヨウスケのなるほどブログ。 (repop.jp)
pok.sort(function(a, b){return a - b});
で処理できますが、正直関数が全く分かっていません。
コピペで特に考えずにやりました。
これを実行すると
pok[0]<=pok[1]<=…<=pok[4]
となります。
コンソール上で確認すれば問題ないですが、ツクール上でも確認したいので
変数41-45にpok[0]-pok[4]を代入します
(何故か最後に5が入ってますが関係ありません)
これを文章の表示で確認すると
このように小さい順で表示されます。
また、スクリプトを分けて
この場合pok変数のスコープが切れてしまい、後半のスクリプトのpokが定義されてない状態となりエラーを吐きます。
グローバル変数はどこでもその変数として呼び出せますが、このように定義した変数は、同じスクリプト内でしか機能しないので短い中で扱うか
プラグインを利用して長いスクリプトでも問題ないようにします。
今現在プラグインの作成まではわかっていないのでいったん放置。
要参考場所
公式プラグインを読み解く | プラグインを作ってみる | プラグイン講座 | RPGツクールMZ (tkool.jp)
今回ソートして作った変数を条件分岐等で利用してポーカーの役の判定をしていきます。
具体的には
V[41]+4=V[42]+3=…=V[45]
の時にはストレート判定。
(V[41]=V[42]=V[43]=V[44]) || (V[42]=…=V[45])
の時にはフォーカード判定等。
条件式に書くときは
V[41]=V[42]=V[43] などとは使えず
V[41]=V[42] && V[42]=V[43]
と(論理)演算子?を使う必要があります。(多分)
今回は&&や||を多用して、条件分岐させました。
ちなみにスイッチの操作は、
$gameSwitches.setValue(スイッチのID, (true )or (false))
で行うことができます。