flash on 2011-5-12

by olejika
一文字ずつ文字の書かれたボールが落ちてきます。
同じ色のボールの文字を並べ替えると、食べ物に関する単語になります。
正しい順番にクリックすると、その色のボールが消えます。
途中で間違いに気づいたら、ステージ上か他の色のボールをクリックすればやりなおせます。
やりなおしなしで正解するとコンボがつながり得点が上がります。
画面上のボールを全て消すと全消しボーナスが入ります。
100問クリアで終わりです。オールクリアでボーナス点が入ります。
ボールが上まで溜まるか、最後の問題で40秒以上経ってもクリアできないとゲームオーバーです。
追記:100問は疲れるので50問でクリアに修正。問題数は初期変数をいじれば変えられます。
♥0 | Line 535 | Modified 2011-05-12 01:30:30 | MIT License
play

ActionScript3 source code

/**
 * Copyright olejika ( http://wonderfl.net/user/olejika )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/mpHa
 */

/*
一文字ずつ文字の書かれたボールが落ちてきます。
同じ色のボールの文字を並べ替えると、食べ物に関する単語になります。
正しい順番にクリックすると、その色のボールが消えます。
途中で間違いに気づいたら、ステージ上か他の色のボールをクリックすればやりなおせます。
やりなおしなしで正解するとコンボがつながり得点が上がります。
画面上のボールを全て消すと全消しボーナスが入ります。
100問クリアで終わりです。オールクリアでボーナス点が入ります。
ボールが上まで溜まるか、最後の問題で40秒以上経ってもクリアできないとゲームオーバーです。
追記:100問は疲れるので50問でクリアに修正。問題数は初期変数をいじれば変えられます。
*/
package {
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.display.BitmapData;
    import flash.display.Bitmap;
    import flash.text.TextFormat;
    import flash.events.*;
    import Box2D.Collision.*;
    import Box2D.Common.Math.*;
    import Box2D.Dynamics.*;
    import Box2D.Collision.Shapes.*; 
    import caurina.transitions.Tweener;
    import flash.utils.Timer;
    import flash.filters.GlowFilter;
    public class main extends Sprite{
        private const SCALE:Number = 40;//b2d世界の大きさを定義
        private const frameRate:int = 30;//フレームレート
        private const b2dQuarity:int = 4;//b2d演算の精度(数字が大きいほど高くて高負荷)
        private var world:b2World;//物理演算フィールドの定義
        private var b2cDef:b2CircleDef;//ボールの形の定義
        private var question:Array = [];//問題を格納する配列
        private var qNumber:int = 0;//問題の番号
        private var currentQnum:int = -1;//プレイヤーが取り組んでいる問題の番号(どのボールもフォーカスされていないときは-1
        private var ballArrays:Array = [];//問題ごとに作られるボールの配列を格納する配列(2次元配列になります)
        private var answer:String = "";//プレイヤーがボールをクリックするごとに、そのクリックした文字が追加されます。答え合わせに使う変数です。
        private var score:int = 0;//スコア
        private var combo:int = 0;//コンボ
        private var maxq:int = 50;//クリアまでの問題数(10の倍数で設定)
        private var qDelay:int = 18000;//次のボールが落ちるまでの時間間隔(ミリ秒)問題が進むごとに短くなります。
        private var finalQDelay:int = 12000;//最後の問題におけるqDelayの値
        private var qDelayDec:int = (qDelay - finalQDelay)/maxq;
        private var qTimer:Timer = new Timer(qDelay,0);//問題ボールを落とすイベントトリガー
        private var gamepanel:Sprite = new Sprite();//スコアなどを表示する部分のスプライト
        private var scoreTF:ftdTextField = new ftdTextField("","right",20,0x000000);//スコアを表示するTextfield(カスタムクラス)
        private var comboTF:ftdTextField = new ftdTextField("","right",16,0x000000);//コンボを表示するTextfield(カスタムクラス)
        private var comboSprite:Sprite = new Sprite();//コンボエフェクト用スプライト
        private var ttf:TextField = new TextField();//コンボエフェクト用テキスト
        private var tft:TextFormat = new TextFormat();//コンボエフェクト用テキストの設定
        private var combospy:int = 0;//コンボエフェクト用スプライトのY座標
        private var numAns:int = 0;//プレイヤーがクリアした問題数
        private var numWo:int = 0;//ワイプアウト(全消し)の回数。ワイプアウトボーナスの計算に使用
        private var passbtn:Sprite = new Sprite();//パスボタン(未実装)
        private var passtf:TextField = new TextField();//パスボタン(未実装)
        private var wsp:Sprite = new Sprite();//"WIPE"の文字
        private var osp:Sprite = new Sprite();//"OUT!"の文字
        private var wopts:int;//本来ボールが落ちてくるタイミングからどれだけ早く全消ししたか(ミリ秒)
        private var wallBd:b2Body;//床。ゲームオーバー時消えます
        private var gover:Boolean = false;//ゲームオーバーしてるかどうか
        private var tf:TextField = new TextField();//各種メッセージ表示用
        private var stg:Sprite = new Sprite();//ステージ上のダミーのスプライト
                
        public function main(){
            stage.align = "TL";
            stage.frameRate = frameRate;
            //ゲームスタート後の処理
            question = setQarray();
            setGame();
        }
        //ゲームの準備
        private function setGame():void{
                gamepanel.graphics.beginFill(0xa0a0a0);
                gamepanel.graphics.drawRect(0,0,150,465);
                gamepanel.x = 315;
                stg.graphics.beginFill(0xa0a0a0);
                stg.graphics.drawRect(0,0,315,465);
                stg.alpha = 0;
                stg.addEventListener(MouseEvent.CLICK,gameStart);
                stage.addChildAt(stg,0);
                stage.addChild(gamepanel);
                var stf:ftdTextField = new ftdTextField();
                stf.x = 20;
                stf.y = 20;
                stf.autoSize = "left"; 
                gamepanel.addChild(stf);
                stf.text = "Score";
                scoreTF.background = true;
                scoreTF.backgroundColor = 0xFFFFFF;
                scoreTF.text = String(score);
                scoreTF.height = scoreTF.textHeight + 5;
                scoreTF.y = 50;
                scoreTF.x = 20;
                gamepanel.addChild(scoreTF);
                comboTF.text = String(combo) + " COMBO";
                comboTF.x = 20;
                comboTF.y = 100;
                gamepanel.addChild(comboTF);
                var wtf:ftdTextField = new ftdTextField("Wipe","left",50);
                var otf:ftdTextField = new ftdTextField("Out!","left",50);
                wtf.autoSize = "left";
                otf.autoSize = "left";
                wsp.addChild(Ball.bMapTxt(wtf));
                wsp.x = -100;
                wsp.alpha = 0;
                osp.addChild(Ball.bMapTxt(otf));
                osp.x = 300;
                osp.y = 50;
                osp.alpha = 0;
                tf.text = "CLICK stage to START!"
                tf.autoSize = "left";
                tf.selectable = false;
                tf.x = 100;
                tf.y = 200;
                stage.addChild(tf);
        }
            private function gameStart(e:Event):void{
                stg.removeEventListener(MouseEvent.CLICK,gameStart);
                stg.addEventListener(MouseEvent.CLICK,stageClicked);
                stage.removeChild(tf);
                setWorld();
                stage.addEventListener(Event.ENTER_FRAME,worldStep);
                qTimer.addEventListener(TimerEvent.TIMER,Qstart);
                setBall(setQuestion(question,2));
                qTimer.start();
            }
        //ボールクリック時の処理
            private function wordSelected(e:Event):void{
                var clickedBall:Ball = Ball(e.currentTarget);
                var it:int;
                var BA:Array;
                var ans:String = clickedBall.ans;
                if(currentQnum == -1){
                    currentQnum = clickedBall.qNumber;
                    answer = "";
                }
                clickedBall.removeEventListener(MouseEvent.CLICK,wordSelected);
                if(clickedBall.qNumber != currentQnum){
                    //違う色のボールをクリックした場合の処理
                    BA = ballArrays[currentQnum];
                    it = BA.length;
                    for(var i:int = 0;i < it;i ++){
                        if(BA[i].getState()){
                            BA[i].clicked();
                            BA[i].addEventListener(MouseEvent.CLICK,wordSelected);
                        }
                    }
                    answer = ""; 
                    comboCrashed();
                    clickedBall.addEventListener(MouseEvent.CLICK,wordSelected);
                    currentQnum = -1;
                }else{
                    //同じ色のボールをクリックした場合の処理
                    currentQnum = clickedBall.qNumber;
                    it = answer.length;
                    clickedBall.clicked();
                    answer += clickedBall.getTxt();
                    if(answer.length != ans.length){
                        //まだ問題の途中
                    }else{
                        if(answer == ans){
                            //正解時の処理
                            numAns ++;
                            combospy = clickedBall.y - 100;
                            BA = ballArrays[currentQnum];
                            BA.forEach(eraseBall);
                            delete ballArrays[currentQnum];
                            currentQnum = -1;
                            comboState();
                            score += answer.length + numAns * combo;
                            scoreTF.text = String(score);
                        }else{
                            //不正解時の処理
                            ballArrays[currentQnum].forEach(failedBall);
                            clickedBall.addEventListener(MouseEvent.CLICK,wordSelected);
                            comboCrashed();
                            answer = "";
                            currentQnum = -1;
                        }
                    }
                }
            }
            //ボール選択のリセット
            private function resetWord(e:Event = null):void{
                if(currentQnum != -1){
                    ballArrays[currentQnum].foreach(failedBall);
                }
            }
            private function failedBall(ball:*,index:int,ar:Array):void{
                if(ball.getState()){
                    ball.clicked();
                    ball.addEventListener(MouseEvent.CLICK,wordSelected);
                }
            }
            private function stageClicked(e:Event = null):void{
                if(currentQnum != -1){
                    var BA:Array = ballArrays[currentQnum];
                    var it:int = BA.length;
                    for(var i:int = 0;i < it;i ++){
                        if(BA[i].getState()){
                            BA[i].clicked();
                            BA[i].addEventListener(MouseEvent.CLICK,wordSelected);
                        }
                    }
                    answer = ""; 
                    comboCrashed();
                    currentQnum = -1;
                }
            }
            //正解時のボール消去
            private function eraseBall(ball:Ball,index:int,ar:Array):void{
                world.DestroyBody(ball.b2b);
                Tweener.addTween(Ball(ball),{time:0.8,alpha:0,y:10,transition:"easeInBack",transitionParams:{overshoot :0.8},onComplete:function():void{removeChild(ball);}});
            }
            private function Qstart(e:Event = null):void{
                checkBalls();
                if(question.length == 0){
                    gameover();
                }
                if(!gover){
                    setBall(setQuestion(question,2));
                    qDelay -= qDelayDec;
                    if(question.length == 0){
                        qDelay = 40000;
                    }
                    qTimer.delay = qDelay;
                    qTimer.start();
                }
            }
            //問題のセッティング 
            private function setQuestion(q:Array,numQ:int = 2):Array{
                var q1:Array = q.splice(0,numQ);
                return q1; 
            }
            private function setQarray():Array{
                var a:Array = randomSort(Qs.food3);
                var b:Array = randomSort(Qs.food4);
                var c:Array = randomSort(Qs.food5);
                var q:Array = [];
                for(var i:int = 0;i < maxq/10 - 1;i ++){
                    q = q.concat(a.splice(0,4),b.splice(0,4),c.splice(0,2));
                }
                q = q.concat(c.splice(0,10));
                return q;
            }
            //ボールのセッティング
            private function setBall(qq:Array):void{
                var qql:int = qq.length;
                var allLength:int = 0;
                var yar:Array = [];
                for(var i:int = 0;i < qql;i ++){
                    allLength += qq[i].length;
                }
                for(i = 0;i < allLength;i ++){
                    yar.push(-i*42);
                }
                yar = randomSort(yar);
                for(var j:int = 0;j < qql;j ++){
                    var q:String = qq[j];
                    var qlength:int = q.length;
                    var ballArray:Array = [];
                    var color:int = randomColor();
                    var innerColor:int = randomColor();
                    var b2dArray:Array = [];
                    var qind:int = Math.floor(Math.random()*qlength);
                    var hidden:Boolean = qlength > 4; 
                    for(i = 0;i < qlength;i ++){
                        if(hidden && i == qind && Math.floor(Math.random()*10) < 6 && numAns > maxq/2){
                            ballArray.push(new Ball(q.charAt(i),color,innerColor,qNumber,true));
                        }else{
                            ballArray.push(new Ball(q.charAt(i),color,innerColor,qNumber));
                        }
                        ballArray[i].addEventListener(MouseEvent.CLICK,wordSelected);
                        ballArray[i].x = Math.floor(Math.random()*280) + 20;
                        ballArray[i].y = yar.splice(0,1)[0];
                        var bod:b2BodyDef = new b2BodyDef();
                        bod.position.Set(ballArray[i].x / SCALE, ballArray[i].y / SCALE);
                        bod.userData = ballArray[i];
                        var circbd:b2Body = world.CreateBody(bod);
                        circbd.CreateShape(b2cDef);
                        circbd.SetMassFromShapes(); 
                        ballArray[i].b2b = circbd;
                        ballArray[i].ans = q;
                        addChild(ballArray[i]);
                    }
                    ballArrays[qNumber] = ballArray;
                    qNumber ++;
                }
                var now:Date = new Date();
                wopts = now.time;
            }
            //ランダムに色を取得
            public function randomColor():int{
                var rgb16:String = "";
                for(var i:int = 0;i < 3;i ++){
                    var a:String = String(int(Math.floor(Math.random()*140) + 50).toString(16));
                    a = a.length == 1?"0" + a:a; 
                    rgb16 += a; 
                }
                return int("0x" + rgb16);
            }
            //配列のランダムソート
            public function randomSort(a:Array):Array{
                var alength:int = a.length;
                while(alength > 0){
                    var rnd:Number = Math.floor(Math.random() * alength);
                    a.push(a[rnd]);
                    a.splice(rnd,1);
                    alength--;
                }
                return a;
            }
            //コンボ処理 
            private function comboState():void{
                combo ++;
                comboTF.text = String(combo) + " COMBO";
                if(combo > 1){displayCombo();}
            }
            //コンボ表示
            private function displayCombo():void{
                comboSprite = new Sprite();
                ttf.autoSize = "left";
                tft.color = 0xFF0000;
                tft.size = 80;
                tft.bold = true;
                ttf.defaultTextFormat = tft;
                ttf.text = String(combo);
                var tfbmp:Bitmap = Ball.bMapTxt(ttf);
                var combox:int = tfbmp.width;
                var comboy:int = tfbmp.height;
                comboSprite.addChild(tfbmp);
                tft.size = 20;
                ttf.defaultTextFormat = tft;
                ttf.text = "COMBO";
                tfbmp = Ball.bMapTxt(ttf);
                tfbmp.x = combox;
                tfbmp.y = comboy - 40;
                comboSprite.addChild(tfbmp);
                comboSprite.alpha = 1;
                comboSprite.x = 50;
                comboSprite.y = combospy; 
                stage.addChild(comboSprite);
                Tweener.addTween(comboSprite,{scaleX:1.5,scaleY:1.5,alpha:0,time:2,x:150,y:combospy-comboSprite.height,onComplete:function():void{stage.removeChild(this);}});
            }
            //コンボが途切れた時の処理
            private function comboCrashed():void{
                combo = 0;
                comboTF.text = String(combo) + " COMBO";
            }
            
            //物理演算(box2d)のセッティング
            private function setWorld():void{
                var worldAABB:b2AABB = new b2AABB();
                worldAABB.lowerBound.Set(-100.0, -100.0);
                worldAABB.upperBound.Set(100.0, 100.0);
                var gravity:b2Vec2 = new b2Vec2(0.0, 10.0);
                world = new b2World(worldAABB, gravity, true);
                
                var wallBdDef:b2BodyDef = new b2BodyDef();
                wallBdDef.position.Set(stage.stageWidth / SCALE/2, (stage.stageHeight+20) / SCALE);
                wallBd = world.CreateBody(wallBdDef);
                var wallShapeDef:b2PolygonDef = new b2PolygonDef();
                wallShapeDef.SetAsBox((stage.stageWidth + 50) / SCALE, 20 / SCALE);
                wallBd.CreateShape(wallShapeDef);
                
                var wallBdDefLeft:b2BodyDef = new b2BodyDef();
                wallBdDefLeft.position.Set(-20 / SCALE, stage.stageHeight / SCALE);
                var wallBdLeft:b2Body = world.CreateBody(wallBdDefLeft);
                var wallShapeDefLeft:b2PolygonDef = new b2PolygonDef();
                wallShapeDefLeft.SetAsBox(20 / SCALE, stage.stageHeight * 2 / SCALE);
                wallBdLeft.CreateShape(wallShapeDefLeft);
                
                var wallBdDefRight:b2BodyDef = new b2BodyDef();
                wallBdDefRight.position.Set(335 / SCALE, stage.stageHeight / SCALE);
                var wallBdRight:b2Body = world.CreateBody(wallBdDefRight);
                var wallShapeDefRight:b2PolygonDef = new b2PolygonDef();
                wallShapeDefRight.SetAsBox(20 / SCALE, stage.stageHeight * 2 / SCALE);
                wallBdRight.CreateShape(wallShapeDefRight); 
                
                b2cDef = new b2CircleDef();
                b2cDef.radius = 25 / SCALE;
                b2cDef.density = 1;
                b2cDef.friction = 1;
                b2cDef.restitution = 0.6; 
            }
            //フレームごとの処理
            private function worldStep(e:Event):void{
                var now:Date;
                var nowt:int;
                var numBalls:int = 0;
                for(var b:b2Body = world.GetBodyList(); b; b = b.GetNext()){
                    if(b.GetUserData() is Ball){
                        //物理演算処理
                        numBalls ++;
                        var balls:Ball = Ball(b.GetUserData()); 
                        balls.x = b.GetWorldCenter().x * SCALE;
                        balls.y = b.GetWorldCenter().y * SCALE;
                        balls.rotation = b.GetAngle() * 180 / Math.PI;
                        balls.alphaState = balls.alpha == 0.3 || balls.alpha == 1?"":balls.alphaState;
                        //同色ボールのフォーカス処理
                        if(currentQnum != balls.qNumber && currentQnum != -1){
                            if(balls.alphaState != "dec"){
                                balls.alphaState = "dec"; 
                                Tweener.addTween(balls,{alpha:0.3,time:1});
                            }
                        }else{
                            if(balls.alphaState != "inc"){
                                balls.alphaState = "inc";
                                Tweener.addTween(balls,{alpha:1,time:1});
                            }
                        }
                    }
                }
                //画面上にボールが無くなったら即追加
                if(numBalls == 0 && numAns < maxq && !gover){
                    qTimer.stop();
                    numWo ++;
                    wsp.x = -100;
                    osp.x = 300;
                    stage.addChild(wsp);
                    stage.addChild(osp); 
                    Tweener.addTween(wsp,{alpha:1,x:100,time:1.5,transition:"easeOutQuint",onComplete:function():void{
                        Tweener.addTween(wsp,{alpha:0,x:300,time:1.5,transition:"easeInQuint",onComplete:function():void{stage.removeChild(wsp);}});
                    }});
                    Tweener.addTween(osp,{alpha:1,x:100,time:1.5,transition:"easeOutQuint",onComplete:function():void{
                        Tweener.addTween(osp,{alpha:0,x:-100,time:1.5,transition:"easeInQuint",onComplete:function():void{stage.removeChild(osp);}});
                    }});
                    now = new Date();
                    nowt = now.time;
                    var woBonus:Number = Math.floor((qDelay - nowt + wopts)/(50 - numWo));
                    score += woBonus;
                    scoreTF.text = score.toString();
                    wopts = nowt;
                    Qstart(); 
                }
                else if(numBalls == 0 && numAns == maxq && !gover){
                    qTimer.stop();
                    tf.text = "CLEARED!";
                    stage.addChild(tf);
                    score += score*0.25;
                    scoreTF.text = score.toString();
                    gover = true;
                }
                world.Step(1 / frameRate, 4);
            }
            //ゲームオーバー処理
            private function checkBalls():void{
                for(var b:b2Body = world.GetBodyList(); b; b = b.GetNext()){
                    if(b.GetUserData() is Ball){
                        var balls:Ball = Ball(b.GetUserData());
                        if(balls.y < 25){
                            gameover(); 
                        }
                    }
                }
            }
            private function gameover():void{
                world.DestroyBody(wallBd);
                gover = true;
                qTimer.stop();
                tf.text = "GAME OVER...";
                stage.addChild(tf);
            }
    }
}

import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.events.Event;
import caurina.transitions.Tweener;
import flash.display.BitmapData;
import flash.display.Bitmap;
import Box2D.Dynamics.b2Body;
class Ball extends Sprite {
    public var b2b:b2Body;
    public var alphaState:String;
    public var ans:String;
    public var qNumber:int;
    public var numPushed:int;
    private var str:String;
    private var tf:TextField = new TextField();
    private var selectedTField:TextField = new TextField();
    private var tFormat:TextFormat = new TextFormat();
    private var bmtf:Bitmap;
    private var bmtf2:Bitmap;
    private var selected:Sprite;
    private var isSelected:Boolean = false;
    public function Ball(txt:String,color:int,innerColor:int = 0xFF0000,num:int = 0,hidden:Boolean = false,rad:int = 25){
        super();
        this.mouseChildren = false;
        this.buttonMode = true;
        this.qNumber = num;
        
        this.graphics.beginFill(color);
        this.graphics.drawCircle(0,0,rad);
        this.graphics.beginFill(innerColor);
        this.graphics.drawCircle(0,0,rad-6);
        
        this.tFormat.color = 0xFFFFFF;
        this.tFormat.align = "left";
        this.tFormat.size = 40;
        this.tFormat.bold = true;
        this.tf.defaultTextFormat = this.tFormat;
        this.str = txt;
        if(hidden){
            this.tf.text = "?";
        }else{
            this.tf.text = txt;
        }
        this.tf.width = this.tf.textWidth + 5;
        this.tf.height = rad*2;
        this.bmtf = bMapTxt(this.tf);
        this.bmtf.x = (rad*2 - this.tf.textWidth)/2 - 2 - rad;
        this.bmtf.y = -rad;
        this.addChild(this.bmtf);
        
        selected = new Sprite();
        selected.graphics.beginFill(color);
        selected.graphics.drawCircle(0,0,rad);
        selected.graphics.beginFill(innerColor);
        selected.graphics.drawCircle(0,0,rad-4);
        selected.alpha = 0;
        this.tFormat.color = 0x000000; 
        this.selectedTField.defaultTextFormat = this.tFormat;
        this.selectedTField.text = txt;
        this.selectedTField.width = this.selectedTField.textWidth + 5;
        this.selectedTField.height = rad*2;
        this.bmtf2 = bMapTxt(this.selectedTField);
        this.bmtf2.x = (rad*2 - this.selectedTField.textWidth)/2 - 2 -rad;
        this.bmtf2.y = -rad;
        this.selected.addChild(this.bmtf2);
        this.addChild(this.selected); 
    }
    public function clicked():void{
        isSelected = !isSelected;
        if(isSelected){
            Tweener.addTween(this.selected,{time:1,alpha:1,transition:"linear"});
        }else{
            Tweener.addTween(this.selected,{time:1,alpha:0,transition:"linear"});
        }
    }
    public function getState():Boolean{
        return this.isSelected;
    }
    public function getTxt():String{
        return this.str; 
    }
    public static function bMapTxt(txt:*):Bitmap{
            var bm:BitmapData = new BitmapData(txt.width,txt.height,true,0x000000000);
            bm.draw(txt); 
            return new Bitmap(bm);
    }
}

import flash.display.Sprite;
import flash.filters.GlowFilter;
class ftdTextField extends TextField{
    public var format:TextFormat = new TextFormat();
    public var size:int = 20;
    public var bold:Boolean = true;
    public var innerColor:int = 0xFFFFFF;
    public var outerColor:int = 0xFF0000; 
    public function ftdTextField(txt:String = "",align:String = "left",size:int = 20,color:int = 0x0000FF,innerColor:int = 0xFFFFFF,outerColor:int = 0xFF0000){
        format.size = size;
        format.color = color;
        format.bold = this.bold;
        format.align = align;
        this.defaultTextFormat = format;
        this.text = txt;
        this.filters = [new GlowFilter(innerColor,1,2,2,16,1),new GlowFilter(outerColor,1,4,4,16,1)];
    }
}

class Qs{
    public static var food3:Array = 
    ["ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß",];
    public static var food4:Array = 
    ["じゅう", "ひゃく", "せん", "まん", "じゅうまん", "ひゃくまん", "せんまん", "おく"];
    public static var food5:Array = 
    ["АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ",]; 
}