Animal Chess - Playable board game with an AI opponent

Project information

Introduction

This is a player vs computer board game called Animal Checkers, which is a modified version of a Chinese game called Jungle. The computer automatically operates it's turn using a backtracking decision-making algorithm called minimax . The AI is set up so that it is impossible for the computer to lose. This can be modified by changing the depth count for the minimax function.

Minimax algorithm explanation (alpha/beta pruning)

Minimax is a recursion algorithm that searches for the move that will return the highest static evaluation of the board. A depth is set which indicates how deep the search will go (how many moves it will look ahead). The further the depth of the search, the "smarter" the play is, as well as the more time it takes to compute. The depth is 8 moves by default but that can be changed in the driver.cpp file.

The search works by first gathering a collection of possible moves to make. Then, it explores each of the moves, by then making a collection of moves the player could make in response. This continues to happen until the depth is met, in which it then returns the static evaluation of that move.

My program uses a modified version of the minimax algorithm called the alpha-beta pruning method, which helps cut down computation time by abandoning search paths that are not worth exploring.

Game Objective / Rules

The objective of the game is to capture the oponnent's den piece using one of the four animal pieces (elephant, tiger, wolf, mouse). To start, you will be asked which player will go first (player or computer). Each turn, you can move one piece in an adjacent tile. You can capture opponent pieces by moving your piece on top of theirs, but each piece is limited to what it can capture.

Capture Logic:

  • -Elephant can capture: elephant, tiger, wolf
  • -Tiger can capture: tiger, wolf, mouse
  • -Wolf can capture: wolf, mouse
  • -Mouse can capture: mouse, elephant

The game is finished once a player has sucessfully captured the oponent's den, or a player has successfully captured all of the oponent's pieces.

Player's Turn

On your turn, you are presented with the board state and are asked which piece to move. To do this, enter in the row, column, and direction respectively. For the row/column, enter in an integer cooresponding to the row/column legend. For the direction, enter in 'u' , 'd' , 'l' , or 'r' for up, down, left, and right, respectively.

Computer's Turn

On the computer's turn, moves are done automatically. You can scroll up in the terminal to view the computer's decision.

Image of the Board

Player Turn Demo