# :video_game: Assignment 09
## Requirements
- You will be given one of the problems below to solve
- Use object oriented programming and layered architecture
- All modules with the exception of the UI will have specifications and PyUnit test cases
- The program must protect itself against the user’s invalid input

**NB!** We do not expect you to implement optimal play for the computer player. However, it should still employ a strategy when making its moves in order to attempt to win the game and provide an entertaining opponent for the human player. Minimally, the computer player should move to win the game whenever possible and should block the human player’s attempts at 1-move victory, whenever possible

**deadline is week 14**

## GUI Bonus (0.2P)
- In addition to the console-based user interface required, also implement a graphical user interface (GUI) for the program
- To receive the bonus, both user interfaces (menu-based and graphical) must use the same program layers. You have to be able to start the application with either user interface
## AI Bonus (0.2P)
- Implement computer AI using a [minimax algorithm](https://en.wikipedia.org/wiki/Minimax). Computer play should be competitive against the human player
- In the case where minimax cannot be applied (e.g. Battleship, which is not a [complete information](https://en.wikipedia.org/wiki/Complete_information) game), find a suitable alternative; talk to your lab professor about the bonus possibility in this case
## Best-of-FP Bonus (0.2P)
- This bonus will be awarded to the very best implementations. To receive it, you need to implement both the **GUI** and **AI** bonuses, follow all implementation requirements, and have your work be selected by the laboratory professor
- These implementations will be part of a separate GitHub repository that we aim to make publicly accessible in order to feature some of our students' best work during this semester


## Problem Statements
### Connect Four
The game is described [here](https://en.wikipedia.org/wiki/Connect_Four)

### Gomoku
The game is described [here](https://en.wikipedia.org/wiki/Gomoku)

### Obstruction
The game is described [here](http://www.papg.com/show?2XMX)

### Battleship
The game is described [here](https://en.wikipedia.org/wiki/Battleship_(game))

### Planes
The game is described [here](https://ro.wikipedia.org/wiki/Avioane_(joc))

### Nine men's morris
The game is described [here](https://en.wikipedia.org/wiki/Nine_men%27s_morris)

### Other games!
You are free to implement a different board game, as long as its complexity is similar to those above. Talk to your laboratory professor to validate your idea before starting work!
