// ------------------------------------------------------------------------- // Shooting 1.0 // This is a simple shooting game! // // created at 2012-08-09 on MRGARITA.NET // ------------------------------------------------------------------------- enchant(); var game; // このゲーム var canon; // 自機 var cx, cy; // 自機の初期位置 var enemys; // 敵 var enemySpeed; // 敵の速度 var score; // スコア表示用 var mode; // ゲームモード GAME/GAMEOVER // ----- 乱数生成関数 var rand = function(n){ return (Math.floor(Math.random() * n)); }; // ----- 初期化関数 var init = function(){ enemys = []; enemySpeed = 5; cx = 150; cy = 330; }; // ----- 自機のショット生成関数 var create_shot = function(){ game.assets['shot.mp3'].play(); // Sound Effect var shot = new Sprite(16, 16); shot.image = game.assets['shot.png']; shot.x = canon.x + shot.width/2; shot.y = canon.y; shot.addEventListener("enterframe", function(){ shot.y -= 10; if(shot.y < 0) game.rootScene.removeChild(shot); for(i in enemys){ if(enemys[i].within(shot)){ game.assets['enemy_bang.mp3'].play(); // Sound Effect create_bang(enemys[i].x, enemys[i].y); game.score += 100; game.rootScene.removeChild(enemys[i]); game.rootScene.removeChild(shot); delete enemys[i]; delete shot; } } }); game.rootScene.addChild(shot); }; // ----- 敵の生成関数 var create_enemy = function(){ var enemy = new Sprite(32, 32); enemy.image = game.assets['enemy.png']; enemy.x = rand(game.width); enemy.y = 0; enemy.addEventListener("enterframe", function(){ enemy.y += enemySpeed; enemy.x = enemy.x + Math.cos(game.frame * 0.015); if(enemy.within(canon)){ game.assets['bang.mp3'].play(); // Sound Effect create_bang(canon.x, canon.y); game.rootScene.removeChild(enemy); canon.y = -1000; game.mode = "GAMEOVER"; game.assets['bgm.mp3'].stop(); // Sound Effect } }); game.rootScene.addChild(enemy); enemys.push(enemy); }; // ----- 爆発画像生成関数 var create_bang = function(x, y){ var bang = new Sprite(32, 32); bang.image = game.assets['bang.png']; bang.frame = 0; bang.x = x; bang.y = y; bang.nextFrame = game.frame + 3; game.rootScene.addEventListener("enterframe", function(){ if(game.frame > bang.nextFrame){ bang.nextFrame = game.frame + 3; bang.frame ++; } if(bang.frame >= 6) game.rootScene.removeChild(bang); }); game.rootScene.addChild(bang); }; // ===== ここから開始 window.onload = function(){ // 初期設定 init(); // ゲーム画面設定 game = new Game(320, 480); game.fps = 30; game.rootScene.backgroundColor = "#000"; game.mode = "GAME"; game.score = 0; // 画像をロード game.preload('canon.png'); game.preload('enemy.png'); game.preload('shot.png'); game.preload('enemy_shot.png'); game.preload('bang.png'); // 効果音をロード game.preload('shot.mp3'); game.preload('enemy_shot.mp3'); game.preload('bang.mp3'); game.preload('enemy_bang.mp3'); game.preload('bgm.mp3'); // ゲーム設定 game.onload = function(){ // 自機 canon = new Sprite(32, 32); canon.image = game.assets['canon.png']; canon.x = cx; canon.y = cy; canon.shotInterval = 5; canon.shotMode = "OFF"; // スコアラベル score = new Label(); score.x = 24; score.y = 36; score.color = "#fff"; score.font = "24px Impact"; score.opacity = 0.6; score.addEventListener("enterframe", function(){ score.text = "SCORE: " + game.score; }); // イベント処理 game.rootScene.addEventListener("touchstart", function(e){ canon.shotMode = "ON"; canon.x = e.x - canon.width/2; if(game.mode == "GAMEOVER"){ init(); canon.y = cy; game.score = 0; game.mode = "GAME"; game.assets['bgm.mp3'].play(); // Sound Effect } }); game.rootScene.addEventListener("touchend", function(e){ canon.shotMode = "OFF"; }); game.rootScene.addEventListener("touchmove", function(e){ canon.x = e.x - canon.width/2; }); game.rootScene.addEventListener("enterframe", function(){ if(game.mode == "GAME"){ // 自機のショット if(canon.shotMode == "ON" && game.frame % 5 == 0){ create_shot(); } // 敵キャラ出現 if(rand(10) == 0){ create_enemy(); } // 敵の動きを変化させる if(game.frame % 150 == 0) enemySpeed +=2; } }); // シーンにキャラを追加 game.rootScene.addChild(canon); game.rootScene.addChild(score); game.assets['bgm.mp3'].play(); }; // ゲームスタート game.start(); } // スマートフォンのアドレスバーを消す // setTimeout("window.scrollTo(0,1)", 10);