消灭星星(Popstar)游戏是怎么开发实现的
无限关卡,看分数,直到打死为止。
《PopStar!消灭星星中文版》又称“消灭星星中文版”,这是一款风靡许久的消除类休闲手游,炙手可热的玩法倍受玩家好评。中文版的操作规则更为畅爽,只需一次点击便可快速消除,游戏节奏更快,逻辑思维、反应意识都将在瞬间体现。激发潜能,消灭星星中文版破关攻略,让你成为实力派消除达人。
《PopStar!消灭星星中文版》规则极其简单,1分钟便可上手,但要想高分通关,睿智的思考是必不可少的。游戏中所获得的分数就是玩家通关的保障,通过消除同色星星获得分数,同时消除的星星越多分数也就越高。
《PopStar!消灭星星中文版》玩法虽然简单,但在简单的规则中充满变数。在每次消除后,星星的布局都会出现改变,玩家需要对游戏界面进行分析,是否能继续积攒更多的同色星星进行高分消除。
平井坚的《POP STAR》 歌词
歌曲名:POP STAR歌手:平井坚专辑:Pop StarⅠwanna be your pop starkimi wo motto muchuu ni sa se te ageru kara nekirakira no POPSTARhane wo hirogemahou wo kake te ageyo u kimi dake niPop star「危険なアネキ」主题歌kimi ni deae ta yorokobi tokimi ni ae nai sabishi sa noryouhou wo te ni ire te koi ha hashiri dasusora mo tobe nai boku da kedokodoku wo utau yoru da kedo0sono hoo ni hohoemi wo atae rare ta narahajimete kimi wo dakishime ta shunkan nikamisama ga boku ni kudashi ta shimei hakimi dake no hiirooⅠwanna be a pop starkimi wo motto muchuu ni sa se te ageru kara nekirakira no POPSTARhane wo hirogehane wo hiroge mahou wo kake te ageyo uⅠwanna be your pop starkimi wo gyutto dakishime te ageru kara oidekirakira no POPSTARhane wo hirogemahou wo kake te ageyo u kimi dake nikakushi te i ta kurayami mokimi ha sotto hiroiage tetaisetsu na boku nan da todakishime te kure tahikari he to tsuduku michi wo arui te yuko ukizu ka bou kono migite hakimi to te wo tsunagu tame niYou're gonna be my pop starboku wo motto muchuu ni sa se te hohoen dekirakira no POPSTARsono hitomi de boku ni mahou wo kake teYou're my only pop starboku wo gyutto dakishime tara mou hanasa naikirakira no POPSTARsono hitomi de boku ni mahou wo kake teima sugu nikoi ni ochi taradare mo ga dareka no POPSTARkamisama ga boku ni kudashi ta shimei hakimi dake no hiirooⅠwanna be a pop starkimi wo motto muchuu ni sa se te ageru kara nekirakira no POPSTARhane wo hirogehane wo hiroge mahou wo kake te ageyoⅠwanna be your pop starkimi wo gyutto dakishime te ageru kara oidekirakira no POPSTARhane wo hirogemahou wo kake te ageyo u kimi dake nhttp://music.baidu.com/song/1486617
消灭星星(Popstar)游戏是怎么开发实现的?难不难?
@谢邀 开辟如许的游戏难不难,我以为不难,玩通关比开辟难多了,我一个星期才玩到第五关,开辟两天就够了; 有图有原形,我开辟过 逻辑实现 根本的流程便是如许创建10*10随机星星——触摸——检测颜色——消除星星——掉移动——归并星星——检测去世局——结束大概云云 代码实现是基于js编程语言,cocos2d-x游戏引擎实现的; 1创建随机单个星星,并参加单个星星掉动画 MainLayer.prototype.getRandomStar=function(colIndex,rowIndex){this.starSize=72;varstars=PS_MAIN_TEXTURE.STARS;varrandomStar=stars[getRandom(stars.length)];varstarSprite=cc.Sprite.createWithSpriteFrameName(randomStar);starSprite.setAnchorPoint(cc.p(0.5,0.5));starSprite.setPosition(cc.p(36+colIndex*this.starSize,1300));starSprite.starData={name:randomStar,indexOfColumn:colIndex,indexOfRow:rowIndex};starSprite.setZOrder(100);varflowTime=rowIndex/10;varfallAction=cc.MoveTo.create(flowTime,cc.p(36+colIndex*this.starSize,36+rowIndex*this.starSize));starSprite.runAction(fallAction);returnstarSprite;} 2根据表格位置初始化10*10星星群,孕育产生星星从空中坠落的结果MainLayer.prototype.initStarTable=function(){this.starTable=newArray(this.numX);for(vari=0;ithis.numX;i++){varsprites=newArray(this.numY);for(varj=0;jthis.numY;j++){varpSprite0=this.getRandomStar(i,j);if(pSprite0!=null){this.rootNode.addChild(pSprite0);}sprites[j]=pSprite0;}this.starTable[i]=sprites;}} 310*10星星群检测触摸变乱,通过this.sameColorList.length可以果断是第一次触摸还是第二次触摸;数组长度1表现第二次触摸,这里又有分支,触摸的是刚才同一颜色地区还是其他地区?要是是原来颜色地区,删除this.removeSameColorStars(),要是不是原来颜色地区,恢复兴复兴状,然后新的检测;数组长度=1表现第一次触摸直接检测颜色雷同地区 MainLayer.prototype.onTouchesBegan=function(touches,event){varloc=touches[0].getLocation();this.ccTouchBeganPos=loc;for(vari=0;ithis.starTable.length;i++){varsprites=this.starTable[i];for(varj=0;jsprites.length;j++){varpSprite0=sprites[j];if(pSprite0){varccRect=pSprite0.getBoundingBox();if(isInRect(ccRect,this.ccTouchBeganPos)){if(this.sameColorList.length1){if(this.sameColorList.contains(pSprite0)){cc.AudioEngine.getInstance().playEffect(PS_MAIN_SOUNDS.broken,false);this.removeSameColorStars();}else{for(vark=0;kthis.sameColorList.length;k++){if(this.sameColorList[k]){this.sameColorList[k].runAction(cc.ScaleTo.create(0.1,1));}}this.checkSameColorStars(pSprite0);if(this.sameColorList.length1){cc.AudioEngine.getInstance().playEffect(PS_MAIN_SOUNDS.select,false);}}}else{this.checkSameColorStars(pSprite0);if(this.sameColorList.length1){cc.AudioEngine.getInstance().playEffect(PS_MAIN_SOUNDS.select,false);}}break;}}}}}; 4创建单个星星的四个方向检测,上下左右,把颜色雷同的放在一个数组内里,回调这个数组;着实末了用这个函数的时间重要是果断数组的大小;数组大于1,阐明四周有雷同颜色的; MainLayer.prototype.checkOneStarFourSide=function(sprite){if(sprite==null){return;}//cc.log("checkOneStarFourSide");varfourSideSpriteList=[];varcolor=sprite.starData.color;varcol=sprite.starData.indexOfColumn;varrow=sprite.starData.indexOfRow;//upif(row9){varupSprite=this.starTable[col][row+1];if(upSprite!=nullupSprite.starData.color==color){fourSideSpriteList.push(upSprite);}}//downif(row0){vardownSprite=this.starTable[col][row-1];if(downSprite!=nulldownSprite.starData.color==color){fourSideSpriteList.push(downSprite);}}//leftif(col0){varleftSprite=this.starTable[col-1][row];if(leftSprite!=nullleftSprite.starData.color==color){fourSideSpriteList.push(leftSprite);}}//rightif(col9){varrightSprite=this.starTable[col+1][row];if(rightSprite!=nullrightSprite.starData.color==color){fourSideSpriteList.push(rightSprite);}}returnfourSideSpriteList;} 5检测雷同颜色地区,这里的算法比较巨大;有两个数组this.sameColorList和newSameColorList,前者是全局星星数组,后者是每次扩展新参加的星星;比如如许环境,一个星星左右上有雷同的星星,上面的上面另有一个星星,统共五个雷同星星:三次检测环境是this.sameColorList为1---4----5,而newSameColorList为1--3--1,种种曲折,读者好好明白下; MainLayer.prototype.checkSameColorStars=function(sprite){if(sprite==null){return;}this.sameColorList=[];this.sameColorList.push(sprite);varnewSameColorList=[];newSameColorList.push(sprite);//bylogic,checkthesamecolorstarlistwhile(newSameColorList.length0){for(vari=0;inewSameColorList.length;i++){varfourSide=this.checkOneStarFourSide(newSameColorList[i]);if(fourSide.length0){for(varj=0;jfourSide.length;j++){if(!this.sameColorList.contains(fourSide[j])){this.sameColorList.push(fourSide[j]);newSameColorList.push(fourSide[j]);}}}newSameColorList.splice(i,1);}}cc.log("sameColorListlength=="+this.sameColorList.length);if(this.sameColorList.length1){for(vark=0;kthis.sameColorList.length;k++){varsimpleStar=this.sameColorList[k];if(simpleStar){simpleStar.runAction(cc.ScaleTo.create(0.1,1.08));}}}} 6移除刚才选中的雷同颜色的星星,并孕育产生爆炸粒子结果 MainLayer.prototype.removeSameColorStars=function(){for(vark=0;kthis.sameColorList.length;k++){varsimpleStar=this.sameColorList[k];if(simpleStar){varcol=simpleStar.starData.indexOfColumn;varrow=simpleStar.starData.indexOfRow;this.starTable[col].splice(row,1,null);this.rootNode.removeChild(simpleStar);if(sys.platform!='browser'){varstarParticle=cc.StarParticle.create(this.rootNode,(36+col*this.starSize),(36+row*this.starSize),"spark");starParticle.runAction(cc.Sequence.create(cc.DelayTime.create(0.8),cc.CleanUp.create(starParticle)));}}}this.sameColorList=[];this.fallStar();} 7星星掉添补空缺,重要是要是一个地方有空缺,就把它上面的星星位置和数据互换,用到数组的要领splice,可到网上查察js数组的一些要领应用 MainLayer.prototype.fallStar=function(){for(vari=0;ithis.starTable.length;i++){varsprites=this.starTable[i];varlength=sprites.length;for(varj=0;jlength;j++){varpSprite0=sprites[j];if(pSprite0==null){vark=j+1;while(klength){varupSprite=sprites[k];if(upSprite!=null){upSprite.starData.indexOfColumn=i;upSprite.starData.indexOfRow=j;this.starTable[i].splice(j,1,upSprite);this.starTable[i].splice(k,1,null);k=length;varflowTime=0.2;varfallAction=cc.MoveTo.create(flowTime,cc.p(36+i*this.starSize,36+j*this.starSize));upSprite.runAction(fallAction);}k++;}}}}this.deadStar();//this.combineStar();} 8归并星星,要是最底部有空缺,星星必须向左归并,不克不及出现空缺 MainLayer.prototype.combineStar=function(){for(varm=0;mthis.starTable.length;m++){varmSprite0=this.starTable[m][0];if(mSprite0==null){if(m==(this.starTable.length-1)){for(varj=0;jthis.starTable[m].length;j++){this.starTable[m].splice(j,1,null);}}else{for(vari=(m+1);ithis.starTable.length;i++){//this.starTable.splice((i-1),1,this.starTable[i]);for(varj=0;jthis.starTable[i].length;j++){varpSprite0=this.starTable[i][j];this.starTable[i-1].splice(j,1,pSprite0);if(pSprite0!=null){pSprite0.starData.indexOfColumn=(i-1);varcol=pSprite0.starData.indexOfColumn;varrow=pSprite0.starData.indexOfRow;varmoveAction=cc.MoveTo.create(0.1,cc.p(36+col*this.starSize,36+row*this.starSize));pSprite0.runAction(moveAction);}}}}}}this.deadStar();} 9游戏到末了会产存亡局环境,步伐主动果断消除;这里重要是循环检测每一个星星,要是全部的星星四周都没有雷同星星的时间,就确以为去世局,步伐主动消除星星 MainLayer.prototype.deadStar=function(){varisDead=true;for(vari=0;ithis.starTable.length;i++){varsprites=this.starTable[i];varlength=sprites.length;for(varj=0;jlength;j++){varpSprite0=sprites[j];if(pSprite0!=null){if(this.checkOneStarFourSide(pSprite0).length0){isDead=false;return;}}}}if(isDead){for(varjj=9;jj=0;jj--){for(varii=0;ii10;ii++){varpSprite0=this.starTable[ii][jj];if(pSprite0!=null){vardelay=4+0.3*ii-0.4*jj;pSprite0.runAction(cc.Sequence.create(cc.DelayTime.create(delay),cc.CleanUp.create(pSprite0)));varstarParticle=cc.StarParticle.create(this.rootNode,(36+ii*this.starSize),(36+jj*this.starSize),"spark");starParticle.runAction(cc.Sequence.create(cc.ScaleTo.create(0,0),cc.DelayTime.create(delay),cc.ScaleTo.create(0,1),cc.DelayTime.create(0.8),cc.CleanUp.create(starParticle)));}}}}} 根本便是如许