前言

消灭星星这个游戏很经典,开始之前,请参考一下以下文章及算法。
感谢作者。

参考地址

PopStar(消灭星星)游戏源代码下载、分析及跨平台移植—第一篇(界面)

关于用到的资源

用到的资源我是直接在网上找的。。。不是我p出来的。仅作学习使用。

在线演示

在线演示

运行界面


核心源代码


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black"><meta content="telephone=no,email=no" name="format-detection"><meta name="full-screen" content="true"/><meta name="screen-orientation" content="portrait"/><meta name="x5-fullscreen" content="true"/><meta name="360-fullscreen" content="true"/><style>body{padding: 0;margin: 0;}</style><script type="text/javascript">window.onerror =function(errorMessage, scriptURI, lineNumber) {var erorMsg={message: errorMessage,script: scriptURI,line: lineNumber};//alert(errorMessage);};</script><title>我代表星星消灭你</title><script type="text/javascript" src="/static/lib/jquery-1.11.0.min.js"></script><script type="text/javascript" src="/static/lib/jquery-migrate-1.2.1.min.js"></script><script type="text/javascript" src="/static/game/lufylegend/lufylegend-1.9.11.min.js"></script>
</head>
<body><div id="game" style=""></div><script type="text/javascript">var GameSettings={limitTime:25 //游戏设定,这是当前游戏的限制时间,以秒为单位。,rows:10,max_rows_in_screen:8 //整个屏幕需要大多行填充。,show_rows_num:5 //通常显示多少行。必然少于max_rows_in_screen,columns:10,cellWidth:48,cellHeight:48,cellShakeTime:150 //单元格摇头动画单独一次的执行时间。,cellShakeDistance:5 //单元格摇头的相对距离。,cellFadeOutTime:150 //单元格消失时间。,cellMoveTime:200//单元格移动耗时。};var GameOptions={width:480,height:800};var GameData={score:0,beginTime:0,endTime:0,currentRowIndex:0 //游戏当前的行数是。。。以0开始。,userWantsStart:false,playing:false,busy:false //当前是否忙,showAnimation:false //是否正在执行动画。,timeOver:false //是否游戏结束};var innerTools={timeFormat:function(seconds){var _seconds=parseInt(seconds);var _s=_seconds%60;var _m=parseInt((_seconds-_s)/60)%60;var _str="";if(_m<=9){_str="0"+""+_m;}else{_str=""+_m;}if(_s<=9){_str=_str+":0"+_s;}else{_str=_str+":"+_s;}return _str;}};</script><script type="text/javascript">//--这是需要加载的各种资源。var resources=[];//--加载完成后得到的数据。,var resourceList={};function _addResource(name,path){resources.push({name:name,path:path});}(function(){//--加载图片素材。_addResource("bg_main","Resources/bg_mainscene.jpg");_addResource("bg_menu","Resources/bg_menuscene.jpg");_addResource("blue","Resources/blue.png");_addResource("blue_heart","Resources/blue_heart.png");_addResource("Cancel","Resources/Cancel.png");_addResource("click_1","Resources/click_1.png");_addResource("click_2","Resources/click_2.png");_addResource("CloseNormal","Resources/CloseNormal.png");_addResource("CloseSelected","Resources/CloseSelected.png");_addResource("coin_add","Resources/coin_add.png");_addResource("combo_1","Resources/combo_1.png");_addResource("combo_2","Resources/combo_2.png");_addResource("combo_3","Resources/combo_3.png");_addResource("Dialog_bg","Resources/Dialog_bg.png");_addResource("Dialog_bg2","Resources/Dialog_bg2.png");_addResource("Dialog_Item","Resources/Dialog_Item.png");_addResource("Dialog_Item2","Resources/Dialog_Item2.png");_addResource("Dialog_Title","Resources/Dialog_Title.png");_addResource("diamond","Resources/diamond.png");_addResource("fireworks","Resources/fireworks.png");_addResource("GameOver","Resources/GameOver.png");_addResource("green","Resources/green.png");_addResource("green_heart","Resources/green_heart.png");_addResource("HelloWorld","Resources/HelloWorld.png");_addResource("Help_1","Resources/Help_1.png");_addResource("Help_2","Resources/Help_2.png");_addResource("Item_pause","Resources/Item_pause.png");_addResource("menu_about","Resources/menu_about.png");_addResource("menu_CDKEY","Resources/menu_CDKEY.png");_addResource("menu_continue","Resources/menu_continue.png");_addResource("menu_continue2","Resources/menu_continue2.png");_addResource("menu_continuegame","Resources/menu_continuegame.png");_addResource("menu_help","Resources/menu_help.png");_addResource("menu_lingjiang","Resources/menu_lingjiang.png");_addResource("menu_lingqu","Resources/menu_lingqu.png");_addResource("menu_money","Resources/menu_money.png");_addResource("menu_sound_on","Resources/menu_sound_on.png");_addResource("menu_sound_off","Resources/menu_sound_off.png");_addResource("menu_start","Resources/menu_start.png");_addResource("menu_Text","Resources/menu_Text.png");_addResource("menu_top","Resources/menu_top.png");_addResource("MrDu","Resources/MrDu.png");_addResource("MrDu_choujiang1","Resources/MrDu_choujiang1.png");_addResource("MrDu_choujiang2","Resources/MrDu_choujiang2.png");_addResource("new","Resources/new.png");_addResource("orange","Resources/orange.png");_addResource("orange_heart","Resources/orange_heart.png");_addResource("paint_arrow","Resources/paint_arrow.png");_addResource("paint_back","Resources/paint_back.png");_addResource("paint_bg","Resources/paint_bg.png");_addResource("Pause","Resources/Pause.png");_addResource("Props_Bomb","Resources/Props_Bomb.png");_addResource("Props_Paint","Resources/Props_Paint.png");_addResource("Props_Rainbow","Resources/Props_Rainbow.png");_addResource("purple","Resources/purple.png");_addResource("purple_heart","Resources/purple_heart.png");_addResource("red","Resources/red.png");_addResource("red_heart","Resources/red_heart.png");_addResource("Shop_Onece","Resources/Shop_Onece.png");_addResource("sound_on","Resources/sound_on.png");_addResource("stage_clear","Resources/stage_clear.png");_addResource("star","Resources/star.png");_addResource("Title_CDKEY","Resources/Title_CDKEY.png");_addResource("Title_choujiang","Resources/Title_choujiang.png");_addResource("Title_Help","Resources/Title_Help.png");_addResource("Title_OneceShop","Resources/Title_OneceShop.png");_addResource("Title_Pause","Resources/Title_Pause.png");_addResource("Title_QuickShop","Resources/Title_QuickShop.png");_addResource("Title_shop","Resources/Title_shop.png");_addResource("zengsong","Resources/zengsong.png");_addResource("coin","Resources/coin.png");_addResource("clock_yellow","Resources/clock-yellow.png");//--音效。。_addResource("music","Resources/music.ogg");_addResource("audio_beep","Resources/Music/beep.ogg");_addResource("audio_clear","Resources/Music/clear.ogg");_addResource("audio_coin","Resources/Music/coin.ogg");_addResource("audio_coinsin","Resources/Music/coinsin.ogg");_addResource("audio_combo_1","Resources/Music/combo_1.ogg");_addResource("audio_combo_2","Resources/Music/combo_2.ogg");_addResource("audio_combo_3","Resources/Music/combo_3.ogg");_addResource("audio_pop","Resources/Music/pop.ogg");_addResource("audio_landing","Resources/Music/landing.ogg");_addResource("audio_NextGameRound","Resources/Music/NextGameRound.ogg");_addResource("audio_music","Resources/Music/music.ogg");_addResource("audio_Props_Bomb","Resources/Music/Props_Bomb.ogg");_addResource("audio_Props_Paint","Resources/Music/Props_Paint.ogg");_addResource("audio_Props_Rainbow","Resources/Music/Props_Rainbow.ogg");_addResource("audio_readygo","Resources/Music/readygo.ogg");_addResource("audio_select","Resources/Music/select.ogg");_addResource("audio_fireworks_01","Resources/Music/fireworks_01.wav");_addResource("audio_fireworks_02","Resources/Music/fireworks_02.wav");_addResource("audio_fireworks_03","Resources/Music/fireworks_03.wav");    })();</script><script type="text/javascript">//--这是游戏的主要方法。function game_main(){console.log("游戏运行中...");game_screen_setting();//游戏设置game_preLoad();//游戏预加载。}//--游戏加载层。。var _loadingLayer={};//游戏预加载。function game_preLoad(){_loadingLayer = new LoadingSample3();LGlobal.stage.addChild(_loadingLayer);//--这里开始要加载资源了。LLoadManage.load(resources,function(progress){_loadingLayer.setProgress(progress);},game_init);}function game_init(_resource_loaded_object){resourceList=_resource_loaded_object;LGlobal.stage.removeChild(_loadingLayer);_PopStar.init();console.log("加载完成,现在要开始渲染游戏了。");}//--设置屏幕为全屏或者其他。function game_screen_setting(){LGlobal.align = LStageAlign.BOTTOM_MIDDLE;//LGlobal.stageScale = LStageScaleMode.SHOW_ALL;LGlobal.stageScale = LStageScaleMode.EXACT_FIT;LSystem.screen(LStage.FULL_SCREEN);}init(30,"game",GameOptions.width,GameOptions.height,game_main);
</script>
<script type="text/javascript">//--这里是游戏主体逻辑界面什么的。//--这是游戏的各种界面句柄管理。var Layers={Layer_Menu:{},Layer_Main:{},Layer_Clear:{}};//--menu菜单对象。function LayerGameMenu(__opts){//--显示游戏菜单选项。var innerOpts={onStartButtonClick:function(){console.log("点击开始按钮做什么。。");}};$.extend(innerOpts,__opts);var _root_sprite=new LSprite();//      var loader = new LLoader();
//      loader.addEventListener(LEvent.COMPLETE, loadBitmapdata);
//      loader.load("Resources/bg_menuscene.jpg","bitmapData");var bitmapData_bg = new LBitmapData(resourceList["bg_menu"]);var bitmap_bg = new LBitmap(bitmapData_bg);_root_sprite.addChild(bitmap_bg);//--创建开始按钮及对应事件。var bitmapData_menu_start=new LBitmapData(resourceList["menu_start"]);var bitmap_menu_start=new LBitmap(bitmapData_menu_start);var btn_start = new LButton(bitmap_menu_start,bitmap_menu_start);//testButton.y = 50;//layer.addChild(testButton);btn_start.addEventListener(LMouseEvent.MOUSE_DOWN,function(){innerOpts.onStartButtonClick();});window.theBtn=btn_start;_root_sprite.addChild(btn_start);//--布局及位置。btn_start.x=(GameOptions.width)/2-268/2;btn_start.y=(GameOptions.height)/2-71/2;//addChild(bitmap_bg);//return bitmap_bg;var returnObj={getRoot:function(){return _root_sprite;}};return returnObj;}//--main layerfunction LayerGameMain(__opts){var _i_settings={onInit:function(){}};$.extend(_i_settings,__opts);var _root_sprite=new LSprite();var bitmapData_bg = new LBitmapData(resourceList["bg_main"]);var bitmap_bg = new LBitmap(bitmapData_bg);_root_sprite.addChild(bitmap_bg);var topBarGroup=new LSprite();var scoreGroup=new LSprite();var timeGroup=new LSprite();var _score_gold_coin_logo={};var _score_text={};var _time_tips={};var _time_logo={};//--下面是头顶栏目。var gameTopBar={init:function(){scoreGroup=new LSprite();_score_gold_coin_logo=new LBitmap(new LBitmapData(resourceList["coin"]));//_score_gold_coin_logo.anchor.setTo(0.5,0.5);_score_text=new LTextField();window.scoreGroup=scoreGroup;scoreGroup.x=20;scoreGroup.y=20;window.scoreText=_score_text;_time_logo=new LBitmap(new LBitmapData(resourceList["clock_yellow"]));_time_tips=new LTextField();//game.add.bitmapText(_time_logo.width+10, 8, 'flappy_font', innerTools.timeFormat(GameSettings.limitTime), 20); //当前分数//--位置。scoreGroup.x=20;scoreGroup.y=20;_score_gold_coin_logo.x=0;_score_gold_coin_logo.y=0;_score_text.x=30;_score_text.y=5;timeGroup.x=GameOptions.width-125;timeGroup.y=20;_time_logo.x=0;_time_logo.y=0;_time_tips.x=35;_time_tips.y=5;window.scoreLogo=_score_gold_coin_logo;_score_gold_coin_logo.scaleX=0.5;_score_gold_coin_logo.scaleY=0.5;_score_text.text="0";_time_tips.text="0";//_time_tips.setType(LTextFieldType.INPUT);//_score_text.setType(LTextFieldType.INPUT);_score_text.size = 14;_score_text.color = "#ffffff";_time_tips.size=14;_time_tips.color="#ffffff";scoreGroup.addChild(_score_text);scoreGroup.addChild(_score_gold_coin_logo);timeGroup.addChild(_time_logo);timeGroup.addChild(_time_tips);topBarGroup.addChild(scoreGroup);topBarGroup.addChild(timeGroup);_root_sprite.addChild(topBarGroup);},setTimeTips:function(nowTimeCount){_time_tips.text=innerTools.timeFormat(nowTimeCount);},setScore:function(scoreText){_score_text.text=scoreText;},getGroupRoot:function(){return topBarGroup;}};gameTopBar.init();_root_sprite.addChild(topBarGroup);//--下面主要那些游戏界面。。就是星星列表。//--生成随机五中颜色随机的砖块。分别有:blue,green,orange,purple,red,宽度与高度都是48x48var _matrix_stars=[];function createRandomStar(rowIndex,columnIndex,_opts){var _i_settings={onClick:function(sprite,pointer,_obj){console.log("您点击星星我了。");},onAnimateEnd:function(){console.log("动画停止。");}};$.extend(_i_settings,_opts);var _style=["blue","green","orange","purple","red"];var _random_int=parseInt(Math.random()*1000)%5;var _i_data={style:"",aminating:false,uid:"cell-"+rowIndex+"-"+columnIndex //唯一编码,这是一开始就给定的编码,不会变的。,x:0,y:0};_i_data.style=_style[_random_int];var __sprite={};var _s_w=GameSettings.cellWidth;var _s_h=GameSettings.cellHeight;var i_app={init:function(){var me=this;me.addSprite();me.initEvents();},addSprite:function(){//--计算位置。var _x=_s_w*columnIndex;var _y=GameOptions.height-(rowIndex+1)*_s_h;var tmpBitMap=new LBitmap(new LBitmapData(resourceList[_i_data.style]));__sprite=new LButton(tmpBitMap);__sprite.width=GameSettings.cellWidth;__sprite.height=GameOptions.cellHeight;_StarsGroup.addChild(__sprite);__sprite.x=_x;__sprite.y=_y;_i_data.x=_x;_i_data.y=_y;console.log("x,y",_x,_y);//game.add.sprite(_x,_y,_i_data.style);//--初始化点击事件。},initEvents:function(){__sprite.addEventListener(LMouseEvent.MOUSE_DOWN,function(evt1){window.evet1=evt1;var sprite=evt1.target;var _offsets={x:evt1.offsetX,y:evt1.offsetY};var _obj={deny:function(){_i_data.aminating=true;var _sep_time=GameSettings.cellShakeTime;var _sep_distance=GameSettings.cellShakeDistance;var _new_x1=sprite.x-_sep_distance;var _new_x2=sprite.x+_sep_distance;var _originX=sprite.x;_i_data.aminating=false;_i_settings.onAnimateEnd();}//--检测当前的位置。。。返回行号及列号。,getXY:function(){return {x:_i_data.x,y:_i_data.y}},setXY:function(x,y){_i_data.x=x;_i_data.y=y;},getMatrixLocation:function(){//console.log(sprite.x,sprite.y);//console.log(pointer);var _xx=_i_data.x+15;var __yy=_i_data.y-15;//--判断位置。var _columnIndex=parseInt((_xx-_xx%_s_w)/_s_w);var _rowIndex=parseInt(((GameOptions.height-__yy)-(GameOptions.height-__yy)%_s_h)/_s_h)-1;var _ro={column:_columnIndex,row:_rowIndex};return _ro;},getUID:function(){return _i_data.uid;},getStyle:function(){return _i_data.style;}};_i_settings.onClick(sprite,_obj.getXY(),_obj);});}};i_app.init();var returnObj={getSprite:function(){return __sprite;},getStyle:function(){return _i_data.style;},getMatrixLocation:function(){//console.log(sprite.x,sprite.y);//console.log(pointer);var sprite=__sprite;var _xx=_i_data.x+15;var __yy=_i_data.y-15;//--判断位置。var _columnIndex=parseInt((_xx-_xx%_s_w)/_s_w);var _rowIndex=parseInt(((GameOptions.height-__yy)-(GameOptions.height-__yy)%_s_h)/_s_h)-1;var _ro={column:_columnIndex,row:_rowIndex};return _ro;},getUID:function(){return _i_data.uid;},getSprite:function(){return __sprite;},getXY:function(){return {x:_i_data.x,y:_i_data.y}},setXY:function(x,y){_i_data.x=x;_i_data.y=y;},kill:function(){var self = this;var tween = LTweenLite.to(__sprite,0.5,{alpha:0,ease:Bounce.easeIn,onComplete:function(){console.log("已经消失了。");}});},move2XY:function(x,y,callback){var self = this;var tween = LTweenLite.to(__sprite,GameSettings.cellMoveTime/1000,{x:x,y:y,ease:Bounce.easeIn,onComplete:function(){console.log("已经消失了。");_i_data.x=x;_i_data.y=y;if(callback){callback();}}});}};return returnObj;}//--相关算法及计算。var SwapMgr={//--判断这个星星上下左右是否有相同颜色的星星、checkOneStarFourSide : function (_row,_column,_color) {var _thisCell=_matrix_stars[_row][_column];if(_thisCell==null||_thisCell==undefined){console.log("该单元格无效!");return null;}// cc.log("checkOneStarFourSide");var fourSideSpriteList = [];var color = _color;var col = _column;var row = _row;//upif (row < 9) {var upSprite =  _matrix_stars[row+1][col];// this.starTable[col][row + 1];if (upSprite != null && upSprite.getStyle() == color) {fourSideSpriteList.push(upSprite);}}//downif (row > 0) {var downSprite = _matrix_stars[_row-1][_column];if (downSprite != null && downSprite.getStyle() == color) {fourSideSpriteList.push(downSprite);}}//leftif (col > 0) {var leftSprite = _matrix_stars[_row][_column-1];if (leftSprite != null && leftSprite.getStyle() == color) {fourSideSpriteList.push(leftSprite);}}//rightif (col < 9) {var rightSprite = _matrix_stars[_row][_column+1];if (rightSprite != null && rightSprite.getStyle() == color) {fourSideSpriteList.push(rightSprite);}}return fourSideSpriteList;},checkSameColorStars : function (_row,_column) {var _thisCell=_matrix_stars[_row][_column];if(_thisCell==null||_thisCell==undefined){console.log("该单元格无效!");return null;}var sameColorList=[];sameColorList.push(_thisCell);var newSameColorList = [];newSameColorList.push(_thisCell);//by logic ,check the same color star listwhile (newSameColorList.length > 0) {for (var i = 0; i < newSameColorList.length; i++) {var _tmp_item=newSameColorList[i];var _tmp_loc=_tmp_item.getMatrixLocation();var fourSide = this.checkOneStarFourSide(_tmp_loc.row,_tmp_loc.column,_tmp_item.getStyle());if (fourSide.length > 0) {for (var j = 0; j < fourSide.length; j++) {//--判断是否包含这个数组。var _res_item=fourSide[j];var _contains_this=false;for(var t=0;t< sameColorList.length;t++){var _ttmp_item=sameColorList[t];if(_ttmp_item.getUID()==_res_item.getUID()){_contains_this=true;break;}}if (_contains_this==false) {sameColorList.push(fourSide[j]);newSameColorList.push(fourSide[j]);}}}newSameColorList.splice(i, 1);}}console.log("sameColorList length==" + sameColorList.length);if (sameColorList.length > 1) {for (var k = 0; k < sameColorList.length; k++) {var simpleStar = sameColorList[k];if (simpleStar) {//simpleStar.runAction(cc.ScaleTo.create(0.1, 1.08));}}}return sameColorList;}//--计算分数规则。//规则1:1分数= 方块数*方块数*5   2方块=20分3方块=45分.,getCurrentScore:function(theLength){return theLength*theLength*5;},fallAndCombindStar : function (repeatArrays) {if(repeatArrays==null||repeatArrays==undefined){return;}for(var i=0;i< repeatArrays.length;i++){var tmpItem=repeatArrays[i];var _row=tmpItem.row;var _column=tmpItem.column;_matrix_stars[_row][_column]=null;}//--好了,将空置的cell让上面的都填充。。。//--这里不要用传统的方法逐个逐个移动,直接构造一个新的列表。这个列表里面,列和行的数据是调转来的。var _matrix_tmp=[];var _row_count=GameSettings.rows;var _column_count=GameSettings.columns;for(var i=0; i<_column_count;i++){var __tmparr=[];for(var j=0;j< _row_count;j++){var _now_item=_matrix_stars[j][i];if(_now_item!=null){//--好了,将这个数据放到temparr里面去。__tmparr.push(_now_item);}}if(__tmparr.length>0){_matrix_tmp.push(__tmparr);}}console.log("tmp矩阵。");console.log(_matrix_tmp);//--好了,针对tmp的矩阵,我们变换一下,将右手边已经空了一列的数据给移过来。//当然,不是下层那样子。。。是必须有空隙才移动。那么可以得知,假如是空列的话上面的tmp其中一个元素必然为长度0.算了,这个在上面做判断就好了,为零的话不添加。
//        var _matrix_tmp2=[];
//        for(var i=0;i<_matrix_tmp.length;i++){//          var _arr1=_matrix_tmp[i];
//          if(_arr1){}
//        }//现在变换矩阵,换成正常的举矩阵//--全部初始化。for(var i=0;i<_row_count;i++){for(var j=0;j<_column_count;j++){_matrix_stars[i][j]=null;}}//--变换。for(var _column_index=0;_column_index<_matrix_tmp.length;_column_index++){var _columnArr=_matrix_tmp[_column_index];console.log(_columnArr);for(var _row_index=0;_row_index<_columnArr.length;_row_index++){_matrix_stars[_row_index][_column_index]=_columnArr[_row_index];}}console.log("变换以后的矩阵");console.log(_matrix_stars);//--好了,现在要根据矩阵来逐个逐个变换位置。for(var i=0;i<_row_count;i++){for(var j=0;j< _column_count;j++){var _item=_matrix_stars[i][j];if(_item!=null){this.moveSprite2Cell(i,j,_item);}}}},moveSprite2Cell:function(rowIndex,columnIndex,_ITEM){var _x=GameSettings.cellWidth*columnIndex;var _y=GameOptions.height-(rowIndex+1)*GameSettings.cellHeight;//--检查单元格是不是位置变了,变了才执行动画。var _xy=_ITEM.getXY();if(_x>_xy.x+10||_x<_xy.x-10||_y>_xy.y+10||_y<_xy.y-10){//var __tween_idle3=game.add.tween(sprite).to( {x:_x,y:_y }, GameSettings.cellMoveTime, Phaser.Easing.Quadratic.Out, true);console.log("需要移动到:",_x,_y);_ITEM.move2XY(_x,_y,function(){console.log("移动结束");});}}//--好了,现在要根据重复的位置来消去相关元素,重新组合矩阵数据及组合界面了。,cleanCells:function(repeatArrays,callback){if(repeatArrays==null||repeatArrays==undefined){return;}window.cleanArray=repeatArrays;//--将对应数组排序。。var _sep_time=GameSettings.cellFadeOutTime;for(var i=0;i< repeatArrays.length;i++){var tmpItem=repeatArrays[i];//tmpItem.kill();var tween = LTweenLite.to(tmpItem.sprite,GameSettings.cellFadeOutTime/1000,{alpha:0,ease:Bounce.easeIn,onComplete:function(){console.log("已经消失了。");}});//
//          var __tween_idle3=game.add.tween(tmpItem.sprite).to( {alpha:0 }, _sep_time, Phaser.Easing.Quadratic.Out, true);
//          __tween_idle3.onComplete.add(function(sprite,tween){//            sprite.kill();
//          });}this.fallAndCombindStar(repeatArrays);if(callback){setTimeout(function(){callback();},GameSettings.cellFadeOutTime+GameSettings.cellMoveTime+10);}}};var _StarsGroup=new LSprite();_StarsGroup.x=0;//_StarsGroup.y=GameOptions.height-GameSettings.cellHeight*GameSettings.rows;function initStars(){_matrix_stars=[];for(var _row=0;_row<GameSettings.rows;_row++){var _tmp_stars=[];for(var _column=0;_column<GameSettings.columns;_column++){var star_obj=createRandomStar(_row,_column,{onClick:function(sprite,pointer,_obj){if(GameData.timeOver){console.log("游戏结束");return;}if(GameData.busy){console.log("正在执行计算啊,先别动。。");return;//正在执行动画啊,先别动,等0.5s再说。}GameData.busy=true;var _loc=_obj.getMatrixLocation();console.log("点击的位置:",_loc);var __style=_obj.getStyle();//--判断是否有相同的星星类型。var _fourSide=SwapMgr.checkOneStarFourSide(_loc.row,_loc.column,__style);if(_fourSide==null||_fourSide.length<=0){_obj.deny();return;}else{console.log("四周围有同样颜色的。");//--计算当前相同颜色的块。var sameColorList=SwapMgr.checkSameColorStars(_loc.row,_loc.column);if(sameColorList==null){console.log("非法单元格。");GameData.busy=false;return;}else if(sameColorList.length<=1){console.log("没有相同的颜色块。");GameData.busy=false;return;}else{var _sameLocArr=[];for(var i=0;i<sameColorList.length;i++){var _tloc=sameColorList[i].getMatrixLocation();$.extend(_tloc,{style: sameColorList[i].getStyle(),uid:sameColorList[i].getUID(),sprite:sameColorList[i].getSprite()});_sameLocArr.push(_tloc);}console.log(_sameLocArr);//--好了,现在来计算得到的分数。var thisScore=SwapMgr.getCurrentScore(_sameLocArr.length);var _now_score=GameData.score+thisScore;gameTopBar.setScore(_now_score);GameData.score=_now_score;console.log(_now_score);SwapMgr.cleanCells(_sameLocArr,function(){GameData.busy=false;});}}},onAnimateEnd:function(){GameData.busy=false;}});//_StarsGroup.addChild(star_obj.getSprite());_tmp_stars.push(star_obj);}_matrix_stars.push(_tmp_stars);}}initStars();//-//_StarsGroup.addChild(new LBitmap(new LBitmapData(resourceList["blue"])));_root_sprite.addChild(_StarsGroup);var returnObj={getRoot:function(){return _root_sprite;},setTimeTips:function(_time){gameTopBar.setTimeTips(_time);}};return returnObj;}function LayerGameClear(__opts){var _root_sprite=new LSprite();var _bg=new LBitmap(new LBitmapData(resourceList["bg_main"]));var _tips_clear=new LBitmap(new LBitmapData(resourceList["stage_clear"]));var _score_bg=new LBitmap(new LBitmapData(resourceList["Dialog_Item"]));var _score_text=new LTextField();_score_text.color="#ffffff";_score_text.size=18;_score_text.text="0";_tips_clear.x=GameOptions.width/2-265/2;_tips_clear.y=GameOptions.height/2-158/2-100;_score_bg.x=GameOptions.width/2-153/2;_score_bg.y=GameOptions.height/2-47/2+20;_score_text.x=GameOptions.width/2-15;_score_text.y=GameOptions.height/2+10;_root_sprite.addChild(_bg);_root_sprite.addChild(_tips_clear);_root_sprite.addChild(_score_bg);_root_sprite.addChild(_score_text);var returnObj={setScore:function(score){_score_text.text=score+'';},getRoot:function(){return _root_sprite;}};return returnObj;}var _layer_game_menu={};var _layer_game_main={};var _layer_game_clear={};var _PopStar={init:function(){var me=this;console.log("pop star执行。");_layer_game_menu=LayerGameMenu({onStartButtonClick:function(){console.log("当前要转换成为主界面。");LGlobal.stage.removeChild(Layers.Layer_Menu);LGlobal.stage.addChild(Layers.Layer_Main);me.resetPlayStates();}});_layer_game_main=LayerGameMain({});_layer_game_clear=LayerGameClear({});Layers.Layer_Main=_layer_game_main.getRoot();Layers.Layer_Menu=_layer_game_menu.getRoot();Layers.Layer_Clear=_layer_game_clear.getRoot();LGlobal.stage.addChild(Layers.Layer_Menu);me.initOnFrame();}//--设置相关参数状态。,resetPlayStates:function(){GameData.timeOver=false;GameData.playing=true;GameData.beginTime=new Date().getTime();GameData.busy=false;}//--设置游戏结束状态。,resetEndStates:function(){GameData.timeOver=true;GameData.playing=false;GameData.beginTime=new Date().getTime();GameData.busy=false;}//-这是对于全局舞台的相关帧率控制设置。,initOnFrame:function(){var me=this;LGlobal.stage.addEventListener(LEvent.ENTER_FRAME,function(event){var layer = event.currentTarget;
//        //每一帧,横坐标增长/减少==向右/向左移动一像素,方向取决于direction的正负
//        layer.x += direction;
//        //不停右移
//        if(layer.x < 0){//          direction = 1;
//        }
//        //坐标大于700后,向左移
//        if(layer.x > 700){//          direction = -1;
//        }//console.log(new Date());//--假如游戏没有开始,那么就不执行。。。if(GameData.playing==false){return;}if(GameData.timeOver==true){return;}var _nowTime=new Date().getTime();var _passTime=parseInt((_nowTime-GameData.beginTime)/1000);if(_passTime>=GameSettings.limitTime){_layer_game_main.setTimeTips(0);//GameData.timeOver=true;me.resetEndStates();LGlobal.stage.removeChild(Layers.Layer_Main);LGlobal.stage.addChild(Layers.Layer_Clear);_layer_game_clear.setScore(GameData.score);return;}_layer_game_main.setTimeTips(GameSettings.limitTime-_passTime);});}};
</script>
</body>
</html>

资源下载

下载

消灭星星山寨版-我代表星星消灭你相关推荐

  1. Cocos2d JS 之消灭星星(九) 处理星星类之——移动和消灭星星

    1 /* 2 * 本层拥有处理星星的实例化以及对星星的操作 3 * 1/排列星星 4 * 2/移动和删除星星 5 */ 6 var GAMESTARLAYOUT; 7 var GameStarLayo ...

  2. 星星下落_与星星共舞

    星星下落 To humans, stars are among the most reliable facts of life. Our main star, the Sun, was there o ...

  3. 微信小程序星星评价,滑动星星评价+点击星星评价效果

    思路:点击星星评价就不用说了,度娘上多得是.我们来说一说滑动评价效果. 1.利用小程序的bindtouchmovechu事件,不知道是啥的,点击这里:https://blog.csdn.net/cra ...

  4. 来自星星的你,我要代表月亮消灭你一

    来自星星的你,一个风靡全亚洲的连续剧.这里来自星星的你--既是一个消灭星星的游戏.既是一个大名鼎鼎的游戏--消灭星星.那请看我游戏运行后最终的结果: 下面,我们来看一看相应的游戏mvc思维导图: 下面 ...

  5. 星星泡饭伴奏_星星泡饭 - Ayo_Lvlv - 5SING中国原创音乐基地

    [00:00.40]- Happy 300 Days - [00:03.14]-此翻唱禁任何无授权二传二改以及视频制作- [00:05.65]混音:西敏 [00:08.15]封面:鱼头 [00:09. ...

  6. 微信小程序实现星星评分-整颗星星评分、半颗星星评分、任意颗星星展示

    一.实现整颗星星评分(默认一颗星) 1.效果图 2.准备图片 3.remark.wxml <view class="stars"><view wx:for=&qu ...

  7. java打星星_java初学打印星星以及九九乘法表

    Java中打印星星,就是为了让初学者熟悉和掌握循环的使用方法: 给定一个图形如: * *** ***** ******* 第一种方式:由循环输出各个部分,再结合起来 for(int i=1;i< ...

  8. 评价星星等级显示(包含星星对应的等级)

    HTML <h1>评价显示星</h1> <img class="images" src="../../images/personage/st ...

  9. c语言数星星结构体,数星星(结构体专题)

    数星星(结构体专题) 题目描述: 给你一些坐标简单查重.就是输出星星坐标在不重复的情况下有几个: 输入 首先输入一个整数n(n<=300),接下来的n对整数,每对表示小明数过的一个星星的位置(星 ...

最新文章

  1. bzoj1927: [Sdoi2010]星际竞速
  2. 【Android 启动过程】Activity 启动源码分析 ( ActivityThread -> Activity、主线程阶段 二 )
  3. ASP保存远程图片到本地 同时取得第一张图片
  4. PMCAFF专访:搜狗effevo,这一次我们想连接“人”
  5. python调用c++动态库_Python调用C/C++动态链接库的方法
  6. 项目总结(3.DIBR技术项目总结(1.TOF相机及标定相关))
  7. pytorch中resnet_ResNet代码详解
  8. Python:创建列表,其中包含数字1-1000000,为什么Pycharm控制台结果显示不完整?
  9. 易语言mysql乱码_分享一个解决MySQL写入中文乱码的方法
  10. C#.Net工作笔记016---C#中使用反射对两个对象copy复制内容
  11. Keras中文文档:图像预处理ImageDataGenerator 类详细学习记录
  12. 什么是Web应用程序防火墙?
  13. win7找回快速启动栏
  14. 微信公众号H5网页支付
  15. dup和dup2函数
  16. C++ int a= {}和int a = 0
  17. Visa:三星Galaxy S III确定成为伦敦奥运官方手机
  18. 2022华中杯数学建模思路
  19. 镭速(Raysync)文件传输高可用安装部署介绍!
  20. 原创 | 一文读懂机器学习中的shapley值方法

热门文章

  1. 电视盒子哪个牌子好?2023年7月电视盒子性价比排名TOP5
  2. 什么是Scrum?Scrum的核心要点和精髓
  3. 一切为了阿凡达--电影博物馆排队事件
  4. CIO40: 从精益生产到智能制造!
  5. mysql快速生成100W条测试数据(8)全球各城市人口及经济增长速度并存入mysql数据库
  6. 保密性较高的Symantec SSL代码签名证书
  7. 汽车人为什么打不过霸天虎
  8. 史上最清晰ufo视频 土耳其新闻
  9. SSL证书过期怎么办?只需几步就能轻松解决!
  10. CRT连接linux,新建的用户“oralce”可以登陆了,root就登录不了了。 /etc/ssh/sshd_config 找到 PermitRootLogin no 改为yes