flash on 2010-7-12
♥0 |
Line 60 |
Modified 2010-07-16 19:34:58 |
MIT License
archived:2017-03-20 05:37:37
ActionScript3 source code
/**
* Copyright enecre ( http://wonderfl.net/user/enecre )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/gIQc
*/
package {
import flash.text.TextField;
import flash.display.Sprite;
public class FlashTest extends Sprite {
private var tf:TextField;
public function FlashTest() {
// write as3 code here..
tf = new TextField();
tf.width = 465; tf.height = 465;
tf.text = "32人で完全ランダムに4回戦しての平順上位5名を表示。大会10回分シミュレート。\n";
addChild(tf);
for(var i:int = 0; i<10;i++){
combat(i);
}
}
private function combat(n:int):void{
var players:Vector.<Player> = new Vector.<Player>(32);
for(var i:int = 0; i<32; i++){
players[i] = new Player();
}
for(var j:int = 0; j<4; j++){
players = ExArray.shuffle(players);
for(var k:int = 0; k < 32; k++){
players[k].addResult(k % 4 + 1);
}
}
//5ninsensyutu
players.sort(function(x:Player, y:Player):Number{return x.sum() - y.sum()});
//hyouji
tr((n+1) + "回目");
tr(players.slice(0,5));
}
private function tr(...o:Array):void{
tf.appendText(o + "\n");
tf.scrollV = tf.maxScrollV;
}
}
}
class Player {
private var results:Vector.<int>= new Vector.<int>();
public function addResult(n:int):void{
results.push(n);
}
public function sum():int{
return results[0] + results[1] + results[2] + results[3];
}
public function toString():String{
return "[" + results.join(",") + "]";
}
}
class ExArray {
static public function shuffle(arr:Vector.<Player>):Vector.<Player>{
var l:int = arr.length;
var newArr:Vector.<Player> = arr.concat();
while(l){
var m:int = Math.floor(Math.random()*l);
var n:Player = newArr[--l];
newArr[l] = newArr[m];
newArr[m] = n;
}
return newArr;
}
}