123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406 |
- (function() {
- var __IS_THE_NONE = -1;
- var __IS_THE_VERTICAL = 0;
- var __IS_THE_LEVEL = 1;
- var __line = 0;
- var __col = 0;
- var __map = null;
- var __destPath = null;
- var __clearPath = function() {
- if (null === __destPath) {
- __destPath = (__destPath || []);
- return;
- }
- while (__destPath.length > 0) {
- __destPath.pop();
- }
- };
-
- var __getSameLineDistance = function(startx, starty, endx, endy) {
- var distance = 0;
- distance = Math.abs(startx - endx) + Math.abs(starty - endy);
- return distance;
- };
-
- var __isInSameLineOrCol = function(startx, starty, endx, endy) {
- var tmp = null;
- var index = starty * __col + startx;
- if ((startx !== endx) && (starty !== endy)) {
- return false;
- }
- var tmpStartX = 0;
- var tmpStartY = 0;
- var tmpEndX = 0;
- var tmpEndY = 0;
- if (startx === endx) {
- // in the same col
- tmpStartX = startx;
- tmpStartY = starty;
- tmpEndX = endx;
- tmpEndY = endy;
- if (starty > endy) {
- tmpStartY = endy;
- tmpEndY = starty;
- }
- // index = (tmpStartY + 1) * __col + tmpStartX;
- for (index = (tmpStartY + 1) * __col + tmpStartX; index < tmpEndY * __col
- + tmpEndX; index += __col) {
- tmp = __map[index];
- if (FZ.GameDefs.DREAMPET_REMOVE !== tmp.m_state) {
- return false;
- }
- }
- } else if (starty === endy) {
- // in the same line
- tmpStartX = startx;
- tmpStartY = starty;
- tmpEndX = endx;
- tmpEndY = endy;
- if (startx > endx) {
- tmpStartX = endx;
- tmpEndX = startx;
- }
- // index = tmpStartY * __col + tmpStartX + 1;
- for (index = tmpStartY * __col + tmpStartX + 1; index < tmpEndY * __col
- + tmpEndX; index++) {
- tmp = __map[index];
- if (FZ.GameDefs.DREAMPET_REMOVE !== tmp.m_state) {
- return false;
- }
- }
- }
- return true;
- };
- var __isInDiagonal = function(startx, starty, endx, endy) {
- var cornerx = 0;
- var cornery = 0;
- var index = 0;
- var result = false;
- var tmp = null;
- // top
- cornerx = endx;
- cornery = starty;
- tmp = __map[cornery * __col + cornerx];
- if ((FZ.GameDefs.DREAMPET_REMOVE === tmp.m_state)) {
- result = __isInSameLineOrCol(startx, starty, cornerx, cornery);
- if (result) {
- result = __isInSameLineOrCol(cornerx, cornery, endx, endy);
- if (result) {
- __destPath.push( [ cornerx, cornery ]);
- return true;
- }
- }
- }
-
- //level
- cornerx = startx;
- cornery = endy;
- tmp = __map[cornery * __col + cornerx];
- if ((FZ.GameDefs.DREAMPET_REMOVE === tmp.m_state)) {
- result = __isInSameLineOrCol(startx, starty, cornerx, cornery);
- if (result) {
- result = __isInSameLineOrCol(cornerx, cornery, endx, endy);
- if (result) {
- __destPath.push( [ cornerx, cornery ]);
- return true;
- }
- }
- }
-
- return false;
- };
- var __isInTwoDiagonal = function(startx, starty, endx, endy) {
- var result = 0;
- var curStartX = 0;
- var curStartY = 0;
- var tmpStartX = 0;
- var tmpStartY = 0;
- var tmpEndX = 0;
- var tmpEndY = 0;
- var index = 0;
- var tmp = null;
- // search the near x
- if (startx < endx) {
- curStartX = startx;
- curStartY = starty;
- tmpEndX = endx;
- tmpEndY = endy;
- } else {
- curStartX = endx;
- curStartY = endy;
- tmpEndX = startx;
- tmpEndY = starty;
- }
- tmpStartX = curStartX;
- tmpStartY = curStartY;
-
- for (tmpStartX = tmpStartX + 1; tmpStartX < __col; tmpStartX++) {
- tmp = __map[tmpStartY * __col + tmpStartX];
- if (FZ.GameDefs.DREAMPET_REMOVE !== tmp.m_state) {
- break;
- }
- __clearPath();
- __destPath.push( [ curStartX, curStartY ]);
- __destPath.push( [ tmpStartX, tmpStartY ]);
- if (__isInDiagonal(tmpStartX, tmpStartY, tmpEndX, tmpEndY)) {
- __destPath.push( [ tmpEndX, tmpEndY ]);
- return true;
- }
- }
- // search near y
- if (starty < endy) {
- curStartX = startx;
- curStartY = starty;
- tmpEndX = endx;
- tmpEndY = endy;
- } else {
- curStartX = endx;
- curStartY = endy;
- tmpEndX = startx;
- tmpEndY = starty;
- }
- tmpStartX = curStartX;
- tmpStartY = curStartY;
-
- for (tmpStartY = tmpStartY + 1; tmpStartY < __line; tmpStartY++) {
- tmp = __map[tmpStartY * __col + tmpStartX];
- if (FZ.GameDefs.DREAMPET_REMOVE !== tmp.m_state) {
- break;
- }
- __clearPath();
- __destPath.push( [ curStartX, curStartY ]);
- __destPath.push( [ tmpStartX, tmpStartY ]);
- if (__isInDiagonal(tmpStartX, tmpStartY, tmpEndX, tmpEndY)) {
- __destPath.push( [ tmpEndX, tmpEndY ]);
- return true;
- }
- }
- // search far x
- if (startx < endx) {
- curStartX = startx;
- curStartY = starty;
- tmpEndX = endx;
- tmpEndY = endy;
- } else {
- curStartX = endx;
- curStartY = endy;
- tmpEndX = startx;
- tmpEndY = starty;
- }
- tmpStartX = curStartX;
- tmpStartY = curStartY;
-
- for (tmpStartX = tmpStartX - 1; tmpStartX >= 0; tmpStartX--) {
- tmp = __map[tmpStartY * __col + tmpStartX];
- if (FZ.GameDefs.DREAMPET_REMOVE !== tmp.m_state) {
- break;
- }
- __clearPath();
- __destPath.push( [ curStartX, curStartY ]);
- __destPath.push( [ tmpStartX, tmpStartY ]);
- if (__isInDiagonal(tmpStartX, tmpStartY, tmpEndX, tmpEndY)) {
- __destPath.push( [ tmpEndX, tmpEndY ]);
- return true;
- }
- }
- // search far y
- if (starty < endy) {
- curStartX = startx;
- curStartY = starty;
- tmpEndX = endx;
- tmpEndY = endy;
- } else {
- curStartX = endx;
- curStartY = endy;
- tmpEndX = startx;
- tmpEndY = starty;
- }
- tmpStartX = curStartX;
- tmpStartY = curStartY;
-
- for (tmpStartY = tmpStartY - 1; tmpStartY >= 0; tmpStartY--) {
- tmp = __map[tmpStartY * __col + tmpStartX];
- if (FZ.GameDefs.DREAMPET_REMOVE !== tmp.m_state) {
- break;
- }
- __clearPath();
- __destPath.push( [ curStartX, curStartY ]);
- __destPath.push( [ tmpStartX, tmpStartY ]);
- if (__isInDiagonal(tmpStartX, tmpStartY, tmpEndX, tmpEndY)) {
- __destPath.push( [ tmpEndX, tmpEndY ]);
- return true;
- }
- }
- };
-
- // map struct arr [] each elements = { m_state }
- FZ.AG = {};
- FZ.AG.SearchSpecialPath = {
-
- getPath : function(map, line, col, startx, starty, endx, endy) {
- if (undefined === map) {
- return null;
- }
- if (map.length < line * col) {
- return null;
- }
- var result = 0;
- __map = map;
- __line = line;
- __col = col;
- __clearPath();
- __destPath.push( [ startx, starty ]);
- if (__isInSameLineOrCol(startx, starty, endx, endy)) {
- __destPath.push( [ endx, endy ]);
- return __destPath;
- }
- __clearPath();
- __destPath.push( [ startx, starty ]);
- if (__isInDiagonal(startx, starty, endx, endy)) {
- __destPath.push( [ endx, endy ]);
- return __destPath;
- }
- __clearPath();
- if (__isInTwoDiagonal(startx, starty, endx, endy)) {
- return __destPath;
- }
- return null;
- },
-
- drawNum : function(sprite, value, x, y, w){
- var n = value;
- var num = 0;
-
- if (n === 0) {
- sprite.setFrame(0);
- sprite.draw(FZ.GameBase.MainContext);
- }else{
- sprite.resetMatrix();
- sprite.makeTranslate(x, y);
- for (var i = 0; n !== 0; i++) {
- num = Math.floor(n % 10);
- sprite.setFrame(num);
- sprite.draw(FZ.GameBase.MainContext);
- sprite.translate(-w, 0);
- n = Math.floor( n/ 10);
- }
- sprite.setFrame(0);
- sprite.makeTranslate(x, y);
- }
- },
-
- setNumDiv : function(div, value){
- var n = value;
- var num = 0;
- var info = null;
- var digital = 0;
- var tmpDiv = null;
- if (n === 0) {
- div[0] = document.createElement("div");
- div[0].style.zIndex = 202;
- info = FZ.getImgInfo("number_hint_0");
- // if (FZ.TargetMobile === FZ.TARGET_DEF.ANDRIOD) {
- // info.x += 20;
- // }
- FZ.GameBase.setCss(div[0], info);
- return 1;
- }else if( n > 10){
- num = Math.floor(n % 10);
- tmpDiv = document.createElement("div");
- tmpDiv.style.zIndex = 202;
- info = FZ.getImgInfo("number_hint_" + num);
- // if (FZ.TargetMobile === FZ.TARGET_DEF.ANDRIOD) {
- // info.x += 20;
- // }
- FZ.GameBase.setCss(tmpDiv, info);
- div.push(tmpDiv);
-
- num = Math.floor( n/ 10);
- tmpDiv = document.createElement("div");
- tmpDiv.style.zIndex = 205;
- info = FZ.getImgInfo("number_hint_clone_" + num);
- // if (FZ.TargetMobile === FZ.TARGET_DEF.ANDRIOD) {
- // info.x += 20;
- // }
- FZ.GameBase.setCss(tmpDiv, info);
- div.push(tmpDiv);
- return 2;
- }else{
- num = Math.floor(n % 10);
- tmpDiv = document.createElement("div");
- tmpDiv.style.zIndex = 202;
- info = FZ.getImgInfo("number_hint_" + num);
- // if (FZ.TargetMobile === FZ.TARGET_DEF.ANDRIOD) {
- // info.x += 20;
- // }
- FZ.GameBase.setCss(tmpDiv, info);
- div.push(tmpDiv);
-
- num = Math.floor( n/ 10);
- tmpDiv = document.createElement("div");
- tmpDiv.style.zIndex = 205;
- info = FZ.getImgInfo("number_hint_clone_" + num);
- // if (FZ.TargetMobile === FZ.TARGET_DEF.ANDRIOD) {
- // info.x += 20;
- // }
- FZ.GameBase.setCss(tmpDiv, info);
- tmpDiv.style.visibility = "hidden";
- div.push(tmpDiv);
- return 2;
- }
- },
- setScoreNum : function(value){
- var n = value;
- var num = 0;
- var splitNum = [];
- while(n > 0){
- num = Math.floor(n % 10);
- splitNum.push(num);
- n = Math.floor( n/ 10);
- }
- return splitNum;
-
- },
- getPolygonVertex : function(x, y, radius, number) {
- if(number < 3){
- return null;
- }
-
- var vertex = [];
- var angle = 0;
- var addAngle = (2 * Math.PI) / number;
-
- for(var index = 0; index < number; index++) {
- var dot = [];
- dot.push(x + Math.floor(radius * Math.sin(angle)));
- dot.push(y + Math.floor(radius * Math.cos(angle)));
- angle += addAngle;
-
- vertex.push(dot);
- }
-
- return vertex;
- }
- };
- })();
|