def execute_move(move, board): """ move and return the grid without a new random tile It won't affect the state of the game in the browser. """ if move == UP: return game.merge_up(board) elif move == DOWN: return game.merge_down(board) elif move == LEFT: return game.merge_left(board) elif move == RIGHT: return game.merge_right(board) else: sys.exit("No valid move")
def execute_move(move, board): """ move and return the grid """ UP, DOWN, LEFT, RIGHT = 0, 1, 2, 3 if move == UP: return game.merge_up(board) elif move == DOWN: return game.merge_down(board) elif move == LEFT: return game.merge_left(board) elif move == RIGHT: return game.merge_right(board) else: sys.exit("No valid move")
def getMaxMergeMove(board): merges = [game.merge_up(board), game.merge_down(board), game.merge_left(board), game.merge_right(board)] blocks = sum(sum(x > 0 for x in merges)) return blocks.tolist().index(min(blocks));
goal = [] if (sum(sum(board)) % 20 < 2): for i in range(0,4): goal.append([2**((4*i)+j+1) for j in range(0,4)]) goal[3] = goal[3][::-1] goal[1] = goal[1][::-1] else: for i in range(4): goal.append([2**(i+j) for j in range(4)]) u = game.merge_up(board) d = game.merge_down(board) r = game.merge_right(board) l = game.merge_left(board) U = [x * y for x,y in zip(goal, u)] D = [x * y for x,y in zip(goal, d)] R = [x * y for x,y in zip(goal, r)] L = [x * y for x,y in zip(goal, l)] sumU = sum(sum(U)) sumD = sum(sum(D)) sumR = sum(sum(R)) sumL = sum(sum(L)) sums = [sumU, sumD, sumL, sumR] best = max(sums) bestmove = sums.index(best)
def swipe_left(board): new_board = game.merge_left(board) return 0 if board_equals(board, new_board) else get_score_by_board( board, new_board, LEFT)