SverreNystad / board-master

BoardMaster utilizes the power of the Minimax algorithm, to simulate the best AI opponents one can face in simple board games.
MIT License
3 stars 0 forks source link
ai gofai gradle minimax-algorithm react spring-boot

board-master

![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/SverreNystad/board-master/gradle.yml) ![GitHub top language](https://img.shields.io/github/languages/top/SverreNystad/board-master) ![GitHub language count](https://img.shields.io/github/languages/count/SverreNystad/board-master) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Project Version](https://img.shields.io/badge/version-0.0.1-blue)](https://img.shields.io/badge/version-0.0.1-blue) BoardMaster
๐Ÿ“‹ Table of contents - [board-master](#board-master) - [Introduction](#introduction) - [What is BoardMaster?](#what-is-boardmaster) - [Main-menu:](#main-menu) - [TicTacToe-menu:](#tictactoe-menu) - [TicTacToe game:](#tictactoe-game) - [Minimax Algorithm](#minimax-algorithm) - [Setup](#setup) - [Prerequisites](#prerequisites) - [Installation](#installation) - [1. Clone the repository](#1-clone-the-repository) - [2. Navigate to the Project Directory:](#2-navigate-to-the-project-directory) - [Usage](#usage) - [Documentation ๐Ÿ“–](#documentation-) - [Contributors](#contributors) - [License](#license)

Introduction

What is BoardMaster?

BoardMaster is a full-stack application designed for players to enjoy various board games against a range of bots, such as RandomMoveAgent, MiniMaxAgent, and others. It offers an immersive gaming experience, combining classic board game fun with modern AI technology.

Main-menu:

BoardMaster

TicTacToe-menu:

BoardMaster BoardMaster

TicTacToe game:

BoardMaster BoardMaster

Minimax Algorithm

The games this algorithm works great for are what game theorists call deterministic , two-player turn-taking, perfect information, zero-sum games. These games are "fully observable", meaning that you can see everything that is going on in the game. They are also "deterministic", meaning that there is no element of chance involved in the game. There is no dice rolling or card drawing. The game is "zero-sum", meaning that one player's gain is the other player's loss. In other words, if you add up all the gains and losses for each player, they will sum to zero. Finally, the game is "turn-taking", meaning that the players alternate making moves, and "perfect information", meaning that no information is hidden from either player. Chess, checkers, tic-tac-toe, Go, and Othello are all examples of deterministic, two-player, turn-taking, perfect information, zero-sum games. However games that has too many possible moves, such as chess, will take too long to compute and will not be feasible to use this algorithm on.

Setup

To setup the project, one needs to have all the prerequisites installed. Clone the repository, install the dependencies and build the project. This is described in more detail below.

Prerequisites

Before setting up BoardMaster, ensure that your system meets the following requirements:

Installation

Follow these steps to set up BoardMaster on your local machine:

1. Clone the repository

git clone https://github.com/SverreNystad/board-master.git

2. Navigate to the Project Directory:

After cloning, move into the BoardMaster project directory:

cd board-master

Usage

To start the application locally, follow the steps below:

docker compose up --build

After starting the application, the frontend should be available at http://localhost:3000/ and should pop up in your default browser. The backend should be available at http://localhost:8080/. The backend has OpenAPI documentation available at http://localhost:8080/swagger-ui.html generated straight from the source code.

For the full development setup, see the Developer Setup guide.

Documentation ๐Ÿ“–

Contributors

Jon Bergland
Jon Bergland

Sverre Nystad

License

Licensed under the MIT License.