前回1200個だったものを、画面の限界まで増やして、2000個にしたので、”極み”です。
macでは軽くて問題ありませんでしたが古いWindowsでは怪しい動きになりました。
全部消すと、?! アンビリーバボー!!!!と表示されます。
// Main console.log("Hello EnchantJS!!"); var assets = [ "images/back_space.png", "images/kati_tanuki.png", "images/title.png",// タイトル "sounds/coin.mp3", "sounds/jump.mp3", "images/cf307/baayoko64.png", "images/xe_bullet_r.png", "images/gameover.png", "images/cf307/blueground.png", "sounds/cf307/decision1.mp3", "sounds/cf307/decision3.mp3", "sounds/cf307/rabohyuuu.mp3", "images/gameclear.png", "sounds/cf307/trumpet-dub1.mp3", "sounds/cf307/boyoyon1.mp3", "sounds/cf307/trumpet1.mp3", "sounds/cf307/dondonpafupafu1.mp3", "images/block_d.png", "images/cf307/block8p.png", "sounds/cf307/ME014-090610-loss02-wav.mp3", "sounds/cf307/hit04.mp3", "images/cf307/10_480.png", "images/bomb.png", ]; function gameStart(){// ゲーム画面 scene = gameManager.createGameScene(); core.replaceScene(scene); core.resume(); //========== // ここから //========== scene.backgroundColor = "darkgray"; // 背景 var sky = new ExSprite(320, 480); sky.image = core.assets["images/back_space.png"]; scene.addChild(sky); // 地面 var ground = new ExSprite(320, 55); ground.image = core.assets["images/cf307/blueground.png"]; ground.x = 0; ground.y = 480; scene.addChild(ground); // 壁左 var kabe = new ExSprite(10, 480); kabe.image = core.assets["images/cf307/10_480.png"]; kabe.x = -10; kabe.y = 0; scene.addChild(kabe); kabe.tag = "kabe"; // 壁右 var kabem = new ExSprite(10, 480); kabem.image = core.assets["images/cf307/10_480.png"]; kabem.x = 320; kabem.y = 0; scene.addChild(kabem); kabem.tag = "kabem"; // バー var bar = new ExSprite(64, 6); bar.image = core.assets["images/cf307/baayoko64.png"]; scene.addChild(bar); bar.x = 320 / 2 - 32; bar.y = 480 - 32; bar.tag = "bar"; //bar.scale(10, 1);//テスト // 玉グループ var tamaGroup = new Group(); scene.addChild(tamaGroup); // 玉 var tama = new ExSprite(9, 9); tama.image = core.assets["images/xe_bullet_r.png"]; //scene.addChild(tama); tama.x = bar.x + bar.width / 2 - tama.width / 2; tama.y = bar.y - tama.height; tamaGroup.addChild(tama); tama.originX = 0; tama.originY = 0; tama.scale(0.6, 0.6); // 最初の音 var sound0 = core.assets["sounds/cf307/decision3.mp3"].clone(); sound0.play(); // 玉の動き var x1 = getRandom(0, 320 - 5); //var x1 = getRandom(-320, 0);// テスト用 tama.tl.moveTo(x1, -9, 32, enchant.Easing.SINE_EASEOUT); // 最初に跳ね返る音 tama.tl.then(function(){ var sound1 = core.assets["sounds/cf307/decision1.mp3"].clone(); sound1.play(); }); var x2 = getRandom(0, 320 - 5); tama.tl.moveTo(x2, 480, 32, enchant.Easing.SINE_EASEOUT); // ブロックグループ var blockGroup = new Group(); scene.addChild(blockGroup); // スコア表示 var score = 0; scoreLabel = new Label('SCORE : 0'); scene.addChild(scoreLabel); scoreLabel.x = 10; scoreLabel.y = 10; scoreLabel.color = 'white'; scoreLabel.font = "24px 'PixelMplus10'"; scoreLabel.addEventListener(Event.ENTER_FRAME, function() { scoreLabel.text = 'SCORE : ' + score; }); // ブロック(繰り返し処理) var blocks = new Array(); for(var i=0; i< 2000; i++){ // ブロック var block = new ExSprite(8, 8); block.image = core.assets["images/cf307/block8p.png"]; block.x = 0 + ((i % 40) * 8); block.y = 0 + (Math.floor(i / 40) * 8); blockGroup.addChild(block); block.tag = "b";// タグをつけます blocks.push(block); } // 当たり判定をつけます for(var i=0; i<blocks.length; i++){ tama.addCollision(blocks[i]); } // 当たり判定 tama.addCollision(bar); //tama.addCollision(kabe); tama.addCollision(kabem); tama.addEventListener(Event.COLLISION, function(e) { // クリア if(2000 <= score){ tama.remove(); var label6 = new Label("?! アンビリーバボー!!!!"); label6.x = 60; label6.y = 480 / 2 - 16 / 2 + 48; label6.color = "white"; label6.font = "24px 'PixelMplus10'"; scene.addChild(label6); var sound100 = core.assets["sounds/cf307/rabohyuuu.mp3"].clone(); sound100.play(); var clear = new ExSprite(230, 32); clear.image = core.assets["images/gameclear.png"]; scene.addChild(clear); clear.x = 320 / 2 - clear.width / 2; clear.y = 480 / 2 - clear.height; clear.scale(0.5, 0.5); clear.tl.scaleTo(1.4, 1.4, 4); clear.tl.scaleTo(1.2, 1.2, 4); } // ブロックに当たったら if(e.collision.target.tag == "b"){ e.collision.target.tl.then(function() { e.collision.target.remove();// 消します var bomb = new ExSprite(32, 32); bomb.image = core.assets["images/bomb.png"]; bomb.x = e.collision.target.x; bomb.y = e.collision.target.y; scene.addChild(bomb); bomb.scale(0.5, 0.5); bomb.frame = [0, 1, 2, 3, 4, null] score += 1; var sound = core.assets["sounds/cf307/hit04.mp3"].clone(); sound.play(); }); // クリア if(1999 <= score){ tama.remove(); var label6 = new Label("?! アンビリーバボー!!!!"); label6.x = 60; label6.y = 480 / 2 - 16 / 2 + 48; label6.color = "white"; label6.font = "24px 'PixelMplus10'"; scene.addChild(label6); var sound100 = core.assets["sounds/cf307/rabohyuuu.mp3"].clone(); sound100.play(); var clear = new ExSprite(230, 32); clear.image = core.assets["images/gameclear.png"]; scene.addChild(clear); clear.x = 320 / 2 - clear.width / 2; clear.y = 480 / 2 - clear.height; clear.scale(0.5, 0.5); clear.tl.scaleTo(1.4, 1.4, 4); clear.tl.scaleTo(1.2, 1.2, 4); } } // バーに当たったら if(e.collision.target.tag == "bar"){ tama.tl.clear(); // 玉の動きのパターン var p1 = getRandom(1, 3); // (1)最初に正面に当たる if(p1 == 1){ var x1 = getRandom(0, 320 - 9); tama.tl.moveTo(x1, -9, 32, enchant.Easing.SINE_EASEOUT); tama.tl.then(function(){ var sound = core.assets["sounds/cf307/decision1.mp3"].clone(); sound.play(); }); // 正面に当たった後 var p2 = getRandom(1, 3); // (1)-1そのまま戻る if(p2 == 1){ var x2 = getRandom(0, 320 - 5); tama.tl.moveTo(x2, 480 - 5, 32, enchant.Easing.SINE_EASEOUT); } // (1)-2左の壁に当たってから戻る if(p2 == 2){ var y1 = getRandom(0, 200); tama.tl.moveTo(0, y1, 16, enchant.Easing.SINE_EASEOUT); tama.tl.then(function(){ var sound = core.assets["sounds/cf307/decision1.mp3"].clone(); sound.play(); }); var x2 = getRandom(0, 320 - 5); tama.tl.moveTo(x2, 480 - 5, 30, enchant.Easing.SINE_EASEOUT); } // (1)-3右の壁に当たってから戻る if(p2 == 3){ var y1 = getRandom(0, 200); tama.tl.moveTo(320 - 5, y1, 16, enchant.Easing.SINE_EASEOUT); tama.tl.then(function(){ var sound = core.assets["sounds/cf307/decision1.mp3"].clone(); sound.play(); }); var x2 = getRandom(0, 320 - 5); tama.tl.moveTo(x2, 480 - 5, 30, enchant.Easing.SINE_EASEOUT); } } // (2)最初に左の壁に当たる if(p1 == 2){ var y1 = getRandom(200, 400); tama.tl.moveTo(0, y1, 16, enchant.Easing.SINE_EASEOUT); tama.tl.then(function(){ var sound = core.assets["sounds/cf307/decision1.mp3"].clone(); sound.play(); }); var x1 = getRandom(0, 320 - 9); tama.tl.moveTo(x1, -9, 20, enchant.Easing.SINE_EASEOUT); tama.tl.then(function(){ var sound = core.assets["sounds/cf307/decision1.mp3"].clone(); sound.play(); }); // 正面に当たった後 var p2 = getRandom(1, 3); // (2)-1そのまま戻る if(p2 == 1){ var x2 = getRandom(0, 320 - 5); tama.tl.moveTo(x2, 480 - 5, 32, enchant.Easing.SINE_EASEOUT); } // (2)-2左の壁に当たってから戻る if(p2 == 2){ var y1 = getRandom(0, 200); tama.tl.moveTo(0, y1, 16, enchant.Easing.SINE_EASEOUT); tama.tl.then(function(){ var sound = core.assets["sounds/cf307/decision1.mp3"].clone(); sound.play(); }); var x2 = getRandom(0, 320 - 5); tama.tl.moveTo(x2, 480 - 5, 30, enchant.Easing.SINE_EASEOUT); } // (2)-3右の壁に当たってから戻る if(p2 == 3){ var y1 = getRandom(0, 200); tama.tl.moveTo(320 - 5, y1, 16, enchant.Easing.SINE_EASEOUT); tama.tl.then(function(){ var sound = core.assets["sounds/cf307/decision1.mp3"].clone(); sound.play(); }); var x2 = getRandom(0, 320 - 5); tama.tl.moveTo(x2, 480 - 5, 30, enchant.Easing.SINE_EASEOUT); } } // (3)最初に右の壁に当たる if(p1 == 3){ var y1 = getRandom(200, 400); tama.tl.moveTo(320 - 5, y1, 16, enchant.Easing.SINE_EASEOUT); tama.tl.then(function(){ var sound = core.assets["sounds/cf307/decision1.mp3"].clone(); sound.play(); }); var x1 = getRandom(0, 320 - 5); tama.tl.moveTo(x1, -9, 16, enchant.Easing.SINE_EASEOUT); tama.tl.then(function(){ var sound = core.assets["sounds/cf307/decision1.mp3"].clone(); sound.play(); }); // 正面に当たった後 var p2 = getRandom(1, 3); // (3)-1そのまま戻る if(p2 == 1){ var x2 = getRandom(0, 320 - 5); tama.tl.moveTo(x2, 480 - 5, 32, enchant.Easing.SINE_EASEOUT); } // (3)-2左の壁に当たってから戻る if(p2 == 2){ var y1 = getRandom(0, 200); tama.tl.moveTo(0, y1, 16, enchant.Easing.SINE_EASEOUT); tama.tl.then(function(){ var sound = core.assets["sounds/cf307/decision1.mp3"].clone(); sound.play(); }); var x2 = getRandom(0, 320 - 5); tama.tl.moveTo(x2, 480 - 5, 30, enchant.Easing.SINE_EASEOUT); } // (3)-3右の壁に当たってから戻る if(p2 == 3){ var y1 = getRandom(0, 200); tama.tl.moveTo(320 - 5, y1, 16, enchant.Easing.SINE_EASEOUT); tama.tl.then(function(){ var sound = core.assets["sounds/cf307/decision1.mp3"].clone(); sound.play(); }); var x2 = getRandom(0, 320 - 5); tama.tl.moveTo(x2, 480 - 5, 30, enchant.Easing.SINE_EASEOUT); } } // 音 var sound2 = core.assets["sounds/cf307/decision3.mp3"].clone(); sound2.play(); //tama.tl.moveTo(160, 471, 16); //テスト用 //score += 500; //テスト用 } }); // 画面をタップしてバーを動かす scene.addEventListener(Event.TOUCH_START, function(e){ console.log("タッチ"); console.log(e.x); bar.tl.moveTo(e.x - 32, 480 - 32, 3, enchant.Easing.QUART_EASEINOUT); }); // ゲームオーバー ground.addCollision(tama); ground.addEventListener(Event.COLLISION, function(e) { tama.remove(); var over = new ExSprite(230, 32); over.image = core.assets["images/gameover.png"]; scene.addChild(over); over.x = 320 / 2 - over.width / 2; over.y = 480 / 2 - over.height + 16; over.scale(0.5, 0.5); over.tl.scaleTo(1, 1, 8); var sound = core.assets["sounds/cf307/ME014-090610-loss02-wav.mp3"].clone(); sound.play(); over.tl.then(function() { var label = new Label(" TAP TO RETRY"); label.color = 'red'; label.font = "28px 'PixelMplus10'"; label.textAlign = "center"; label.y = 220 + 100; scene.addChild(label); scene.addEventListener(Event.TOUCH_START, function() { gameStart(); }); }); }); //========== // ここまで //========== } function getRandom(start, end) { return start + Math.floor( Math.random() * (end - start + 1)); } function titleStart(){// タイトル画面 var scene = gameManager.createTitleScene(); core.replaceScene(scene); core.pause(); scene.on(enchant.Event.TOUCH_START, function(){gameStart();}); } //========== // EnchantJS enchant(); var gameManager; var core; var scene; window.onload = function(){ gameManager = new common.GameManager(); core = gameManager.createCore(320, 480); core.preload(assets); core.onload = function(){titleStart();}; core.start(); }