- 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 will be implemented as a human player vs. computer player game
- 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
- 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
- Implement computer AI using a minimax algorithm. 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 game), find a suitable alternative; talk to your lab professor about the bonus possibility in this case
- 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
The game is described here
The game is described here
The game is described here
The game is described here
The game is described here
The game is described here
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!