示例#1
0
def router(action, grid, started_grid, shuffled):
    if action.lower().strip() == "i":
        print(waitingInput())
        inputgrid = build_grid_from_input().reshape(DEFAULT_SIZE, DEFAULT_SIZE)
        return [inputgrid, started_grid, True, True]
    elif action.lower().strip() == "s":
        print(shuffling())
        return [shuffle(grid), started_grid, True, True]
    elif action.lower() == "solve":

        print(heuristicChoice())
        heuristic = input()
        print(waitingOutput())
        outputgrid = build_grid_from_input()

        print("Calculating solution...")
        
        try:
            answer = solve(np_array_to_matrix(grid), outputgrid, heuristic)
            if answer != None:
                if answer =="":
                    print("Matrix is already solved!")
                else:
                    turn_number=1
                    print("Solution: "+str(len(answer))+" turns")
                    sleep(2)
                    os.system('cls')
                    print(starting_turn(turn_number))
                    print(show_grid(grid))
                    print(show_moves())
                    for mv in answer:
                        print("Moving: ",mv)
                        sleep(1)
                        grid=move_letter(grid,mv)
                        os.system('cls')
                        print(starting_turn(turn_number))
                        print(show_grid(grid))
                        print(show_moves())
                        turn_number += 1
                    print("SOLVED!")
                    print("press ENTER to continue")
                    input()
                    return [grid,started_grid,False,True]
        except:
            print("No solution... better luck next time!")

    else:
        return [move_letter(grid, action), started_grid, True,False]
示例#2
0
def init():
    os.system('clear')
    print('%s\n\n' % welcome())
    grid = build_grid()
    grid, turn_number = play(grid, grid.copy())
    os.system('clear')
    print('\n\n%s' % victory(turn_number))
    print(show_grid(grid))
示例#3
0
def init():
    os.system('cls')
    print('%s\n\n' % welcome())
    grid=build_grid_test()
    grid_started=build_grid()

    grid, turn_number = play(grid, grid_started)
    os.system('cls')
    print('\n\n%s' % victory(turn_number))
    print(show_grid(grid))
示例#4
0
    def test_show_grid_should_render_grid_with_custom_size(self):
        grid_rendered = """
┌────┬────┬────┐
│  1 │  2 │  3 │
├────┼────┼────┤
│  4 │  5 │  6 │
├────┼────┼────┤
│  7 │  8 │    │
└────┴────┴────┘
"""  # noqa
        grid = [
            [1, 2, 3],
            [4, 5, 6],
            [7, 8, 0]
        ]
        self.assertEqual(show_grid(grid), grid_rendered)
示例#5
0
def play_one_turn(grid, started_grid, turn_number, shuffled):
    os.system('clear')
    print(starting_turn(turn_number))
    print(show_grid(grid))
    print(show_moves(movable_tiles(grid)))

    while True:
        if not shuffled:
            action = input('\n%s' % ask_move('W', 'S'))
        else:
            action = input('\n%s' % ask_move('W', None))

        try:
            return router(action, grid, started_grid, shuffled)
        except ValueError:
            print('=> ' + show_action_not_valid(action))
        except MoveException as error:
            print('=> ' + str(error))
示例#6
0
    def test_show_grid_should_render_grid(self):
        grid_rendered = """
┌────┬────┬────┬────┐
│  1 │  2 │  3 │  4 │
├────┼────┼────┼────┤
│  5 │  6 │  7 │  8 │
├────┼────┼────┼────┤
│  9 │ 10 │ 11 │ 12 │
├────┼────┼────┼────┤
│ 13 │ 14 │ 15 │    │
└────┴────┴────┴────┘
"""  # noqa
        grid = [
            [1, 2, 3, 4],
            [5, 6, 7, 8],
            [9, 10, 11, 12],
            [13, 14, 15, 0]
        ]
        self.assertEqual(show_grid(grid), grid_rendered)
示例#7
0
def play_one_turn(grid, started_grid, turn_number, shuffled):
    os.system('cls')
    print(starting_turn(turn_number))
    print(show_grid(grid))
    print(show_moves())

    while True:

        action = input('\n%s' % ask_move("solve", "S", "I"))

        try:
            return router(action, grid, started_grid, shuffled)
        except ValueError as e:
            print(str(e))
            if action == "q":
                print("GoodBye!")
                sys.exit()
            print('=> ' + show_action_not_valid(action))
            return
        except MoveException as error:
            print('=> ' + str(error))
            return