forked from: forked from: クリックゲーム(作成中

by nayu
♥0 | Line 165 | Modified 2010-05-06 21:46:58 | MIT License
play

ActionScript3 source code

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

<?xml version="1.0" encoding="utf-8"?>
<!-- forked from hacker_n_c3zfz7's forked from: クリックゲーム(作成中 -->
<!-- forked from matubo's クリックゲーム(作成中 -->
<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.*;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.net.URLVariables;
    
	private var onGame:Boolean = false;//ゲーム中か
	private var timer:Timer =new Timer(1000);//時間
	private var startTime:Number;//開始時間
	private var point:Number =1;//得点
	private var j:uint = 0;
	private var value:Number;
    private var init:uint = 50;
    private var initTime:int =30;
	
	// ゲーム開始
	private function onStartButtonClick():void {
	    //ゲーム中は開始ボタン押せないよ!
	    if(onGame){
	        return; 
	    }
	    onGame = true;
	    //初期化
	    cvs.visible = true;
	    point = 1;
	    pt.text = "0";
	    j = 0;
	    cvs.removeAllChildren();
	    
        //初期値個撒く
        makeButton(init);
        
        // 開始時刻を取得
        startTime = getTimer();
        // タイマーをスタート
        timer.addEventListener(TimerEvent.TIMER, onTimerTick);
        timer.start();
	}    
    
    //時間管理
    private function onTimerTick(event:TimerEvent):void {
        // 経過時間(秒)
        var elapsedTime:int = (getTimer() - startTime)/1000;
        // 制限時間N秒から経過時間を引く
        var dispTime:int = initTime - 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 = "--:--";
            timer.stop(); 
            onGame = false;
            cvs.visible = false;
            result();
        }
    }
    
    //表示時刻のフォーマット
    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(n:Number):void {
        if(!onGame){
            return;
        }
    
            //一致したらボタン作って消す
            if(n==init){
                pt.text = String(point++);
                makeButton(1);
                cvs.removeChildAt(n);
            }
	}   
	
	//ボタン作成
   private function makeButton(add:uint):void {
        var manyButton:Button;
        var k:int;
        var i:int = 1;
        for(i; i<=add; i++){
            k = i + j;
            manyButton = new Button();
            
            //ボタンをランダム座標に作成  
            manyButton.x = Math.floor (Math.random () * 290) + 1;
            manyButton.y = Math.floor (Math.random () * 200) + 1;
            manyButton.width = 50;
            manyButton.height = 30;
            manyButton.id = ""+k;          
            manyButton.label = ""+k;
            //manyButton.label.fontSize=20;
            
            
            //クリックされたら判定
            manyButton.addEventListener(
            MouseEvent.CLICK, 
                function(event:MouseEvent):void{
                  onNumberButtonClick(cvs.getChildIndex(DisplayObject(event.target)) + 1);
    
                }
            );
            
            //cvs.addChild(manyButton);
            cvs.addChildAt(manyButton,0);
        }  
        j = k;
      }
      
    //結果を表示
    private function result():void
    {
               //ランキングに登録しますか?
               var alert:Alert = Alert.show( user.text + "さんの点数は" + ( point-1 ) + " 点でした。ランキングに登録しますか?。","結果発表",
               Alert.YES | Alert.NO,this,regBtnClicked);
    }
    
    //ランキング登録
    function regBtnClicked(evt:CloseEvent):void
    {
        //YESが押されたら
        if(evt.detail == Alert.YES){
            //登録
            Alert.show("登録完了しました。");
        }

    }
    
    
    function ranking():void
    {
        //var vars = new LoadVars ();
        //vars.load("http://o-tb.net/game/test.txt");        
        //trace(vars.str);
    }
  
]]>
</mx:Script>


<mx:Panel
	title="クリックゲーム(^ω^)"
	horizontalAlign="center"
>
    <mx:VBox>
    <mx:HBox>
        <mx:Label text="点数:" fontSize="16"/>
        <mx:Label text="0" id="pt" fontSize="16"/> 
        <mx:Label text="時間:" fontSize="16"/>
        <mx:Label text="00:30" id="timeLabel" fontSize="16"/> 
        
    </mx:HBox>
    <mx:HBox>
        <mx:Label text="名前:" fontSize="16"/>
        <mx:TextInput id="user" width="100" height="30" fontSize="16" />
        <mx:Button
    		id="btn_S"
    		label="開始"
    		click="onStartButtonClick()"
    		width="50"
    	    height="30"
    	    fontSize="10"
    	/>
        <mx:Button
    		id="btn_R"
    		label="ランキングを見る"
    		click="ranking()"
    		width="120"
    	    height="30"
    	    fontSize="10"
    	/>
    </mx:HBox>
    </mx:VBox>

    <mx:Canvas
	    id="cvs"
	    borderStyle="solid"
    	width="350"
    	height="250"
    	top="50"
    >
    </mx:Canvas>
</mx:Panel>
</mx:Application>