Shooter Game 基本形

by DanYuya
シューティングゲーム
♥0 | Line 54 | Modified 2012-01-06 22:52:42 | MIT License
play

ActionScript3 source code

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

// シューティングゲーム
package {
    // 使用するパッケージをインポートする
    import flash.display.Sprite;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.events.MouseEvent;
    
    [SWF(backgroundColor=0x0, width=465, height=456, frameRate=30)]
    public class ShooterGame extends Sprite {
        public var timer:Timer;        // タイマー
        public var myCombat:Sprite;    // 自機
        public var myBullet:Array;     // 弾丸(複数)
        public var vy:Array;           // 弾丸の速度(y方向)
        
        public function ShooterGame() {
            // 配列(Array型)のインスタンス生成
            myBullet = new Array();
            vy = new Array();
            
            // Sprite 型の自機グラフィックスの生成
            myCombat = new Sprite();
            myCombat.graphics.beginFill( 0x99CC00, 1.0 );
            myCombat.graphics.drawRect( -2, 0, 4, 10 );
            myCombat.graphics.beginFill( 0x99CC00, 1.0 );
            myCombat.graphics.drawRect( -6, 2, 12, 2 );
            myCombat.graphics.beginFill( 0x99CC00, 1.0 );
            myCombat.graphics.drawRect( -3, 8, 6, 2 );
            myCombat.x = stage.mouseX;
            myCombat.y = stage.stageHeight - 50;
            stage.addChild( myCombat );
            
            // マウス操作に関するイベントハンドラの登録
            stage.addEventListener( MouseEvent.MOUSE_MOVE, mMove );
            stage.addEventListener( MouseEvent.CLICK, mClick );
            
            // タイマーに関するイベントハンドラの登録とタイマーの開始
            timer = new Timer( 50 );
            timer.addEventListener( TimerEvent.TIMER, loop );
            timer.start();
        }

        public function mMove( event:MouseEvent ): void{
            // 自機の位置をマウスの位置(x座標)に合わせる
            myCombat.x = stage.mouseX;
        }

        public function mClick( event:MouseEvent ): void{
            // 弾丸のグラフィックスを生成する
            var bullet:Sprite = new Sprite();
            bullet.graphics.beginFill( 0xFFFF00, 1.0 );
            bullet.graphics.drawCircle( 0, 0, 5 );
            bullet.graphics.beginFill( 0xFFFF00, 0.5 );
            bullet.graphics.drawCircle( 0, 4, 4 );
            bullet.graphics.beginFill( 0xFFFF00, 0.25 );
            bullet.graphics.drawCircle( 0, 8, 3 );
            bullet.x = myCombat.x;
            bullet.y = myCombat.y - 10;
            myBullet.push( bullet );    // 弾丸を配列 myBullet に追加する
            vy.push( -10 );   // 弾丸の y 方向の速度
            stage.addChild( myBullet[myBullet.length - 1] );
        }

        public function loop( event:TimerEvent ): void{
            // 全ての弾丸の運動
            for( var i:int = 0; i < myBullet.length; i++ ){
                myBullet[i].y += vy[i];
            }
        }
    }
}

Forked