こんにちは!今回はランダムでシナリオを表示するコードを作成しました。
今回のテスト内容は10つのシナリオの内、ランダムで3つを表示した後にエンディングに進むという作品に使用できます。
まずは動画とコードをご覧ください。
*start
ランダムシナリオテスト開始[p]
[iscript]
//シャッフル設定
function arrShuffle(arr){
var len = arr.length;
while(len > 0){
var rnd = Math.floor(Math.random() * len);
var tmp = arr[len-1];
arr[len-1] = arr[rnd];
arr[rnd] = tmp;
len-=1;
}
}
//配列を生成
var arr = [1,2,3,4,5,6,7,8,9,10];
//配列をシャッフルする
arrShuffle(arr);
//配列をゲーム変数へ
f.ran1 = arr[0];
f.ran2 = arr[1];
f.ran3 = arr[2];
[endscript]
;ループカウンタ
[eval exp="f.cnt=1"]
;ループ開始位置
*loopstart
;ジャンプ先ラベル設定
[iscript]
if (f.cnt==1) {
f.label = "*"+f.ran1;
}
else if (f.cnt==2) {
f.label = "*"+f.ran2;
}
else if (f.cnt==3) {
f.label = "*"+f.ran3;
}
[endscript]
[jump target=&f.label]
;ジャンプ先ラベル
*1
1のラベルを表示[p]
[jump target=*labelend]
*2
2のラベルを表示[p]
[jump target=*labelend]
*3
3のラベルを表示[p]
[jump target=*labelend]
*4
4のラベルを表示[p]
[jump target=*labelend]
*5
5のラベルを表示[p]
[jump target=*labelend]
*6
6のラベルを表示[p]
[jump target=*labelend]
*7
7のラベルを表示[p]
[jump target=*labelend]
*8
8のラベルを表示[p]
[jump target=*labelend]
*9
9のラベルを表示[p]
[jump target=*labelend]
*10
10のラベルを表示[p]
[jump target=*labelend]
*labelend
;ループカウント3の時*loopendへジャンプ
[jump target=*loopend cond="f.cnt==3"]
;ループカウント+1する
[eval exp="f.cnt=f.cnt+1"]
;ループ最初に戻る
[jump target=*loopstart]
*loopend
ランダムシナリオテスト終了[p]
[jump target=*start]
以前、記事にも書きましたループ処理の合わせ技です。
コードが少し長くなりましたが、そのままコピーして使えるコードです。
1行目と97行目はランダムの検証のために入れたので、実際に使用する際は削除して下さい。
10つのシナリオではなく、5つのシナリオの中から…という場合は18行目の配列の数を変えて下さい。
3つランダムではなく、5つランダムで…という場合は23行目以降、ゲーム変数に入れるのを増やして下さい。また、37行目以降のジャンプ先ラベル設定と85行目以降のループする回数を変更して下さい。
不明点は https://twitter.com/oOPonkaOo ツイッターDM等で頂ければお答えいたします。
それではまた!