トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     続AS1.0からAS3.0にしたらシャッフルしなくなった
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ikeike
Åê¹ÆNo.50154
投稿日時: 2014-2-7 16:00
新米
居住地:
投稿: 23
使用環境:
win7, Flash CS6
続AS1.0からAS3.0にしたらシャッフルしなくなった
前回の投稿の続です。よろしくお願いいたします。

//1?12を順番に並べた配列「nmbrList」を作る
nmbrList = [];
for (i=1; i<=12; i++) {
nmbrList.push(i);
}

//1?12をランダムに並べた配列「rdomList」を作る
rdomList = [];
for (k=12; k>=1; k--) {
rdNum = Math.floor(Math.random()*(k));
chiceNum = nmberList[rdNum];
rdomList.push(chiceNum);
nmbrList.splice(rndNum, 1);
}

//ステージや駒の大きさを設定
fildLeft = 0;
fildTop = 0;
piceW = 60;
piceH = 75;
spceLeft = 5;
spceTop = 5;

//ステージの方眼上の位置を調べる
for (n=1; n<=12; n++) {
Row = Math.ceil(n/4);
Column = n-(Row-1)*4;

//ランダムな数字をインスタンス名として指定する
piceNum = rndomList[n-1];
piceName = this["MC"+piceNum];

//駒のY座標とX座標を設定する
piceName._y = fildTop-piceH*0.5+spceTop*Row+piceH*Row;
piceName._x = fildLeft-piceW*0.5+spceLeft*Column+piceW*Column;
}

weedmill
Åê¹ÆNo.50161
投稿日時: 2014-2-9 18:29
新米
居住地: Tokyo
投稿: 5
使用環境:
windows7,FlashCS5
Re: 続AS1.0からAS3.0にしたらシャッフルしなくなった
-------


//1?12をランダムに並べた配列「rdomList」を作る
rdomList = [];
for (k=12; k>=1; k--) {
    rdNum = Math.floor(Math.random()*(k));
    chiceNum = nmberList[rdNum];
    rdomList.push(chiceNum);
    nmbrList.splice(rndNum, 1);
}



ではなく、以下のようにしてみてはどうですか。
nmbrListのみでシャッフル出来ます。


//シャッフルする。
var length:int = nmbrList.length;
for (k=0; k<length; k++) {
    var tmp:uint    = Math.floor(Math.random()*(length));
    var tmpNum:uint = nmberList[tmp];
    nmberList[tmp]  = nmberList[k];
    nmberList[k]    = tmpNum;
}



以下のサイト様が、この問題についての回答を説明して下さっています。

にゃあプロジェクト - [AS3.0] 配列をシャッフルする-

HAKUHIN's home page -シャッフルについて-


-------
ikeike
Åê¹ÆNo.50164
投稿日時: 2014-2-10 16:01
新米
居住地:
投稿: 23
使用環境:
win7, Flash CS6
Re: 続AS1.0からAS3.0にしたらシャッフルしなくなった
weedmill さま
ご提案ありがとうございます。
勉強させていただきます。
さらに他のシャッフル方法も検討してみようと思います。
しばらく時間がかかりますが。
野中文雄
Åê¹ÆNo.50167
投稿日時: 2014-2-10 16:37
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 続AS1.0からAS3.0にしたらシャッフルしなくなった
並べ替えを厳密に考えるなら、偏りにも気を配った方がよいでしょう。

配列を偏りなくランダムに並べ替える


----------------
 

weedmill
Åê¹ÆNo.50169
投稿日時: 2014-2-11 13:44
新米
居住地: Tokyo
投稿: 5
使用環境:
windows7,FlashCS5
Re: 続AS1.0からAS3.0にしたらシャッフルしなくなった
ikeikeさん、自分もまだまだです
どんどん高みを目指していきましょう!

野中さん、
ランダムについてのアルゴリズム、
そのような落とし穴があるとは思いませんでした。
ありがとうございます。

-----
ikeike
Åê¹ÆNo.50170
投稿日時: 2014-2-11 18:35
新米
居住地:
投稿: 23
使用環境:
win7, Flash CS6
Re: 続AS1.0からAS3.0にしたらシャッフルしなくなった
野中さま
ご提案ありがとうございます。
しばらくのあいだあれこれ迷走?してみます。
ひろゆき
Åê¹ÆNo.50175
投稿日時: 2014-2-12 17:32
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 続AS1.0からAS3.0にしたらシャッフルしなくなった
ArrayUtilsクラス をどうぞ。

[使い方]
import utils.ArrayUtils;

var originalList:Array = ArrayUtils.createIds(10);
//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

var shuffledList:Array = ArrayUtils.shuffle(originalList);
//[3, 5, 9, 0, 2, 6, 4, 8, 7, 1] (例)


----------------
質問する際は、回答者に具体的な情報を与えてください。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops