123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- /**
- * @Description:support.js
- * @Author:LCore
- */
- // var documentWidth = window.screen.availWidth
- // var gridContainerWidth = 0.92 * documentWidth
- // var cellSideLength = 0.18 * documentWidth
- // var cellSpace = 0.04 * documentWidth
- // var headerWidth = window.screen.availWidth
- var cellSideLength
- var cellSpace
- var showText = {
- '2': '高雄萌妹',
- '4': '一发入魂',
- '8': '乱斗王者',
- '16': 'CAD大师',
- '32': '斗奶狂魔',
- '64': '认发作妈',
- '128': '下岗女工',
- '256': '梦碎豪门',
- '512': '太极宗师',
- '1024': '远离魔都',
- '2048': '文学巨匠',
- '4096': '分手大师',
- '8192': '金牌僚机',
- '16384': '股海明灯',
- }
- var backgroundColor = {
- '2': '#eee4da',
- '4': '#ede0c8',
- '8': '#f2b179',
- '16': '#f59563',
- '32': '#f67c5f',
- '64': '#f65e3b',
- '128': '#edcf72',
- '256': '#edcc61',
- '512': '#9c0',
- '1024': '#33b5e5',
- '2048': '#09c',
- '4096': '#a6c',
- '8192': '#93c',
- '16384': '#e04',
- }
- export default class Support {
- constructor(w, h) {
- this.w = w
- this.h = h
- cellSideLength = 0.18*w
- cellSpace = 0.04*w
- }
-
- getPostionTop(i, j) {
- return (i * cellSideLength + (i + 1) * cellSpace + 0.3 * this.w + 50);
- }
- getPostionLeft(i, j) {
- return (j * cellSideLength + (j + 1) * cellSpace+ 0.04 * this.w);
- }
- getShowTextByNum(number) {
- if (number < (16384 + 1)) {
- return showText[number];
- }
- return 'fafa';
- }
- getBackgroundColorByNum(number) {
- if (number < (16384 + 1)) {
- return backgroundColor[number];
- }
- return "black";
- }
- getPreColorByNum(number) {
- if (number <= 4)
- return "#776e65";
- return "white";
- }
- isNoSpace(board) {
- for (var i = 0; i < 4; i++)
- for (var j = 0; j < 4; j++)
- if (board[i][j] == 0)
- return false;
- return true;
- }
- canMoveLeft(board) {
- for (var i = 0; i < 4; i++) {
- for (var j = 1; j < 4; j++) {
- if (board[i][j] != 0) {
- if (board[i][j - 1] == 0 || board[i][j] == board[i][j - 1])
- return true;
- }
- }
- }
- return false;
- }
- canMoveRight(board) {
- for (var i = 3; i >= 0; i--) {
- for (var j = 2; j >= 0; j--) {
- if (board[i][j] != 0) {
- if (board[i][j + 1] == 0 || board[i][j] == board[i][j + 1])
- return true;
- }
- }
- }
- return false;
- }
- /**
- *@Desciption: 补全原方法, 添加全部方向都不能的判断
- *@author: huwhois
- *@pragram board:棋盘格
- *@pragram direction:移动方向
- */
- canMoveUp(board) {
- for (var i = 0; i < 4; i++) {
- for (var j = 1; j < 4; j++) {
- if (board[j][i] != 0) { //可以移动
- if (board[j - 1][i] == 0 || board[j][i] == board[j - 1][i])
- return true;
- }
- }
- }
- return false;
- }
- canMoveDown(board) {
- for (var i = 3; i >= 0; i--) {
- for (var j = 2; j >= 0; j--) {
- if (board[j][i] != 0) { //可以移动
- if (board[j + 1][i] == 0 || board[j][i] == board[j + 1][i])
- return true;
- }
- }
- }
- return false;
- }
- canMoveAll(board) {
- return (this.canMoveLeft(board) || this.canMoveRight(board) || this.canMoveUp(board) || this.canMoveDown(board))
- }
- /**
- *@Desciption:重新构造canMove方法(包括上、下、左、右)
- *@author:LCore
- *@pragram board:棋盘格
- *@pragram direction:移动方向
- */
- canMove(board, direction) {
- if (direction == 1) {
- //左移
- for (var i = 0; i < 4; i++) {
- for (var j = 1; j < 4; j++) {
- if (board[i][j] != 0) {
- if (board[i][j - 1] == 0 || board[i][j] == board[i][j - 1])
- return true;
- }
- }
- }
- } else if (direction == 2) {
- //上移
- for (var i = 0; i < 4; i++) {
- for (var j = 1; j < 4; j++) {
- if (board[j][i] != 0) { //可以移动
- if (board[j - 1][i] == 0 || board[j][i] == board[j - 1][i])
- return true;
- }
- }
- }
- } else if (direction == 3) {
- //下移
- for (var i = 3; i >= 0; i--) {
- for (var j = 2; j >= 0; j--) {
- if (board[j][i] != 0) { //可以移动
- if (board[j + 1][i] == 0 || board[j][i] == board[j + 1][i])
- return true;
- }
- }
- }
- } else if (direction == 4) {
- //右移
- for (var i = 3; i >= 0; i--) {
- for (var j = 2; j >= 0; j--) {
- if (board[i][j] != 0) {
- if (board[i][j + 1] == 0 || board[i][j] == board[i][j + 1])
- return true;
- }
- }
- }
- } else
- return false;
- }
- /**
- *@Description:横向判断是否存在障碍物
- *@pagram row:第几行
- *@pagram col1:开始索引
- *@pagram col2:结束索引
- *@pagram board:棋盘格
- */
- noBlockHorizontal(row, col1, col2, board) {
- for (var i = col1 + 1; i < col2; i++) {
- if (board[row][i] != 0)
- return false;
- }
- return true;
- }
- /**
- *@Description:纵向判断是否存在障碍物
- *@pagram col:第几列
- *@pagram row1:开始索引
- *@pagram row2:结束索引
- *@pagram board:棋盘格
- */
- noBlockVectal(col, row1, row2, board) {
- for (var i = row1 + 1; i < row2; i++) {
- if (board[i][col] != 0)
- return false;
- }
- return true;
- }
- }
|