support.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. /**
  2. * @Description:support.js
  3. * @Author:LCore
  4. */
  5. var documentWidth = window.screen.availWidth;
  6. var gridContainerWidth = 0.92*documentWidth;
  7. var cellSideLength = 0.18*documentWidth;
  8. var cellSpace = 0.04*documentWidth;
  9. var headerWidth=window.screen.availWidth;
  10. var showText = {
  11. '2': '高雄萌妹',
  12. '4': '一发入魂',
  13. '8': '乱斗王者',
  14. '16': 'CAD大师',
  15. '32': '斗奶狂魔',
  16. '64': '认发作妈',
  17. '128': '下岗女工',
  18. '256': '梦碎豪门',
  19. '512': '太极宗师',
  20. '1024': '远离魔都',
  21. '2048': '文学巨匠',
  22. '4096': '分手大师',
  23. '8192': '金牌僚机',
  24. '16384': '股海明灯',
  25. };
  26. function getPostionTop(i, j) {
  27. return (i * cellSideLength + (i + 1) * cellSpace);
  28. }
  29. function getPostionLeft(i, j) {
  30. return (j * cellSideLength + (j + 1) * cellSpace);
  31. }
  32. function getShowTextByNum(number){
  33. if (number < (16384 +1)) {
  34. return showText[number];
  35. }
  36. return 'xx';
  37. }
  38. function getBackgroundColorByNum(number) {
  39. switch (number) {
  40. case 2:
  41. return "#eee4da";
  42. break;
  43. case 4:
  44. return "#ede0c8";
  45. break;
  46. case 8:
  47. return "#f2b179";
  48. break;
  49. case 16:
  50. return "#f59563";
  51. break;
  52. case 32:
  53. return "#f67c5f";
  54. break;
  55. case 64:
  56. return "#f65e3b";
  57. break;
  58. case 128:
  59. return "#edcf72";
  60. break;
  61. case 256:
  62. return "#edcc61";
  63. break;
  64. case 512:
  65. return "#9c0";
  66. break;
  67. case 1024:
  68. return "#33b5e5";
  69. break;
  70. case 2048:
  71. return "#09c";
  72. break;
  73. case 4096:
  74. return "#a6c";
  75. break;
  76. case 8192:
  77. return "#93c";
  78. break;
  79. }
  80. return "black";
  81. }
  82. function getPreColorByNum(number) {
  83. if (number <= 4)
  84. return "#776e65";
  85. return "white";
  86. }
  87. function isNoSpace(board) {
  88. for (var i = 0; i < 4; i++)
  89. for (var j = 0; j < 4; j++)
  90. if (board[i][j] == 0)
  91. return false;
  92. return true;
  93. }
  94. function canMoveLeft(board) {
  95. for (var i = 0; i < 4; i++) {
  96. for (var j = 1; j < 4; j++) {
  97. if (board[i][j] != 0) {
  98. if (board[i][j - 1] == 0 || board[i][j] == board[i][j - 1])
  99. return true;
  100. }
  101. }
  102. }
  103. return false;
  104. }
  105. function canMoveRight(borad) {
  106. for (var i = 3; i >= 0; i--) {
  107. for (var j = 2; j >= 0; j--) {
  108. if (board[i][j] != 0) {
  109. if (board[i][j + 1] == 0 || board[i][j] == board[i][j + 1])
  110. return true;
  111. }
  112. }
  113. }
  114. return false;
  115. }
  116. function canMoveUp(borad) {
  117. for (var i = 0; i < 4; i++) {
  118. for (var j = 1; j < 4; j++) {
  119. if (board[j][i] != 0) { //可以移动
  120. if (board[j - 1][i] == 0 || board[j][i] == board[j - 1][i])
  121. return true;
  122. }
  123. }
  124. }
  125. return false;
  126. }
  127. function canMoveDown(borad) {
  128. for (var i = 3; i >= 0; i--) {
  129. for (var j = 2; j >= 0; j--) {
  130. if (board[j][i] != 0) { //可以移动
  131. if (board[j + 1][i] == 0 || board[j][i] == board[j + 1][i])
  132. return true;
  133. }
  134. }
  135. }
  136. return false;
  137. }
  138. function cavMoveAll(borad){
  139. res = canMoveLeft(borad) || canMoveRight(borad) || canMoveUp(borad) || canMoveDown(borad);
  140. return res;
  141. }
  142. /**
  143. *@Desciption:重新构造canMove方法(包括上、下、左、右)
  144. *@author:LCore
  145. *@pragram board:棋盘格
  146. *@pragram direction:移动方向
  147. */
  148. function canMove(board, direction) {
  149. if (direction == 1) {
  150. //左移
  151. for (var i = 0; i < 4; i++) {
  152. for (var j = 1; j < 4; j++) {
  153. if (board[i][j] != 0) {
  154. if (board[i][j - 1] == 0 || board[i][j] == board[i][j - 1])
  155. return true;
  156. }
  157. }
  158. }
  159. } else if (direction == 2) {
  160. //上移
  161. for (var i = 0; i < 4; i++) {
  162. for (var j = 1; j < 4; j++) {
  163. if (board[j][i] != 0) { //可以移动
  164. if (board[j - 1][i] == 0 || board[j][i] == board[j - 1][i])
  165. return true;
  166. }
  167. }
  168. }
  169. } else if (direction == 3) {
  170. //下移
  171. for (var i = 3; i >= 0; i--) {
  172. for (var j = 2; j >= 0; j--) {
  173. if (board[j][i] != 0) { //可以移动
  174. if (board[j + 1][i] == 0 || board[j][i] == board[j + 1][i])
  175. return true;
  176. }
  177. }
  178. }
  179. } else if (direction == 4) {
  180. //右移
  181. for (var i = 3; i >= 0; i--) {
  182. for (var j = 2; j >= 0; j--) {
  183. if (board[i][j] != 0) {
  184. if (board[i][j + 1] == 0 || board[i][j] == board[i][j + 1])
  185. return true;
  186. }
  187. }
  188. }
  189. } else
  190. return false;
  191. }
  192. /**
  193. *@Description:横向判断是否存在障碍物
  194. *@pagram row:第几行
  195. *@pagram col1:开始索引
  196. *@pagram col2:结束索引
  197. *@pagram board:棋盘格
  198. */
  199. function noBlockHorizontal(row, col1, col2, board) {
  200. for (var i = col1 + 1; i < col2; i++) {
  201. if (board[row][i] != 0)
  202. return false;
  203. }
  204. return true;
  205. }
  206. /**
  207. *@Description:纵向判断是否存在障碍物
  208. *@pagram col:第几列
  209. *@pagram row1:开始索引
  210. *@pagram row2:结束索引
  211. *@pagram board:棋盘格
  212. */
  213. function noBlockVectal(col, row1, row2, board) {
  214. for (var i = row1 + 1; i < row2; i++) {
  215. if (board[i][col] != 0)
  216. return false;
  217. }
  218. return true;
  219. }