def key_press_handler(): global score while True: while True: try: if keyboard.is_pressed('a'): chosen_direction = 'left' break elif keyboard.is_pressed('w'): chosen_direction = 'up' break elif keyboard.is_pressed('s'): chosen_direction = "down" break elif keyboard.is_pressed('d'): chosen_direction = "right" break except: pass actual_board = copy.deepcopy(board) if chosen_direction == "left": ga.merge_left(board) elif chosen_direction == "right": ga.merge_right(board) elif chosen_direction == "up": ga.merge_up(board) elif chosen_direction == "down": ga.merge_down(board) if actual_board != board: score += 10 ga.random_spawn(board) time.sleep(0.3)
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")
""" move and return the grid without a new random tile It won't affect the state of the game in the browser. """ 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 board_equals(board, newboard): """ Check if two boards are equal """ return (newboard == board).all() def func_star(a_b): """
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_right(board): new_board = game.merge_right(board) return 0 if board_equals(board, new_board) else get_score_by_board( board, new_board, RIGHT)