def __init__(self, length, width, bombCnt):
     """Constructor
     Initialises inter variables
     """
     self.gameBoard = Board()
     self.length = length
     self.width = width
     self.bombCnt = bombCnt
 def __init__(self, length, width, bombCnt):
     """Constructor
     Initialises inter variables
     """
     ##Board Object
     self.gameBoard = Board()
     ##Length of board
     self.length = length
     ##Width of board
     self.width = width
     ##How many Bombs there are in game
     self.bombCnt = bombCnt
class executive:
    """
    Execuitve class
    Intermidiet class between player (GUI) and board / tile objects
    """
    def __init__(self, length, width, bombCnt):
        """Constructor
        Initialises inter variables
        """
        ##Board Object
        self.gameBoard = Board()
        ##Length of board
        self.length = length
        ##Width of board
        self.width = width
        ##How many Bombs there are in game
        self.bombCnt = bombCnt

    def checkWinLose(self):
        """Checks game logic for a win or lose
        0->Unresolved
        1->Win
        2->Lose
        """
        num_safe_tile = self.length * self.width - self.bombCnt
        num_safe_revealed_tile = 0
        num_flagged_tile = 0
        for j in range(self.length):
            for i in range(self.width):
                if (self.gameBoard.board[i][j].isBomb == True
                        and self.gameBoard.board[i][j].isVisible == True):
                    return 2
                elif (self.gameBoard.board[i][j].isVisible == True):
                    num_safe_revealed_tile = num_safe_revealed_tile + 1
                # both mines and tiles need to be revealed so that the user cannot guess which tiles are mines without revealing tiles
                if (self.gameBoard.board[i][j].isBomb == True
                        and self.gameBoard.board[i][j].isFlagged == True):
                    num_flagged_tile = num_flagged_tile + 1
        if (num_safe_revealed_tile == num_safe_tile
                and num_flagged_tile == self.bombCnt):
            return 1
        else:
            return 0

    def setUpBoard(self):
        """Creates the board
        """
        self.gameBoard.make_board(self.width, self.length, self.bombCnt)
        return

    def run(self):
        """Run method
        Initializes the board, places bombs
        """
        self.setUpBoard()
        self.gameBoard.place_bomb()
        self.gameBoard.setAdjBomb()
        return
class executive:
    """
    Execuitve class
    Intermidiet class between player (GUI) and board / tile objects
    """
    def __init__(self, length, width, bombCnt):
        """Constructor
        Initialises inter variables
        """
        self.gameBoard = Board()
        self.length = length
        self.width = width
        self.bombCnt = bombCnt

    def checkWinLose(self):
        """Checks game logic for a win or lose
        0->Unresolved
        1->Win
        2->Lose
        """
        num_safe_tile = self.length * self.width - self.bombCnt
        num_safe_revealed_tile = 0
        num_flagged_tile = 0
        for j in range(self.length):
            for i in range(self.width):
                if (self.gameBoard.board[i][j].isBomb == True
                        and self.gameBoard.board[i][j].isVisible == True):
                    return 2
                elif (self.gameBoard.board[i][j].isVisible == True):
                    num_safe_revealed_tile = num_safe_revealed_tile + 1
                # both mines and tiles need to be revealed so that the user cannot guess which tiles are mines without revealing tiles
                if (self.gameBoard.board[i][j].isBomb == True
                        and self.gameBoard.board[i][j].isFlagged == True):
                    num_flagged_tile = num_flagged_tile + 1
        if (num_safe_revealed_tile == num_safe_tile
                and num_flagged_tile == self.bombCnt):
            return 1
        else:
            return 0

    def setUpBoard(self):
        """Creates the board
        """
        self.gameBoard.make_board(self.width, self.length, self.bombCnt)
        return

    def run(self):
        """Run method
        Initializes the board, places bombs
        """
        self.setUpBoard()
        self.gameBoard.place_bomb()
        self.gameBoard.setAdjBomb()
        self.gameBoard.print_board_true()
        """
        self.gameState=0 #gameState 0->unresolved, 1->Win, 2->Loose
        while self.gameState==0:
            self.gameBoard.print_board_true()
            self.gameBoard.print_board()


            #Main Game Loop
            print("Select a spot to reveal")
            print("x pos:")
            x=int(input())
            print("y pos:")
            y=int(input())

            self.gameBoard.reveal_tile(x,y)
            self.gameState=self.checkWinLose()
            continue
       
        self.gameBoard.print_board()
        if(self.gameState==2):
            print("YOU LOSE")
        elif(self.gameState==1):
            print("YOU WIN")
         """
        return