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]
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))
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))
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)
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))
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)
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