Write a class named FBoard for playing a game, where player x istrying to get her piece to row 7 and player o is trying to make itso player x doesn’t have any legal moves.
It should have the following private data members: An 8×8 listof lists for tracking what’s on each square of the board. A datamember for tracking the game state, that holds one of the followingstring values: “X_WON”, “O_WON”, or “UNFINISHED”. Data members tokeep track of where the x piece is. The data members should all beprivate. An init method (constructor) that initializes the list oflists to represent an empty 8×8 board (you can use whatevercharacter you want to represent empty). It should then put four opieces on row 7, in columns 0, 2, 4, and 6. It should put an xpiece on row 0, column 3. It should also initialize the other datamembers.
A method called get_game_state, that returns the current valueof game_state. A method called move_x that takes as parameters therow and column of the square to move to. If the desired move is notallowed, or if the game has already been won, it should just returnfalse. Otherwise it should make the move and return true. A piecebelonging to x can move 1 square diagonally in any direction. Apiece is not allowed to move off the board or to an occupiedsquare. If x’s move gets her piece to row 7, game_state should beset to “X_WON”. A method called move_o that takes as parameters therow and column to move from, and the row and column to move to. Ifthe first pair of coordinates doesn’t hold o’s piece, or if thedesired move is not allowed, or if the game has already been won,it should just return false. Othewise it should make the move andreturn true. A piece belonging to o can move 1 square diagonally,but the row cannot increase, so any o piece has at most twoavailable moves. For example, if player o has a piece at (5, 2), itcould move to (4, 1) or (4, 3), but not (6, 1) or (6, 3). It is notallowed to move off the board or to an occupied square. If o’s moveleaves no legal move for x, game_state should be set to “O_WON”.You do not need to track whose turn it is.
Either move method can be called multiple times in a row. Itdoesn’t matter which index of the list of lists you consider therow and which you consider the column as long as you’re consistent.Feel free to add helper functions if you want. You may also find ituseful to add a print function to help with debugging. Here’s avery simple example of how the class could be used:
fb = FBoard(); fb.move_x(1,4); fb.move_x(2,5);fb.move_o(7,0,6,1); print(fb.get_game_state());
The file must be named: FBoard.py
Answer to Write a class named FBoard for playing a game, where player x is trying to get her piece to row 7 and player o is trying…