モバイルゲームを作成するにあたり、7つのパネルをかぶらずランダムに表示させる
方法を考えねばならなかったのだけれども、どうやらActionScript1には配列の概念が
ないらしく、ランダム関数はあるもののランダムに一つずつ表示させる方法が少々困難
になる。
ここで一つその方法を紹介すると
/:number1 = 1;
/:number2 = 2;
/:number3 = 3;
/:number4 = 4;
/:random1 = random(4)+1;
/:random2 = random(4)+1;
/:w = eval("/:number" add /:random1);
set("/:number" add /:random1, eval("/:number" add /:random2));
set("/:number" add /:random2, /:w);
for (i=1; i<=4; i++)
{
/:test = eval("/:number" add i);
trace("/:number" add i add " = " add /:test);
}
この式のとおり疑似配列を用いることでランダムな4つの数値を一つずつ取り出す事が可能になる。
しかしこの式よりも多い配列、15以上のものを瞬時に出すとなるとモバイルの計算の悪さ
なのか、この式が無理矢理すぎるのか正確なランダム数値というよりかは多少似たり寄ったり
になってしまう。
そこでもう一つ疑似配列を使ってあげ、2回ほどこの作業を繰り返せばりっぱな数値が取り出せるはずです。
こんな感じで。
/:tsetNumber1 = 1;
/:testNumber2 = 2;
/:testNumber3 = 3;
/:testNumber4 = 4;
/:random1 = random(4)+1;
/:random2 = random(4)+1;
/:w = eval("/:testNumber" add /:random1);
set("/:testNumber" add /:random1, eval("/:testNumber" add /:random2));
set("/:testNumber" add /:random2, /:w);
for (i=1; i<=4; i++)
{
/:test1 = eval("/:testNumber" add i);
trace("/:testNumber" add i add " = " add /:test1);
}
/:number1 = testNumber1;
/:number2 = testNumber2;
/:number3 = testNumber3;
/:number4 = testNumber4;
/:random3 = random(4)+1;
/:random4 = random(4)+1;
/:z = eval("/:number" add /:random3);
set("/:number" add /:random3, eval("/:number" add /:random4));
set("/:number" add /:random4, /:z);
for (i=1; i<=4; i++)
{
/:test2 = eval("/:number" add i);
trace("/:number" add i add " = " add /:test2);
}
ほかにもスマートなランダムに配列を作成する方法がありそうです。いや、なさそうです。
もしありましたら教えてくださいませ。
