2010年12月23日木曜日

【ActionScript3.0】BINGO

忘年会シーズンなので、ビンゴゲーム用のアルゴリズムを書いてみました。自分で書くとお金がかからない上に、自由に演出ができていいですね。

ビンゴのルール
ビンゴ-wikipedia
一般的にビンゴカードはタテ・ヨコ5マスずつ、計25個のマス目が書かれている。その内、中央を除く24マスには1から75までの番号のうち24個の番号が書かれており、中央はフリースポットとして最初から有効な番号として扱われる。1枚のカードの中で同じ番号が重複することはない。

と言う訳なので、75個の数字から一文字ずつランダムで数字を取り出すと言うやり方にしました。
もっといい書き方はきっとあると思うのですが。。。。以下コード。

01private const NUM_MAX:Number = 75;
02private var _numbers:Array = [];
03private var _selectedNumbers:Array = [];
04 
05//すべての数字を格納する配列を用意する。
06private function setNumberAsset():void
07{
08    for (var i:int = 0; i < NUM_MAX; i++) {
09        _numbers.push(i + 1);
10    }          
11}
12 
13//数値が正しく得られるまで計算を繰り返す。
14private function selectNumbers():void
15{
16    var check:Boolean = false;
17    while (!check) {
18        check = checkNumber();
19    }
20//ココで数字を表示しています。
21    trace(_selectedNumbers);          
22}
23 
24//配列からランダムに数字を取り出す。
25private function checkNumber():Boolean
26{
27    var nMax:Number = 75;
28    var nMin:Number = 1;
29    var check:Boolean;
30    var selectNum:int = Math.floor(Math.random()
31         * (nMax - nMin + 1)) + nMin;
32    //元データがなかったら何もしない。
33    if (_numbers.length == 0) return true;
34     
35    for (var i:int = 0; i < _numbers.length; i++) {
36        if (_numbers[i] == selectNum) {
37            _numbers.splice(_numbers.indexOf(selectNum),1);
38            _selectedNumbers.push(selectNum);
39            return true;
40        }else {
41            check = false;
42        }
43    }
44    return check;
45     
46}


結果:クリックで数字が出ます

flash on 2010-12-23 - wonderfl build flash online

0 件のコメント:

コメントを投稿