support.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  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. /**
  117. *@Desciption:重新构造canMove方法(包括上、下、左、右)
  118. *@author:LCore
  119. *@pragram board:棋盘格
  120. *@pragram direction:移动方向
  121. */
  122. function canMove(board, direction) {
  123. if (direction == 1) {
  124. //左移
  125. for (var i = 0; i < 4; i++) {
  126. for (var j = 1; j < 4; j++) {
  127. if (board[i][j] != 0) {
  128. if (board[i][j - 1] == 0 || board[i][j] == board[i][j - 1])
  129. return true;
  130. }
  131. }
  132. }
  133. } else if (direction == 2) {
  134. //上移
  135. for (var i = 0; i < 4; i++) {
  136. for (var j = 1; j < 4; j++) {
  137. if (board[j][i] != 0) { //可以移动
  138. if (board[j - 1][i] == 0 || board[j][i] == board[j - 1][i])
  139. return true;
  140. }
  141. }
  142. }
  143. } else if (direction == 3) {
  144. //下移
  145. for (var i = 3; i >= 0; i--) {
  146. for (var j = 2; j >= 0; j--) {
  147. if (board[j][i] != 0) { //可以移动
  148. if (board[j + 1][i] == 0 || board[j][i] == board[j + 1][i])
  149. return true;
  150. }
  151. }
  152. }
  153. } else if (direction == 4) {
  154. //右移
  155. for (var i = 3; i >= 0; i--) {
  156. for (var j = 2; j >= 0; j--) {
  157. if (board[i][j] != 0) {
  158. if (board[i][j + 1] == 0 || board[i][j] == board[i][j + 1])
  159. return true;
  160. }
  161. }
  162. }
  163. } else
  164. return false;
  165. }
  166. /**
  167. *@Description:横向判断是否存在障碍物
  168. *@pagram row:第几行
  169. *@pagram col1:开始索引
  170. *@pagram col2:结束索引
  171. *@pagram board:棋盘格
  172. */
  173. function noBlockHorizontal(row, col1, col2, board) {
  174. for (var i = col1 + 1; i < col2; i++) {
  175. if (board[row][i] != 0)
  176. return false;
  177. }
  178. return true;
  179. }
  180. /**
  181. *@Description:纵向判断是否存在障碍物
  182. *@pagram col:第几列
  183. *@pagram row1:开始索引
  184. *@pagram row2:结束索引
  185. *@pagram board:棋盘格
  186. */
  187. function noBlockVectal(col, row1, row2, board) {
  188. for (var i = row1 + 1; i < row2; i++) {
  189. if (board[i][col] != 0)
  190. return false;
  191. }
  192. return true;
  193. }