/* * おまじない */ enchant(); window.focus(); var _DIR_ = SwitchApps.scriptDir(); /*位置変更 * */ /* * 定数 */ // パラメータ var SCREEN_W = 320; // スクリーンの幅 var SCREEN_H = 320; // スクリーンの高さ var SUSHI_NUM = 7; var TIME = 0; var ASSETS = [ _DIR_ + "/images/menu.png", _DIR_ + "/images/lane.png", _DIR_ + "/images/eat.png", _DIR_ + "/images/tenin.png", _DIR_ + "/images/100yen.png", _DIR_ + "/images/shop.png", _DIR_ + "/sounds/youkoso.mp3", _DIR_ + "/sounds/take.mp3", _DIR_ + "/sounds/eat.mp3", _DIR_ + "/sounds/onemore.mp3", _DIR_ + "/sounds/putdish.mp3", _DIR_ + "/sounds/money.mp3" ]; /* * グローバル変数 */ var game = null; var count = 0; //何枚食べたか var c = 0; //どこで取ったか var speed_fg = 1; //回転速度(小さいと速い) var wait_t = 50; //待ち時間 var main_flg = false; var logger = null; /* * メイン処理 */ $(document).ready(function(){ logger = new SwitchApps.Logger(SwitchApps.app.id, null); /*ログの設定*/ LOG_switch = logger.addHeader('スイッチ入力'); LOG_start = logger.addHeader('スタート'); LOG_get = logger.addHeader('皿を取る'); LOG_cnt = logger.addHeader('皿:%d枚'); LOG_continue = logger.addHeader('続ける'); LOG_kaikei = logger.addHeader('お会計'); LOG_end = logger.addHeader('終わり'); /*グローバル変数の宣言*/ SUSHI_SPEED = {set:2};//1;おそい2:標準3:はやい //SUSHI_APPEAR = {set:1}//一度に画面に出る皿の数 1:一枚ずつ 2:2枚ずつ HIT_POINT = {set:1}//ヒッティングポイントの幅 1:せまい 2:標準 3:広い HIT_COLOR = {set:1} createSettingBox("すしのスピード","sushi_speed",SUSHI_SPEED,20,"おそい","標準","はやい"); //createSettingBox("すしの出かた","sushi_appear",SUSHI_APPEAR,21,"1枚ずつ","2枚ずつ") createSettingBox("クリックポイントの幅","hit_point",HIT_POINT,22,"せまい","標準","広い"); createSettingBox("クリックポイントの色","hit_color",HIT_COLOR,23,"黄色","白","赤"); }) window.onload = function() { // ゲームオブジェクトの生成 game = new Game(SCREEN_W, SCREEN_H); game.fps = 24; // 画像の読み込み game.preload(ASSETS); game.keybind(49, 'a'); game.keybind(51, 'a'); game.keybind(32, 'a'); game.keybind(10, 'a'); game.keybind(13, 'a'); game.keybind(123, 'a'); // ゲーム開始時の処理 game.onload = function() { game.replaceScene(createOpeningScene()); }; game.start(); }; createOpeningScene = function () { var scene = new Scene(); scene.backgroundColor = "blue"; var shop = new Sprite(300, 204); shop.moveTo(7, SCREEN_H - 204); shop.image = game.assets[_DIR_ + "/images/shop.png"]; scene.addChild(shop); var flag = false; var label = new Label("よ う こ そ"); label.color = "yellow"; label.font = "16px 'MS ゴシック', 'MS 明朝', 'Times New Roman', sans-serif, serif"; label.moveTo(60, 215); label.opacity = 0; scene.addChild(label); game.assets[_DIR_ + "/sounds/youkoso.mp3"].clone().play(); label.tl.fadeIn(6); label.tl.delay(12); label.tl.fadeOut(6).then(function () { label.text = "か い て ん ず し"; }); label.tl.fadeIn(6); label.tl.delay(12); label.tl.fadeOut(6).then(function () { label.text = "よ う こ そ"; }); label.tl.fadeIn(6); label.tl.delay(18).then(function () { game.replaceScene(createMainScene()); LOG_start(); }); return scene; }; createEndingScene = function () { var scene = new Scene(); scene.backgroundColor = "blue"; var shop = new Sprite(300, 204); shop.moveTo(7, SCREEN_H - 204); shop.image = game.assets[_DIR_ + "/images/shop.png"]; scene.addChild(shop); var label = new Label("ありがとうございました"); LOG_end(); label.color = "yellow"; label.font = "16px 'MS ゴシック', 'MS 明朝', 'Times New Roman', sans-serif, serif"; label.moveTo(60, 215); label.opacity = 0; scene.addChild(label); label.tl.fadeIn(6); label.tl.delay(12); label.tl.fadeOut(6).then(function () { label.text = "か い て ん ず し"; }); label.tl.fadeIn(6); label.tl.delay(12); label.tl.fadeOut(6).then(function () { label.text = "ありがとうございました"; }); label.tl.fadeIn(6); label.tl.delay(18).then(function () { game.replaceScene(createOpeningScene()); }); return scene; }; createMainScene = function(){ var sushi = null; var obj = new HitGroup();//当り判定用 var select = false; if(main_flg != true){ var scene = new Scene(); scene_fl = scene; scene.backgroundColor = "black"; } else var scene = scene_fl; var bg = new Sprite(SCREEN_W,SCREEN_H); bg.image = game.assets[_DIR_ + '/images/lane.png']; scene.addChild(bg); //**アシスト線***/ /*var hit_l = new HIT(85,80); var hit_r = new HIT(230,80);*/ var hit = new HIT(85,85);//アシスト線表示 var hit_big = new Sprite(270,30);//透明当り判定ボックス var hit_small = new Sprite(90,55);//透明当り判定用ボックス hit_big.x = hit.x-60; hit_big.y=hit.y; hit_small.x = hit.x+30; hit_small.y = hit.y; // scene.addChild(hit_r); // scene.addChild(hit_l); scene.addChild(hit); //hit_big.backgroundColor ="blue"; scene.addChild(hit_big); scene.addChild(hit_small); hit.opacity -=0.5; flow_fg = 1;//寿司のながれ->sushi.flow_fg sushi = []; //すしを提言 for(var i=0;i= hit_l.x && sushi[c].x+35 <= hit_r.x) && sushi[c].flow_fg == 2){//クリック許可になる+ヒッティングポイントに入る if(sushi[c].select!=true){ sushi[c].select = true; console.log("正常動作") } } else if(sushi[c].select==true){ console.log("正常終了") sushi[c].select = false; } /****************************/ } return scene; }; createEatScene = function(){ game.fps = 24; var scene = new Scene(); scene.backgroundColor = "black"; var sprite = new Sprite(320,320); sprite.x=0; sprite.y=0; sprite.image=game.assets[_DIR_ + '/images/eat.png']; sprite.frame=0; scene.addChild(sprite); game.assets[_DIR_ + "/sounds/eat.mp3"].clone().play(); sprite.tl.delay(8).then(function(){ sprite.frame = 1; }); sprite.tl.delay(8).then(function(){ sprite.frame = 0; }); sprite.tl.delay(8).then(function(){ sprite.frame = 1; }); sprite.tl.delay(8).then(function(){ sprite.frame = 0; }); sprite.tl.delay(8).then(function(){ sprite.frame = 1; }); sprite.tl.delay(8).then(function(){ sprite.frame = 0; }); sprite.tl.delay(8).then(function(){ sprite.frame = 1; }); sprite.tl.delay(8).then(function(){ sprite.frame = 2; }); sprite.tl.delay(24).then(function(){ game.replaceScene(createIntervalScene()); }); return scene; }; createIntervalScene = function(){ var kaikei = false; var scene = new Scene(); scene.backgroundColor = "black"; var bg = new Sprite(SCREEN_W,SCREEN_H); bg.image = game.assets[_DIR_ + '/images/lane.png']; scene.addChild(bg); var tenin = new Sprite(99, 58); tenin.image = game.assets[_DIR_ + '/images/tenin.png']; tenin.frame = 0; tenin.moveTo(110, 29); scene.addChild(tenin); var label1 = new Label("まだ食べる?"); var label2 = new Label("おさら"); var label3 = new Label("かぞえましょうか?"); label1.font = "bold 28px 'HG創英角ポップ体', 'MS ゴシック', 'MS 明朝', 'Times New Roman', sans-serif, serif"; label2.font = "bold 24px 'HG創英角ポップ体', 'MS ゴシック', 'MS 明朝', 'Times New Roman', sans-serif, serif"; label3.font = "bold 24px 'HG創英角ポップ体', 'MS ゴシック', 'MS 明朝', 'Times New Roman', sans-serif, serif"; label1.moveTo(80,100); label2.moveTo(120,85); label3.moveTo(60,110); label1.color = "black"; label2.color = "red"; label3.color = "red"; label2.opacity = 0; label3.opacity = 0; scene.addChild(label1); scene.addChild(label2); scene.addChild(label3); game.assets[_DIR_ + "/sounds/onemore.mp3"].clone().play(); label1.tl.delay(48).then(function(){ label1.opacity = 0; label2.opacity = 1; label3.opacity = 1; tenin.frame = 1; kaikei = true; game.assets[_DIR_ + "/sounds/youkoso.mp3"].clone().play(); }); label1.tl.delay(48).then(function(){ label1.opacity = 1; label2.opacity = 0; label3.opacity = 0; tenin.frame = 0; kaikei = false; game.assets[_DIR_ + "/sounds/onemore.mp3"].clone().play(); }); label1.tl.loop(); scene.ontouchstart = function(){ if(kaikei){ var scene = createKaikeiScene(); game.replaceScene(scene); LOG_kaikei(); }else { //game.fps = mode; game.replaceScene(createMainScene()); LOG_continue(); } }; scene.onabuttondown = function() { var ev = new Event('touchstart'); game.currentScene.dispatchEvent(ev); }; return scene; }; createKaikeiScene = function(){ var scene = new Scene(); var offset = 0; scene.backgroundColor = "rgb(255,200,160)"; var num = count; var sara = []; var money = null; var previous = 0; scene.onenter = function(){ next(); }; var next = function(){ if (num == 0) { if(count == 0){ game.replaceScene(createEndingScene()); return; } moneyAnimate(); count--; } else{ saraAnimate(); num--; offset += 10; } }; var saraAnimate = function () { sara.push(new Sprite(70, 70)); sara[sara.length-1].image = game.assets[_DIR_ + '/images/menu.png']; sara[sara.length - 1].frame = 7; sara[sara.length - 1].moveTo(200, 200 - offset); sara[sara.length - 1].opacity = 0; scene.addChild(sara[sara.length - 1]); sara[sara.length - 1].tl.delay(16).then(function(){ sara[sara.length - 1].opacity = 1; game.assets[_DIR_ + "/sounds/putdish.mp3"].clone().play(); }); sara[sara.length - 1].tl.delay(16).then(function () { next(); }); }; var moneyAnimate = function () { money = new Sprite(160, 117); money.image = game.assets[_DIR_ + '/images/100yen.png']; money.moveTo(sara[sara.length - 1].x-45, sara[sara.length - 1].y-20); sara[sara.length - 1].tl.removeFromScene(); sara.splice(sara.length - 1, 1); scene.addChild(money); game.assets[_DIR_ + "/sounds/money.mp3"].clone().play(); money.tl.delay(8); money.tl.moveTo(money.x, -117, 48).then(function () { money.tl.removeFromScene(); money = null; next(); }); }; scene.onenterframe = function () { if (money != null && game.frame % 3 == 0) { var temp = money.frame; switch (money.frame) { case 0: money.frame = 1; break; case 1: if (previous == 0) money.frame = 2; else if (previous == 2) money.frame = 0; break; case 2: money.frame = 1; } previous = temp; } }; return scene; }; var HIT = Class.create(Sprite,{ initialize:function(x,y){ Sprite.call(this,150,55); this.x = x;//座標保存 this.y = y; surf = new Surface(150,55); surf.context.fillStyle = 'yellow'; //surf.context.moveTo(0,0); surf.context.lineTo(0,55); surf.context.lineTo(150,55); surf.context.lineTo(136,0); surf.context.lineTo(10,0); surf.context.closePath(); surf.context.stroke(); surf.context.fill(); //surf.context.fillRect(0, 0, 150, 55); this.image = surf; }, onenterframe:function(){ switch (HIT_COLOR.set) { case 1:surf.context.fillStyle = 'yellow';surf.context.fill(); this.image = surf; break; case 2:surf.context.fillStyle ="white";surf.context.fill(); this.image = surf; break; case 3:surf.context.fillStyle="red";surf.context.fill(); this.image = surf; break default:break; } }, }) var Sushi = Class.create(Sprite, { initialize:function(){ Sprite.call(this,70,70); this.image = game.assets[_DIR_ + '/images/menu.png']; this.select = false;//true:クリック許可 this.end = false;//true:流れ終わっている false:終わっていない this.flg = 0;//0:流れていない1:流れている this.flow_fg = 1;//すしの流れ1->2->3->1 //this.move(); }, move:function(){ //this.addEventListener(Event.ENTER_FRAME,function(){//アニメーション開始] if(this.flow_fg == 1){ this.x -= (0.2*SUSHI_SPEED.set)+0.2; this.y += (0.5*SUSHI_SPEED.set)+0.5; if(this.x<15 && this.y>80){ this.flow_fg = 2; } } else if(this.flow_fg == 2){ this.x += (0.5*SUSHI_SPEED.set)+0.5; if(this.x>230){ this.flow_fg = 3 } } else if(this.flow_fg == 3){ this.x -= (0.2*SUSHI_SPEED.set)+0.2; this.y -= (0.5*SUSHI_SPEED.set)+0.5; if(this.y<-70 && this.x<175){ this.end = true;//回り終わっている this.flg = 0;//回っていない this.flow_fg = 1; this.x = 70; this.y = -70; //初期位置に戻す c++; c %= SUSHI_NUM; } } //}); }, }); var HitGroup = Class.create(Sprite,{ initialize:function(){ Sprite.call(this,10,26); this.x = 70; this.y = -70; this.opacity = 1.0; //this.backgroundColor='red'; this.flg = false;//衝突判定フラグ this.flow_fg= 1; }, })