# Lists for the map, and tracking shots
x_axis = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
y_axis = ['1', '2', '3', '4', '5', '6', '7', '8', '9']


# prints the map, with the letter/number label for rows/columns
def print_map():
    print ' ',  ' '.join(y_axis)
    print_count = 0
    for i in map_grid:
        print x_axis[print_count], ' '.join(i)
        print_count += 1

fleet_builder.build_fleet()


enemy_carrier = fleet_builder.enemy_fleet[0]
enemy_battleship = fleet_builder.enemy_fleet[1]
enemy_destroyer = fleet_builder.enemy_fleet[2]
enemy_submarine = fleet_builder.enemy_fleet[3]
enemy_patrol = fleet_builder.enemy_fleet[4]

enemy_fleet = [
    enemy_carrier,
    enemy_battleship,
    enemy_destroyer,
    enemy_submarine,
    enemy_patrol]
# Lists for the map, and tracking shots
x_axis = ["A", "B", "C", "D", "E", "F", "G", "H", "I"]
y_axis = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]


# prints the map, with the letter/number label for rows/columns
def print_map():
    print " ", " ".join(y_axis)
    print_count = 0
    for i in map_grid:
        print x_axis[print_count], " ".join(i)
        print_count += 1


enemy_fleet = fleet_builder.build_fleet()


# Debug Purposes
def show_enemies():
    for ship in enemy_fleet:
        for spot in ship:
            map_grid[int(spot[0])][int(spot[1])] = "#"


# When the shot happens, this decides what the computer does
def shoot(x, y):

    global pass_turn

    if map_grid[x][y] in ["O", "X"]:
def restart():
    while True:

        import fleet_builder
        fleet_builder.build_fleet()

        # This builds a 9x9 grid
        make_grid = []
        map_grid = []
        for i in range(9):
            for i in range(9):
                make_grid.append('-')
            map_grid.append(make_grid)
            make_grid = []

        # Lists for the map, and tracking shots
        x_axis = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
        y_axis = ['1', '2', '3', '4', '5', '6', '7', '8', '9']

        info = ['Game Start']
        def print_info():
            for i in info:
                print "-" + i

        def end_game():
            if len(fleet_builder.enemy_fleet) == 0:
                print "You won! Good game. Would you like to play again? (Y/N)"
                again = raw_input('> ').lower()
            else:
                print "You lost! Good game. Would you like to play again? (Y/N)"
                again = raw_input('> ').lower()
            while True:
                if again[0] == 'y' or again[0] == 'n':
                    if again[0] == 'y':
                        print "Restarting..."
                        restart()

                        break
                    if again[0] == 'n':
                        exit(1)
                        break
                else:
                    print "I didn't catch that. Yes or No?"
                    again = raw_input('> ').lower()

        # prints the map, with the letter/number label for rows/columns
        def print_map():
            print '\n'
            print ' ',  ' '.join(y_axis)
            print_count = 0
            for i in map_grid:
                print x_axis[print_count], ' '.join(i)
                print_count += 1

        # Debug Purposes
        def show_enemies():
            for ship in fleet_builder.enemy_fleet:
                for spots in ship.lay:
                    map_grid[int(spots[0])][int(spots[1])] = '#'

        def sink_checker():
            for ship in fleet_builder.enemy_fleet:
                if len(ship.lay) == 0:
                    info.append(str("You sunk their " + ship.name + '!'))
                    fleet_builder.enemy_fleet.remove(ship)

        def fleet_status():
            enemy_fleet_live = []
            enemy_fleet_status = []

        # When the shot happens, this decides what the computer does
        def shoot(x, y):
            global pass_turn

            if map_grid[x][y] in ['O', 'X']:
                print "You've already shot there, ya dingus."
                pass_turn = False
                return

            for ship in fleet_builder.enemy_fleet:
                for spots in ship.lay:
                    if spots == [x, y]:
                        map_grid[x][y] = 'X'
                        ship.lay.remove(spots)
                        info.append(str("You hit their " + ship.name + '!'))
                        pass_turn = True
                        return

            else:
                map_grid[x][y] = 'O'
                info.append(str("You missed."))
                pass_turn = True
                return

        def your_turn():

            global pass_turn
            pass_turn = False

            # Checks to see if input is legal, then sets it to be read if it's only a little off.
            while not pass_turn:
                shot = raw_input("> ").upper()
                shot = list(shot)
                shot.sort()
                shot.reverse()
                if len(shot) == 2 \
                    and shot[0] in x_axis \
                        and shot[1] in y_axis:
                            # # Debug Purposes
                            # print x_axis.index(shot[0]), y_axis.index(shot[1])
                            shoot(x_axis.index(shot[0]), y_axis.index(shot[1]))
                else:
                    print "Try again"
            sink_checker()
            if len(fleet_builder.enemy_fleet) == 0:
                print_map()
                print_info()
                end_game()
            info.append("Next Turn")

        # Here starts the game

        # Debugging Purposes
        show_enemies()

        while True:

            print_map()
            print_info()
            info = []
            your_turn()