マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

簡単なシューティングゲーム作成 その3

前回は敵を作ったので実際に登場させてみることにした。まずはHTMLで前回追加したJavaScriptを読み込んでおく

    <script type="text/javascript" src="./object/GameObject.js"></script>
    <script type="text/javascript" src="./object/Enemy1.js"></script>

そして、GameView.js。init()で敵の追加とdraw()で敵の行動と描画を行うようにした

var GameView = function(context, width, height){
    var images = new Array();
    var isLoadedImage = false;
    var player;
    var gameInfo;

    this.draw = function(){
        if(!isLoadedImage){
            return;
        }

        context.fillStyle = 'rgb(0, 0, 0)';
        context.fillRect(0, 0, 600, 400);

        //プレイヤー機の移動
        player.doAction(gameInfo);
        player.draw(context);

        //プレイヤー機が撃った弾の移動
        for(i = 0; i < gameInfo.bullets.length; i++){
            var bullet = gameInfo.bullets[i];
            bullet.doAction(gameInfo);
            bullet.draw(context);
        }
        
        //敵の行動
        for(i = 0; i < gameInfo.enemies.length; i++){
            var enemy = gameInfo.enemies[i];
            enemy.doAction(gameInfo);
            enemy.draw(context);
        }
    }
    
    this.loadImages = function(names, files){
        var count = 0;

        for(i = 0; i < files.length; i++){
            var image = new Image();
            image.src = files[i];
            images[names[i]] = image;

            image.onload = function(){
                count++;

                if(count == files.length){
                    init();
                }
            }
        }
    }
    
    this.onDirection = function(direction){
        player.onDirection(direction);
    }
    
    this.offDirection = function(direction){
        player.offDirection(direction);
    }
    
    this.fire = function(fire){
        player.fire = fire;
    }
    
    function init(){
        player = new Player(images["Player"]);
        gameInfo = new GameInfo();
        gameInfo.player = player;
        gameInfo.width = width;
        gameInfo.height = height;
        
        //敵を一体だけ追加する
        var enemy = new Enemy1(images["Enemy1"]);
        enemy.move(650, 100);
        gameInfo.enemies.push(enemy);
        
        isLoadedImage = true;
    }
}