8.おいも=3(音注意)^^ を発展させて、おならの音に合うように、戦闘機におしりをつけようと思ったのですが、戦闘機の好きな人に怒られるかもと思い、クレヨンしんちゃんのようなおしりにしようと思いましたが、おしりそのままでは生々しいので、お尻の象徴である桃になりました。
何もしないと落ちて行き、おいもをたべるとおならのガス噴射で進むというものを最初から考えていましたが、まずは簡単バージョンで、落ちず進まず横移動でおいもを食べて行くというものを作りました。
クリアすると「ブブッブ、ピンポーン」と鳴りますが、この「ブブッブ」のリズムは偶然の産物です。
// Main
console.log("Hello EnchantJS!!");
var assets = [
"images/back_sky.png",
"images/title.png",// タイトル
"sounds/coin.mp3",
"sounds/jump.mp3",
"images/cf307/momo.png",
"images/joe_gass.png",
"sounds/gass.mp3",
"images/cf307/oimo (3).png",
"images/b_left.png",
"images/b_right.png",
"images/cf307/wareimo (1).png",
"images/cf307/wareimo1 (2).png",
"sounds/cf307/jump12.mp3",
"images/title_gameclear.png",
"images/cf307/blueground.png",
"images/title_gameover.png",
"images/cf307/momochanzannen.png",
"sounds/cf307/se_maoudamashii_onepoint31.mp3",
"sounds/cf307/correct2.mp3",
"images/cf307/oimokirakira.png",
"images/cf307/oimokirakira1.png",
"images/cf307/igaguri.png",
"images/b_red.png",
"images/cf307/hi.png",
"sounds/cf307/matchstick-put-fire1.mp3",
"sounds/bomb.mp3",
"images/bomb.png",
"sounds/cf307/strike1.mp3",
"images/back_mountain.png",
"sounds/cf307/kotsudumi1.mp3",
"sounds/cf307/suck1.mp3",
"images/cf307/wareguri.png",
"images/cf307/igagurikuru.png",
"images/cf307/oimohokahoka1.png",
];
function gameStart(){// ゲーム画面
scene = gameManager.createGameScene();
core.replaceScene(scene); core.resume();
//==========
// ここから
//==========
scene.backgroundColor = "skyblue";
// 空
var sky3 = new ExSprite(320, 241);
sky3.image = core.assets["images/back_mountain.png"];
scene.addChild(sky3);
sky3.tl.moveTo(0, 240, 0);
sky3.tl.moveBy(0, 240, 250);
sky3.tl.loop();
var sky1 = new ExSprite(320, 241);
sky1.image = core.assets["images/back_mountain.png"];
scene.addChild(sky1);
sky1.tl.moveTo(0, -240, 0);
sky1.tl.moveBy(0, 480, 500);
sky1.tl.loop();
sky1.tl.skip(500/2);
var sky2 = new ExSprite(320, 241);
sky2.image = core.assets["images/back_mountain.png"];
scene.addChild(sky2);
sky2.scale(-1, 1);
sky2.tl.moveTo(0, -240, 0);
sky2.tl.moveBy(0, 480, 500);
sky2.tl.loop();
sky2.tl.skip(0);
// おいもグループ
var oimoGroup = new Group();
scene.addChild(oimoGroup);
// 地面
var ground = new ExSprite(320, 55);
ground.image = core.assets["images/cf307/blueground.png"];
ground.x = 0;
ground.y = 480;
scene.addChild(ground);
// おいもが落ちてくる
scene.tl.delay(30);
scene.tl.then(function() {
var oimo = new ExSprite(32, 32);
oimo.image = core.assets["images/cf307/oimohokahoka1.png"];
oimo.x = bigoimo.x + bigoimo.width / 2 - oimo.width/2;
oimo.y = bigoimo.height / 2 - oimo.height / 2 + 34;
oimoGroup.addChild(oimo);
oimo.frame = [0, 1, 2, 3, 4]
oimo.scale(1.2, 1.2);
oimo.tl.moveBy(0, 480, 150);
oimo.tl.then(function() {
oimo.remove();
});
// おいもでももちゃんがブッ
oimo.addCollision(momo);
oimo.addEventListener(Event.COLLISION, function(e) {
// おいもが消えて
oimo.tl.clear();
oimo.tl.moveBy(0, -5, 0);
oimo.tl.fadeTo(0.5, 0).and().scaleTo(0.2, 0.2, 5);
var sound = core.assets["sounds/cf307/suck1.mp3"].clone();
sound.play();
oimo.tl.delay(0);
oimo.tl.then(function(){
var sound = core.assets["sounds/gass.mp3"].clone();
sound.play();
oimo.remove();
// ももちゃんブッ
var bomb = new ExSprite(32, 32);
bomb.image = core.assets["images/joe_gass.png"];
bomb.x = momo.x;
bomb.y = momo.y + 32;
scene.addChild(bomb);
bomb.frame = [0, 1, 2, 3, 4, null];
});
// 満腹度アップ
score += 10;
// 100点になると
if(90 < score){
// 中央に移動
bigoimo.tl.clear();
bigoimo.tl.moveTo(160 - 40, 34, 10);
bigoimo.tl.then(function(){
// いがぐり消える
asteroidGroup.remove();
bigoimo.tl.clear();
// おいもシャワー
bigoimo.tl.delay(2);
bigoimo.tl.then(function(){
var oimo = new ExSprite(32, 32);
oimo.image = core.assets["images/cf307/oimo (3).png"];
oimo.x = bigoimo.x + bigoimo.width / 2 - oimo.width/2;
oimo.y = bigoimo.height / 2 - oimo.height / 2 + 34;
oimoGroup.addChild(oimo);
oimo.scale(1.2, 1.2);
var x3 = getRandom(-100, 420);
oimo.tl.moveTo(x3, 480, 120/2);
oimo.tl.then(function() {
oimo.remove();
});
// ももちゃんおいもシャワーを浴びる
oimo.addCollision(momo);
oimo.addEventListener(Event.COLLISION, function(e) {
// おいもが消えて
oimo.tl.clear();
oimo.tl.moveBy(0, -5, 0);
oimo.tl.fadeTo(0.5, 0).and().scaleTo(0.2, 0.2, 5);
oimo.tl.delay(0);
oimo.tl.then(function(){
var sound = core.assets["sounds/gass.mp3"].clone();
sound.play();
oimo.remove();
});
// ももちゃんブッ
var bomb = new ExSprite(32, 32);
bomb.image = core.assets["images/joe_gass.png"];
bomb.x = momo.x;
bomb.y = momo.y + 32;
scene.addChild(bomb);
bomb.frame = [0, 1, 2, 3, 4, null];
var sound = core.assets["sounds/cf307/suck1.mp3"].clone();
sound.play();
// 満腹度アップ
score += 100;
// ももちゃん進む
momo.moveBy(-momo.x / 10 + 160 /10 - 40 /10, -10, 5);
if(momo.y < -32){
momo.y = 200;
}
});
});
});
bigoimo.tl.loop();
}
});
});
scene.tl.loop();
// いがぐり落ちてくる
ground.tl.delay(20);
ground.tl.then(function() {
var asteroid = new ExSprite(32, 32);
asteroid.image = core.assets["images/cf307/igagurikuru.png"];
asteroid.x = getRandom(0, 320 - 32);
asteroid.y = 0;
asteroidGroup.addChild(asteroid);
asteroid.frame = [0, 1, 2, 3];
//asteroid.scale(0.9, 0.9);
asteroid.tl.moveBy(0, 480, 50);
asteroid.tl.then(function() {
asteroid.remove();
});
//b-むと衝突したとき
asteroid.addCollision(beamGroup);
asteroid.addEventListener(Event.COLLISION, function(e) {
asteroid.remove();
var bomb = new ExSprite(32, 32);
bomb.image = core.assets["images/bomb.png"];
bomb.x = asteroid.x;
bomb.y = asteroid.y;
scene.addChild(bomb);
bomb.scale(1, 1);
bomb.frame = [0, 1, 2, 3, 4, null];
var sound = core.assets["sounds/cf307/kotsudumi1.mp3"].clone();
sound.play();
//いがぐり割れる
bomb.tl.then(function(){
var wareguri = new ExSprite(32, 32);
wareguri.image = core.assets["images/cf307/wareguri.png"];
wareguri.x = asteroid.x;
wareguri.y = asteroid.y;
scene.addChild(wareguri);
wareguri.scale(1.3, 1.3);
// 消える
wareguri.tl.delay(3);
wareguri.tl.then(function(){
wareguri.remove();
});
});
});
});
ground.tl.loop();
// 巨大おいも
var bigoimo = new ExSprite(80, 80);
bigoimo.image = core.assets["images/cf307/oimokirakira1.png"];
var x = getRandom(0, 320 - 32*2.5);
bigoimo.x = x;
bigoimo.y = - 32 * 2.5;
scene.addChild(bigoimo);
bigoimo.frame = [0, 0, 1, 1, 2, 2, 3, 3];
//bigoimo.tl.delay(30);
bigoimo.tl.moveBy(0, 80 + 34, 30);
bigoimo.tl.then(function() {
var x1 = getRandom(240 - 80, 320 - 32 * 2.5);
var x2 = getRandom(0, 240);
bigoimo.tl.moveTo(x1, 34, 30);
bigoimo.tl.moveTo(x2, 34, 30);
bigoimo.tl.loop();
});
// いがぐりグループ
var asteroidGroup = new Group();
scene.addChild(asteroidGroup);
//ビームグループ
var beamGroup = new Group();
scene.addChild(beamGroup);
// 左へ移動するボタン
var button_left = new ExSprite(62, 55);
button_left.image = core.assets["images/b_left.png"];
button_left.x = 320/2 - 62 - 31;
button_left.y = 480 - 55;
scene.addChild(button_left);
// 左ボタンタップ開始
button_left.addEventListener(Event.TOUCH_START, function(){
button_left.frame = 1;
momo.x -= 15;
if(momo.x < - 16){
momo.x = 304;
}
var sound = core.assets["sounds/cf307/jump12.mp3"].clone();
sound.play();
});
// 左ボタンタップ終了
button_left.addEventListener(Event.TOUCH_END, function(){
button_left.frame = 0;
});
// 右へ移動するボタン
var button_right = new ExSprite(62, 55);
button_right.image = core.assets["images/b_right.png"];
button_right.x = 320/2 + 31;
button_right.y = 480 - 55;
scene.addChild(button_right);
// 右ボタンタップ開始
button_right.addEventListener(Event.TOUCH_START, function(){
button_right.frame = 1;
momo.x += 15;
if(320 - 16 < momo.x){
momo.x = - 16;
}
var sound = core.assets["sounds/cf307/jump12.mp3"].clone();
sound.play();
});
// 右ボタンタップ終了
button_right.addEventListener(Event.TOUCH_END, function(){
button_right.frame = 0;
});
// 火を発射するボタン
var button_fire = new ExSprite(62, 55);
button_fire.image = core.assets['images/b_red.png'];
button_fire.x = 320 / 2 - button_fire.width / 2;
button_fire.y = 480 - 55;
scene.addChild(button_fire);
button_fire.addEventListener(Event.TOUCH_START, function(){
button_fire.frame = 1;
});
button_fire.addEventListener(Event.TOUCH_END, function(){
button_fire.frame = 0;
});
// 火を発射
button_fire.addEventListener(Event.TOUCH_START, function(){
var beam = new ExSprite(32, 32);
beam.image = core.assets['images/cf307/hi.png'];
beam.x = momo.x + momo.width / 2 - beam.width / 2;
beam.y = momo.y;
beamGroup.addChild(beam);
var sound = core.assets["sounds/cf307/matchstick-put-fire1.mp3"].clone();
sound.play();
// 上に向かって移動させよう
beam.tl.moveBy(0, -480, 20);
beam.tl.then(function(){
beam.remove();
});
});
// ももちゃん
var momo = new ExSprite(32, 32);
momo.image = core.assets["images/cf307/momo.png"];
momo.x = 320 /2 - 16;
momo.y = 360;
scene.addChild(momo);
momo.frame = [0, 0, 1, 1, 2, 2];
// スコア表示
var score = 0;
scoreLabel = new Label('SCORE : 0');
scene.addChild(scoreLabel);
scoreLabel.x = 10;
scoreLabel.y = 10;
scoreLabel.color = 'gray';
scoreLabel.font = "24px 'PixelMplus10'";
scoreLabel.addEventListener(Event.ENTER_FRAME, function() {
scoreLabel.text = '満腹度(100で^-^) : ' + score;
});
// 巨大おいもに到達したら
bigoimo.addCollision(momo);
bigoimo.addEventListener(Event.COLLISION,function(e){
// おいもたち消える
oimoGroup.remove();
// 巨大おいもが消えて
bigoimo.tl.clear();
bigoimo.tl.moveBy(0, -5, 0);
bigoimo.tl.fadeTo(0.5, 0).and().scaleTo(0.2, 0.2, 5);
bigoimo.tl.delay(3);
bigoimo.tl.then(function(){
//var sound = core.assets["sounds/gass.mp3"].clone();
//sound.play();
bigoimo.remove();
var sound = core.assets["sounds/cf307/suck1.mp3"].clone();
sound.play();
});
// ももちゃん大きくなりながら移動
momo.tl.clear();
momo.tl.moveTo(320 / 2 - 16, 480 / 2 - 16 + 96, 16).and().scaleTo(3, 3, 16);
// 大きなガス
var bigbomb = new ExSprite(32, 32);
bigbomb.image = core.assets["images/joe_gass.png"];
bigbomb.x = momo.x;
bigbomb.y = momo.y + 64;
scene.addChild(bigbomb);
bigbomb.frame = [0, 1, 2, 3, 4];
bigbomb.scale(3,3);
// 爆発音
bigbomb.tl.delay(0);
bigbomb.tl.then(function(){
var sound = core.assets["sounds/gass.mp3"].clone();
sound.play();
});
bigbomb.tl.loop();
// 大ガス移動
bigbomb.tl.moveTo(320 / 2 - 27, 320 + 70, 10).and().scaleTo(3, 3, 10);
// 動きながら
bigbomb.tl.then(function(){
var a = getRandom(-30, 30);
var b = getRandom(-30, 30);
bigbomb.tl.moveBy(a, b, 1);
bigbomb.tl.moveTo(320 / 2 - 27, 320 + 70, 2);
bigbomb.tl.loop();
});
// ゲームクリア
var gameclear = new ExSprite(147, 48);
gameclear.image = core.assets['images/title_gameclear.png'];
gameclear.x = 320 / 2 - gameclear.width/2;
gameclear.y = 480 / 2 - gameclear.height/2;
scene.addChild(gameclear);
// 大きく
gameclear.scale(0.5, 0.5);
gameclear.tl.scaleTo(2, 2, 24);
gameclear.tl.then(function() {
// サウンド
var sound = core.assets['sounds/cf307/correct2.mp3'].clone();
sound.play();
core.stop();
});
});
// ももちゃんいがぐりに衝突でゲームオーバー
momo.addCollision(asteroidGroup);
momo.addEventListener(Event.COLLISION, function(e) {
momo.remove();
var momoz = new ExSprite(32, 32);
momoz.image = core.assets['images/cf307/momochanzannen.png'];
momoz.x = momo.x;
momoz.y = momo.y;
scene.addChild(momoz);
// いがぐり跳ねる
asteroidGroup.remove();
var asteroid = new ExSprite(32, 32);
asteroid.image = core.assets["images/cf307/igaguri.png"];
asteroid.x = momo.x;
asteroid.y = momo.y - 32;
scene.addChild(asteroid);
//asteroid.scale(0.9, 0.9);
asteroid.tl.moveBy(20, -30, 3);
asteroid.tl.moveBy(20, 100, 5);
// ポコッ
var sound = core.assets["sounds/cf307/strike1.mp3"].clone();
sound.play();
asteroid.tl.then(function(){
var sound = core.assets["sounds/cf307/se_maoudamashii_onepoint31.mp3"].clone();
sound.play();
// ゲームオーバーを表示
var gameover = new ExSprite(147, 48);
gameover.image = core.assets['images/title_gameover.png'];
gameover.x = 320 / 2 - gameover.width/2;
gameover.y = 480 / 2 - gameover.height/2;
scene.addChild(gameover);
// 大きく
gameover.scale(0.5, 0.5);
gameover.tl.scaleTo(2, 2, 10);
gameover.tl.then(function() {
core.stop();
});
});
});
//==========
// ここまで
//==========
}
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();
}