This coding project is broken down into ~20 tasks and 4 parts, each building upon the previous part. The goal is to implement the Reversi game including different functionalities and bots. The final stage is a Bot Tournament where students' bots will compete each other.
The detailed instructions for the tasks are provided to the students in a Google Doc (in Hebrew).
In this part, the students will set up the initial project structure and implement the basic functionality of the game. Tasks include creating the constructor, implementing the 'print board' function, and writing utility functions.
Part 2 expands the game's functionality to support a two-player game. This includes implementing the logic for placing a disk, updating the board, and writing the main function that allows 2 players to play against each other.
Part 3 focuses on writing bots and enabling a game between a human and a bot. Functionalities to be implemented include listing all possible moves and their benefits, determining a winner, writing a greedy bot, and allowing a human to play against a bot.
In Part 4, students will implement more advanced bot strategies, such as 1-move lookahead. They will also have the opportunity to work on their own bots and try out different strategies.
In the final stage of the project, a bot tournament will be organized. All students will have the opportunity to pit their bots against each other, play Reversi, and compete for the top spot. Runnning the main method in ReversiTournament.java, loads all the bots (classes ending in Bot) and have them compete against each other.
- The instructions provided to the students for each part contains detailed explanations and requirements for each task, allowing them to gradually build their Reversi game and bot.
- We only share ReversiGame, MoveScore, ReversiBot, RenameThisClassMyReversiBot and ReversiMain with the students and there's a need to "clean" ReversiGame and ReversiMain by deleting the code in the methods, leaving only "empty implementations".