連打ゲーム

by matubo
♥0 | Line 106 | Modified 2009-10-11 18:59:58 | MIT License
play

ActionScript3 source code

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

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
  layout="vertical" horizontalAlign="center" verticalAlign="middle">

<mx:Script>
<![CDATA[
	import mx.controls.*;
	import mx.events.*; 
	import mx.formatters.*;
	import mx.graphics.codec.*;
	import flash.external.*;
	import flash.utils.getTimer;
	import flash.utils.Timer;
	import flash.display.Sprite;
    import flash.text.*;

	private var onGame:Boolean = false;//ゲーム中か
	private var timer:Timer =new Timer(1000);//時間
	private var startTime:Number;//開始時間
	private var point:Number =1;//得点
	private var num:Number;//ボタンの番号
	
	// ゲーム開始
	private function onStartButtonClick():void {
	    //ゲーム中は開始ボタン押せないよ!
	    if(onGame){
	        return; 
	    }
	    onGame = true;
	    
	    //初期化
	    point = 1;
        
        // 開始時刻を取得
        startTime = getTimer();
        // タイマーをスタート
        timer.addEventListener(TimerEvent.TIMER, onTimerTick);
        timer.start();
	}    
    
    //時間管理
    private function onTimerTick(event:TimerEvent):void {
        // 経過時間(秒)
        var elapsedTime:int = (getTimer() - startTime)/1000;
        // 制限時間N秒から経過時間を引く
        var n:int = 10;
        var dispTime:int = n - elapsedTime;
        // 表示時刻をフォーマットし、ラベルに表示する
        if(dispTime >= 60) {
            var min:int = dispTime/60;
            var sec:int = dispTime - 60*min;
            timeLabel.text = formatTime(min, sec);
        } else if(dispTime >= 0) {
            timeLabel.text = formatTime(0, dispTime);
        } else {
            timeLabel.text = "00:00";
            timer.stop(); 
            onGame = false;
        }
    }
    
    //表示時刻のフォーマット
    private function formatTime(min:int, sec:int):String {
        var minString:String = "";
        var secString:String = "";

        if(min < 10) {
            minString = "0" + String(min);
        } else {
            minString = String(min);
        }

        if(sec < 10) {
            secString = "0" + String(sec);
        } else {
            secString = String(sec);
        }
        return minString.concat(":").concat(secString);
    }
    
    //判定
    private function onNumberButtonClick():void {
        if(!onGame){
            return;
        }
            //if(番号が合ってるか)
                pt.text = String(point++);
                //番号を++;
	}   

    
]]>
</mx:Script>


<mx:Panel
	title="クリックゲーム(^ω^)"
	horizontalAlign="center"
>

    <mx:HBox>
        <mx:Label text="点数:" fontSize="20"/>
        <mx:Label text="0" id="pt" fontSize="20"/> 
        <mx:Label text="時間:" fontSize="20"/>
        <mx:Label text="00:10" id="timeLabel" fontSize="20"/> 
        <mx:Button
    		id="btn_S"
    		label="開始"
    		click="onStartButtonClick()"
    		width="70"
    	    height="35"
    	    fontSize="14"
    	/>
    </mx:HBox>
    <mx:Canvas
	    id="cvs"
	    borderStyle="solid"
    	width="350"
    	height="250"
    	top="50"
    >
        <mx:Button
    		id="btn1"
    		label="連打!"
    		click="onNumberButtonClick()"
    		x="20"
    		y="20"
    		width="300"
    	    height="200"
    	    fontSize="50"
    	/>

    </mx:Canvas>
</mx:Panel>
</mx:Application>