Implement an agent to play a simple 2-player zero-sum game called 'Breakthrough'.
Rules of the game
The 8x8 board is initially set up as shown below. Each player has 16 workers in their team.
Players play alternating turns, and can only move one piece (of their own workers) at a time.
In each turn, a worker can only move one square in the forward or diagonally-forward directions, as shown below. Moreover, a worker can 'capture' workers of the enemy team if they are placed diagonally forward from it, as shown in the illustration below. Note that if enemy workers are directly in front of the player, then a capture isn't possible.
The game finishes when (a) a worker reaches the enemy team's home base (the last row); or (b) when all workers of the enemy team are captured.
For more information, check out Breakthrough's Wikipedia page.
Java project which implement agents to play the 'Breakthrough' game, one using minimax search and one using alpha-beta search as well as two heuristic functions - one which is more offensive (i.e., more focused on moving forward and capturing enemy pieces), while the other which is more defensive (i.e., more focused on preventing the enemy from moving into your territory or capturing your pieces). Should use depth-limited search with an evaluation function.