20131024_01

スマフォのブラウザで遊ぶソーシャルゲームでは、Mobageは「ExGame」、GREEは「Reel」または「Theatrical」というSWF変換エンジンが提供されています。その場合は、Flash Lite 1.1でパブリッシュされたSWFファイルを変換してくれるので、JavaScriptを使ってcanvasでガリガリ演出を作るよりは、まだまだFlashが活躍している現状があります。今回は、Flash Lite 1.1で重複しないランダムを作る方法を紹介します。

Flash Lite 1.1では配列が使えません。

配列が使うことさえできれば、いろんな方法がありますが、Flash Lite 1.1はActionScript4相当なので、配列というのがありません。こういう場合は、set()関数とeval()関数を駆使して、重複しないランダムを扱う方法があります。最初に、set()関数とeval()関数のおさらいから。

js
1
2
3
4
5
6
// set()関数は変数を作って値を代入することができます。
set("hensu", "ほげほげ");
trace(hensu); //ほげほげ と出ます。
 
// eval()関数は文字列で変数を呼び出すことができます。
trace(eval("hensu")); // ほげほげ とでます。

重複しない乱数を作ってみましょう。

0〜19まで数字を20個ランダムで作る例です。

js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ran = 20;
 
// r0、r1、、、r19という変数名に、数字を入れていきます。
for (i=0; i<ran; i++) {
  set("r" add i, i);
}
 
// 下記のおまじないをつけて、
for (i=0; i<ran; i++) {
  j = random(20);
  k = random(20);
  l = eval("r" add j);
  set("r" add j, eval("r" add k));
  set("r" add k, l);
}
 
// 0〜19までの数字がランダムで出力されます。
for (i=0; i<ran; i++) {
  trace(eval("r" add i));
}

無事に出力されましたか?配列に保存することはできませんが、連番の変数名に、重複しないランダムな数字を入れることが出来ましたので、必要に応じで呼び出すことができます。