var res = { warusuica:"http://masaharu.azurewebsites.net/images/suica-waru2.png", waru:"sound/shododen/se_002.m4a", gucha:"http://masaharu.azurewebsites.net/images/suica-gucha.png", giza1:"http://masaharu.azurewebsites.net/images/suica-giza1.png", giza2:"http://masaharu.azurewebsites.net/images/suica-giza2.png", giza3:"http://masaharu.azurewebsites.net/images/suica-giza3.png", help:"http://masaharu.azurewebsites.net/images/suica-help.png", }; var MyLayer = cc.KidspodLayer.extend({ _touchFlag:-1, _level:0, _changeFlag:0, _changeFlag2:0, _acc:0, _acc2:0, _power:2, _xx:[160, 160, 160, 420, -100, 160], _scale:[0.2, 0.3, 0.1, 0.2, 0.1, 0.7], _finalSuicaFlag:0, _helpFlag:0, init:function(){ this._super(); this.scheduleUpdate(); var size = cc.director.getWinSize(); var back = cc.Sprite.create("http://masaharu.azurewebsites.net/images/suicaback.png"); back.setPosition(size.width/2, size.height/2); back.setTag(100); this.addChild(back); var suica = ccui.Button.create("http://masaharu.azurewebsites.net/images/suica.png", "", ""); suica.setPosition(size.width/2, size.height/2); suica.setScale(0.2); suica.setTag(0); this.addChild(suica); var ml = this; suica.addTouchEventListener( function(button, type){ if(type == ccui.Widget.TOUCH_ENDED){ console.log("タッチをはなしました。"); ml._touchFlag = 5; ml.removee(); } } ); var help = ccui.Button.create(res.help, "", ""); help.setPosition(50, 50); help.setTag(500); help.setScale(0.1); this.addChild(help); var mll = this; help.addTouchEventListener( function(button, type){ if(type == ccui.Widget.TOUCH_ENDED){ if (mll._helpFlag === 0) { mll.help(); } else if (mll._helpFlag === 1) { mll.help0(); } } } ); var touchLabel = cc.LabelTTF.create("スタート"); touchLabel.setPosition(size.width/2, size.height/2); touchLabel.setFontSize(32); touchLabel.setColor(cc.color(255, 0, 0, 0)); touchLabel.setTag(1); this.addChild(touchLabel); var title = cc.Sprite.create("http://masaharu.azurewebsites.net/images/suicatitle.png"); title.setPosition(size.width/2, size.height-70); title.setScale(0.3); this.addChild(title); var stick = cc.Sprite.create("http://masaharu.azurewebsites.net/images/stick.png"); stick.setPosition(size.width/2, 0); stick.setScale(0.3); stick.setRotation(90); stick.setTag(2); this.addChild(stick); this.schedule(this.flash, 0.5); this.schedule(this.wave, 4); this.schedule(this.acc, 0.5); return true; }, help0:function(){ var suica = this.getChildByTag(0); suica.setVisible(true); var label = this.getChildByTag(1); label.setVisible(true); var stick = this.getChildByTag(2); stick.setVisible(true); this._helpFlag = 0; var label1 = this.getChildByTag(777); label1.removeFromParent(true); }, help:function(){ var suica = this.getChildByTag(0); suica.setVisible(false); var label = this.getChildByTag(1); label.setVisible(false); var stick = this.getChildByTag(2); stick.setVisible(false); this._helpFlag = 1; var size = cc.director.getWinSize(); var label1 = cc.LabelTTF.create(" 携帯本体を下に振ると、\n スイカを割ることができます。\n スイカの大きさによって、\n 割る強さを加減してください。\n周りに注意して遊んでください。"); label1.setPosition(size.width/2+5, size.height/2-70); label1.setColor(cc.color(0, 0, 0, 255)); label1.setFontSize(20); label1.setTag(777); this.addChild(label1); }, acc:function(){ var suica = this.getChildByTag(0); var size = cc.director.getWinSize(); if (Math.abs(Math.floor(this._acc-this._acc2))>this._power && suica) { if (this._level == 3 && Math.abs(Math.floor(this._acc-this._acc2))>2) { suica.removeFromParent(true); var suisuica = cc.Sprite.create(res.gucha); suisuica.setPosition(size.width/2, size.height/2-50); suisuica.setScale(0.2); suisuica.setTag(200); this.addChild(suisuica); this.scheduleOnce(this.gameOver, 1); return; } else if (this._level == 4) { var ssPos = suica.getPosition(); if (ssPos.x < 197.5 && ssPos.x > 122.5) { this._changeFlag2 = 0; } else { return; } } else if (this._level == 5) { var ssPoss = suica.getPosition(); if (Math.abs(Math.floor(this._acc-this._acc2))>2) { suica.removeFromParent(true); var ssuica = cc.Sprite.create(res.gucha); ssuica.setPosition(size.width/2, size.height/2-50); ssuica.setScale(0.2); ssuica.setTag(200); this.addChild(ssuica); this.scheduleOnce(this.gameOver, 1); return; } if (ssPoss.x < 197.5 && ssPoss.x > 122.5) { this._changeFlag2 = 0; } else { return; } } if (this._finalSuicaFlag == 1) { suica.setTexture(res.giza1); this._finalSuicaFlag = 2; return; } else if (this._finalSuicaFlag == 2) { suica.setTexture(res.giza2); this._finalSuicaFlag = 3; return; } suica.removeFromParent(true); var sprite; if (this._finalSuicaFlag == 3) { sprite = res.giza3; } else { sprite = res.warusuica; } var suica2 = cc.Sprite.create(sprite); suica2.setPosition(size.width/2, size.height/2-50); suica2.setScale(this._scale[this._level-1]); suica2.setTag(5); this.addChild(suica2); cc.audioEngine.playEffect(res.waru); this.scheduleOnce(this.nextLevel2, 1); } this._acc2 = this._acc; }, wave:function(){ cc.audioEngine.playEffect("sound/shododen/se_025.m4a"); }, removee:function(){ var suica = this.getChildByTag(0); suica.removeFromParent(true); var label = this.getChildByTag(1); label.removeFromParent(true); var stick = this.getChildByTag(2); stick.removeFromParent(true); var help = this.getChildByTag(500); help.setVisible(false); this.nextLevel(); }, flash:function(){ var suica = this.getChildByTag(0); if (!suica || this._touchFlag == 5) return; if (this._touchFlag == -1) { suica.setScale(0.2); this._touchFlag = -2; } else if (this._touchFlag == -2) { suica.setScale(0.25); this._touchFlag = -1; } else { this.removee(); } }, gameOver:function(){ var size = cc.director.getWinSize(); this.unschedule(this.flash); this.unschedule(this.acc); this.unscheduleUpdate(); var stick = this.getChildByTag(2); stick.removeFromParent(true); var label = cc.LabelTTF.create("Game Over"); label.setPosition(size.width/2, size.height/2); label.setFontSize(48); label.setColor(cc.color(0, 0, 255)); label.setTag(999); this.addChild(label); cc.audioEngine.playEffect("sound/shododen/se_053.m4a"); var reloadB = ccui.Button.create("res/jewel/je01.png", "", ""); reloadB.setPosition(size.width/2, 80); reloadB.setTag(1010); this.addChild(reloadB); var reloadL = cc.LabelTTF.create("もう一回"); reloadL.setPosition(size.width/2, 80); reloadL.setTag(1011); reloadL.setColor(cc.color(0, 0, 0, 255)); this.addChild(reloadL); var ml = this; reloadB.addTouchEventListener( function(button, type){ if(type == ccui.Widget.TOUCH_ENDED){ ml.reStart(); } } ); }, gameClear:function(){ this.unschedule(this.flash); this.unschedule(this.acc); this.unscheduleUpdate(); this._changeFlag = 0; var size = cc.director.getWinSize(); var label = cc.LabelTTF.create("Game Clear!"); label.setPosition(size.width/2, size.height/2); label.setFontSize(48); label.setColor(cc.color(255, 0, 0, 255)); label.setTag(999); this.addChild(label); var stick = this.getChildByTag(2); stick.removeFromParent(true); cc.audioEngine.playEffect("sound/gamese/se_fanfare.m4a"); var reloadB = ccui.Button.create("res/jewel/je01.png", "", ""); reloadB.setPosition(size.width/2, size.height/2-100); reloadB.setTag(1010); this.addChild(reloadB); var sprite = this.getChildByTag(5); sprite.setTag(200); var reloadL = cc.LabelTTF.create("もう一回"); reloadL.setPosition(size.width/2, size.height/2-100); reloadL.setTag(1011); reloadL.setColor(cc.color(0, 0, 0, 255)); this.addChild(reloadL); var ml = this; reloadB.addTouchEventListener( function(button, type){ if(type == ccui.Widget.TOUCH_ENDED){ ml.reStart(); } } ); }, reStart:function(){ var size = cc.director.getWinSize(); var button = this.getChildByTag(1010); button.removeFromParent(true); var label = this.getChildByTag(1011); label.removeFromParent(true); var help = this.getChildByTag(500); help.setVisible(true); var suica2 = this.getChildByTag(200); suica2.removeFromParent(true); var label2 = this.getChildByTag(999); label2.removeFromParent(true); this._level = 0; this._touchFlag = -1; this._changeFlag = 0; this._changeFlag2 = 0; this._acc = 0; this._acc2 = 0; this._power = 2; this._finalSuicaFlag = 0; this._helpFlag = 0; this.schedule(this.flash, 0.5); this.schedule(this.acc, 0.5); this.scheduleUpdate(); var suica = ccui.Button.create("http://masaharu.azurewebsites.net/images/suica.png", "", ""); suica.setPosition(size.width/2, size.height/2); suica.setScale(0.2); suica.setTag(0); this.addChild(suica); var touchLabel = cc.LabelTTF.create("スタート"); touchLabel.setPosition(size.width/2, size.height/2); touchLabel.setFontSize(32); touchLabel.setColor(cc.color(255, 0, 0, 0)); touchLabel.setTag(1); this.addChild(touchLabel); var stick = cc.Sprite.create("http://masaharu.azurewebsites.net/images/stick.png"); stick.setPosition(size.width/2, 0); stick.setScale(0.3); stick.setRotation(90); stick.setTag(2); this.addChild(stick); var ml = this; suica.addTouchEventListener( function(button, type){ if(type == ccui.Widget.TOUCH_ENDED){ console.log("タッチをはなしました。"); ml._touchFlag = 5; ml.removee(); } } ); }, nextLevel2:function(){ var suica = this.getChildByTag(5); if (this._finalSuicaFlag != 3) { suica.removeFromParent(true); } this.nextLevel(); }, nextLevel:function(){ this._level += 1; var size = cc.director.getWinSize(); if (this._level > 6) { this.gameClear(); return; } else if (this._level == 2) { this._power = 3; } else if (this._level == 3) { this._power = 1; } else if (this._level == 4) { this._power = 2; } else if (this._level == 5) { this._power = 1; } else if (this._level == 6) { this._power = 3; this._finalSuicaFlag = 1; } var levelLabel = cc.LabelTTF.create(this._level); levelLabel.setPosition(size.width/2+30, size.height/2); levelLabel.setVisible(false); levelLabel.setFontSize(64); levelLabel.setColor(cc.color(0, 0, 0, 255)); levelLabel.setTag(3); this.addChild(levelLabel); var suica = cc.Sprite.create("http://masaharu.azurewebsites.net/images/suica.png"); suica.setPosition(-300, size.height/2); suica.setTag(4); suica.setScale(0.2); this.addChild(suica); var label = cc.LabelTTF.create("Level:"); label.setPosition(size.width/2-70, size.height/2); label.setFontSize(48); label.setColor(cc.color(0, 0, 0, 255)); label.setTag(5); this.addChild(label); this._changeFlag = 1; if (this._level > 1) { var sstick = this.getChildByTag(2); sstick.removeFromParent(true); } }, update:function(dt){ // console.log(this._acc-this._acc2); if (this._changeFlag == 1) { var size = cc.director.getWinSize(); var suica = this.getChildByTag(4); var sPosX = suica.getPosition().x; var sRot = suica.getRotation(); suica.setPositionX(sPosX-5); suica.setRotation(sRot - 3); if (sPosX < size.width/2+30) { var levelLabel = this.getChildByTag(3); levelLabel.setVisible(true); } if (sPosX < -600) { this._changeFlag = 0; suica.removeFromParent(true); var level2Label = this.getChildByTag(3); level2Label.removeFromParent(true); var label = this.getChildByTag(5); label.removeFromParent(true); var suisuica = cc.Sprite.create("http://masaharu.azurewebsites.net/images/suica.png"); suisuica.setPosition(this._xx[this._level-1], size.height/2-50); suisuica.setScale(this._scale[this._level-1]); suisuica.setTag(0); this.addChild(suisuica); var stick = cc.Sprite.create("http://masaharu.azurewebsites.net/images/stick.png"); stick.setPosition(size.width/2, 0); stick.setScale(0.3); stick.setRotation(90); stick.setTag(2); this.addChild(stick); if (this._level == 4) { this._changeFlag2 = 2; } else if (this._level == 5) { this._changeFlag2 = 3; } } } if (this._changeFlag2 == 2) { var suica = this.getChildByTag(0); var sPos = suica.getPosition(); suica.setPositionX(sPos.x-5); suica.setRotation(suica.getRotation()-3); if (sPos.x == -100) { suica.setPositionX(420); } } else if (this._changeFlag2 == 3) { var suica = this.getChildByTag(0); var sPos = suica.getPosition(); suica.setPositionX(sPos.x+15); suica.setRotation(suica.getRotation()+9); if (sPos.x > 720) { suica.setPositionX(-400); } } }, onMouseDown:function(event){ }, onKeyPressed:function(key, event){ // if(key == cc.KEY.up) // { // キーボードの上キーが押されたとき // this._acc2 = 2; // this._acc = this._power+3; // } // else if(key == cc.KEY.down) // { // // キーボードの下キーが押されたとき // } // else if(key == cc.KEY.left) // { // // キーボードの左キーが押されたとき // } // else if(key == cc.KEY.right) // { // // キーボードの右キーが押されたとき // } }, onTouchBegan:function(touch, event){ }, onAccelerometer:function(accelero, event){ var ay = accelero.z; this._acc = ay; }, }); var MyScene = cc.Scene.extend({ onEnter:function (){ this._super(); var layer = new MyLayer(); layer.init(); this.addChild(layer); } });