#2 click game ver 0.1

by hidebo forked from #1 click game ver 0.01 (diff: 107)
お約束
使うなら書け
意味不明
♥0 | Line 99 | Modified 2010-09-03 20:08:15 | MIT License
play

ActionScript3 source code

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

// forked from hidebo's #1 click game ver 0.01
package {                                                    // お約束
    import flash.display.*;                                    // 使うなら書け
    import flash.text.*;
    import flash.events.*;
    import flash.utils.getTimer;
    
    [SWF(width=240, height=240, backgroundColor=0xFFFFFF)]    // 意味不明
    public class Main extends Sprite {                        // イマイチ不明
        private const MAT_R:int = 10;                    // 的の半径
        private const TRY_COUNT:int = 5;                    // 何回するか

        private const WEEK:Array = ["日", "月", "火", "水", "木", "金", "土"];

        private var monitor:TextField;                        // デバッグ用のモニター表示部
        private var gm:TextField;                        // ゲームメッセージ表示部
        private var sf:TextField;                        // スコア表示部
        private var canvas:Sprite;                       // 的表示部

        private var irqcounter:uint = 0;                       // IRQC
        private var trycount:int = 0;                       // クリックした回数
        private var score:int = 0;                       // スコア合計
        private var oldtime:int = 0;
        private var clicktime:int = 0;

        /****************************************************************/
        //        始まりはいつもここから
        /****************************************************************/
        public function Main() {
            gm = new TextField();
            gm.defaultTextFormat = new TextFormat("_typeWriter", 30, 0x0, true);
            gm.selectable = false;                      //選択不可
            gm.autoSize = "left";
            gm.text = "START";                                // START表示したい
            gm.x = (stage.stageWidth  - gm.width ) / 2;        // 真ん中に
            gm.y = (stage.stageHeight - gm.height) / 2;
            addChild(gm);
 
            monitor = new TextField();                        // モニターだすのだ
            monitor.defaultTextFormat = new TextFormat("_typeWriter", 8, 0x0, true);
            monitor.width  = stage.stageWidth;          // 幅は画面いっぱい
            monitor.height = 12;                        // 高さ            
            monitor.background = true;                        // 背景色つけるよ
            monitor.backgroundColor = 0xF0F0F0;            
            addChild(monitor);
  
            stage.frameRate = 60;                                // 60FPS(1秒60コマ)だよ
            addEventListener(Event.ENTER_FRAME, onEnterFrame);    // 1フレームごとに飛んでけ
            stage.addEventListener(MouseEvent.CLICK, init);    //クリックしたらはじまるよ
        }
        /****************************************************************/
        //    1フレーム毎に飛んでくるよ
        /****************************************************************/
        private function onEnterFrame(evt:Event):void {
            var date:Date = new Date();
            monitor.text = "";
            monitor.appendText(date.fullYear+"年"+(date.month+1)+"月"+date.date+"日"+"("+WEEK[date.day]+")"+date.toLocaleTimeString()); 
            monitor.appendText(" IRQC="+(++irqcounter).toString());                // IRQC書くよ
        }
        /****************************************************************/
        //    初期化しちゃうよ
        /****************************************************************/
        private function init(event:Event):void {
            stage.removeEventListener(MouseEvent.CLICK, init);    // START の CLICK はもう忘れた
            gm.visible = false;                                    // メッセージはさしあたり消えといて

            score = 0                                       // スコアは0に
            trycount = 0                                    // 回数も0
            oldtime=getTimer();                            // 開始時間を覚えとこう
          
            sf = new TextField();                        //スコア書くよ
            sf.defaultTextFormat = new TextFormat("_ゴシック", 16, 0x0, true);
            sf.autoSize = "left";
            sf.selectable = false;                      //選択不可
            addChild(sf);                                //表示しといてね
            sf.text = "SCORE="+score.toString();                // スコア書くよ
            sf.y = stage.stageHeight - sf.height;                    // スコアの位置は下だよ

            canvas = new Sprite();                        //的書くよ
            canvas.graphics.beginFill(0xFF0000);            // 赤色で塗りつぶすよ
            canvas.graphics.drawCircle(0, 0, MAT_R);           // (0,0)ベースで書くよ
            canvas.graphics.endFill();                         // さあ書け
            matoRandom();
            addChild(canvas);                                // 表示しといてね
            // event 
            canvas.addEventListener(MouseEvent.CLICK, onMouseClick);    // 的をクリックしたら飛んでね
        }
        /****************************************************************/
        //    的をクリックしたらやる事あるよ
        /****************************************************************/
        private function onMouseClick(evt:MouseEvent):void {
            var nowscore:int;
            clicktime=getTimer()-oldtime;                                // クリック時間計算しちゃえ
            oldtime+=clicktime;
            trycount++; 

            nowscore = (10000-clicktime)/100;                            // 時間でスコア決めちゃった
            if (nowscore < 0) nowscore = 0;                                // あんまり遅いと0点に
            score += nowscore;                                            // スコア合計アップ
  
            if (trycount >= TRY_COUNT) end()                            // 終わっちゃった?
            else {
                sf.text = trycount+"回 SCORE="+(score).toString()+"点, 今回"+nowscore+"点";               // スコア書くよ
                sf.y = stage.stageHeight - sf.height;                    // スコアの位置は下だよ
    
                matoRandom();                                            // 的はランダムがお好き
            }
        }
        /****************************************************************/
        //    的の場所をランダムで決めちゃうよ
        /****************************************************************/
        private function matoRandom():void {
            canvas.x = Math.random()*(stage.stageWidth-MAT_R*2)+MAT_R;    // ランダムで次の位置決めるよ
            canvas.y = Math.random()*(stage.stageHeight-MAT_R*2)+MAT_R;
        }
        /****************************************************************/
        //    終わったぁ
        /****************************************************************/
        private function end():void
        {
            canvas.visible = false;                                    // 的はさしあたり消えといて
            canvas.removeEventListener(MouseEvent.CLICK, onMouseClick); // 処理を止める
 
            gm.visible = true;                                    // メッセージは出したいね
            gm.text = "FINISH";                                // FINISH表示したい
            gm.x = (stage.stageWidth  - gm.width ) / 2;        // 真ん中に
            gm.y = (stage.stageHeight - gm.height) / 2;

            sf.text = "SCORE = "+(score).toString()+"/"+TRY_COUNT*100+"点";               // スコア書くよ
            sf.x = (stage.stageWidth - sf.width)/2;                    // スコアの位置は下だよ
            sf.y = (stage.stageHeight*3/4);                    // スコアの位置は下だよ
        }
     }
}

Forked