↑はげまるうどんさんからのリクエストの対戦型すごろくです。
以前作ったRPGツクールMZすごろくスクリプトに少し手を加えたものになります。

マップを作成してイベントを発生させたい場所にリージョンを設定しておきます。

コモンイベントをリージョンを設定した数設定しておきます。
プレイヤーがリージョン1に止まった場合は
◆条件分岐:スクリプト:$gameMap.regionId($gamePlayer.x, $gamePlayer.y) == 1
CPUがリージョン1に止まった場合は
◆条件分岐:スクリプト:$gameMap.regionId($gameMap.event(イベントID).x, $gameMap.event(イベントID).y) ==1
で条件分岐しています。
次はすごろくのイベントを作成します。

1ページ目はCPUをプレイヤーと同じ位置に移動させてすごろくを始める宣言をしてスイッチを押してこのページはもう実行しないようにします。

2ページ目はプレイヤーのターンのイベントです。
最初の部分にある条件分岐は、プレイヤーの歩数がすごろくの一周の合計以下の場合に下記のスクリプトを実行します。
//すごろくの大きさ
const sugorokuWidth = 横の数;
const sugorokuHeight = 縦の数;
//上辺→右辺→下辺→左辺の順でマスを並べる
function sugorokuPath(w, h) {
const mass = [];
//上辺:右へ進む
for (let i = 0; i < w - 1; i++) mass.push(6);
//右辺:下へ進む
for (let i = 0; i < h - 1; i++) mass.push(2);
//下辺:左へ進む
for (let i = 0; i < w - 1; i++) mass.push(4);
//左辺:上へ進む
for (let i = 0; i < h - 1; i++) mass.push(8);
return mass;
}
//一周のマスの数
const massPath = sugorokuPath(sugorokuWidth, sugorokuHeight);
const totalSquares = massPath.length;
//一周のマスの数を変数に入れる
$gameVariables.setValue(変数, totalSquares);
//プレイヤーの現在マス
let playerIndex = $gameVariables.value(変数);
//プレイヤーの合計歩数
let totalMoved = $gameVariables.value(変数);
//サイコロを振る
let diceRoll = Math.floor(Math.random() * 6) + 1;
//名まえを表示する
$gameMessage.setSpeakerName("名前")
//顔グラを表示する
$gameMessage.setFaceImage("facesフォルダ中のイメージのファイル名", 番号)
//結果を表示する
$gameMessage.add(diceRoll + "が出た")
//サイコロが出た数だけ0.5秒間隔で1歩ずつ移動する
for (let i = 0; i < diceRoll; i++) {
setTimeout(function() {
let mass = massPath[playerIndex % totalSquares];
$gamePlayer.moveStraight(mass);
playerIndex++;
totalMoved++;
//プレイヤーの現在マスを変数に入れる
$gameVariables.setValue(変数, playerIndex % totalSquares);
//プレイヤーの合計歩数を変数に入れる
$gameVariables.setValue(変数, totalMoved);
}, i * 500);
}
//サイコロが出た数だけウェイトをかける
this.wait(diceRoll * 30);

サイコロを振った後の処理は前回と大体同じですがプレイヤーがどこにいるかを取得して自動で適した方向に進むように処理を追加しています。

リージョンに止まった場合の条件分岐を追加します。

プレイヤーの歩数が合計以下の場合はスイッチをONにして3ページ目に飛ばし、CPUにターンが移ります。
プレイヤーの歩数がすごろくの一周の合計以上の場合は勝利宣言をして終了です。

CPUの場合のイベントもプレイヤーのイベントと変数が違う位でほぼ同じです。

一周のマスの数はプレイヤー側で取得しているのでCPU側ではしていません。

CPUがリージョンに止まった場合の条件分岐を追加します。

CPUも歩数がすごろくの一周の合計以下の場合はスイッチを今度はOFFにして2ページ目に戻し、プレイヤーにターンを移します。
CPUの歩数がすごろくの一周の合計以上の場合は勝利宣言をして終了です。
これで出来上がりです。
このままでは全然面白くないすごろくですがイベントやマップ次第で楽しくなるのではないかと…!
取得したお金やアイテムを勝利条件にしても面白いですね。
是非ご自身のゲームに組み込んでみて下さい♪

コメント