Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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")
Exemplo n.º 3
0
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")
Exemplo n.º 4
0
score += 0.1 * calc_score(newboard, RIGHT)

return score


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.
    """


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
    """
Exemplo n.º 5
0
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));
Exemplo n.º 6
0
	
    moves = [game.merge_up, game.merge_down, game.merge_left, game.merge_right]
	
    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]
Exemplo n.º 7
0
def swipe_up(board):
    new_board = game.merge_up(board)
    return 0 if board_equals(board, new_board) else get_score_by_board(
        board, new_board, UP)