{"id":27211544,"url":"https://github.com/sverrenystad/board-master","last_synced_at":"2025-04-10T01:29:43.430Z","repository":{"id":213191484,"uuid":"725780582","full_name":"SverreNystad/board-master","owner":"SverreNystad","description":"BoardMaster utilizes the power of the Minimax algorithm, to simulate the best AI opponents one can face in simple board games.","archived":false,"fork":false,"pushed_at":"2024-09-26T19:43:34.000Z","size":4157,"stargazers_count":3,"open_issues_count":17,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T08:47:11.865Z","etag":null,"topics":["ai","gofai","gradle","minimax-algorithm","react","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SverreNystad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-11-30T21:27:22.000Z","updated_at":"2024-11-02T21:25:45.000Z","dependencies_parsed_at":"2023-12-20T16:50:52.432Z","dependency_job_id":null,"html_url":"https://github.com/SverreNystad/board-master","commit_stats":null,"previous_names":["sverrenystad/board-master"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SverreNystad%2Fboard-master","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SverreNystad%2Fboard-master/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SverreNystad%2Fboard-master/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SverreNystad%2Fboard-master/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SverreNystad","download_url":"https://codeload.github.com/SverreNystad/board-master/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248140116,"owners_count":21054237,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","gofai","gradle","minimax-algorithm","react","spring-boot"],"created_at":"2025-04-10T01:29:42.726Z","updated_at":"2025-04-10T01:29:43.398Z","avatar_url":"https://github.com/SverreNystad.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# board-master\n\u003cdiv align=\"center\"\u003e\n\n![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/SverreNystad/board-master/gradle.yml)\n![GitHub top language](https://img.shields.io/github/languages/top/SverreNystad/board-master)\n![GitHub language count](https://img.shields.io/github/languages/count/SverreNystad/board-master)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Project Version](https://img.shields.io/badge/version-0.0.1-blue)](https://img.shields.io/badge/version-0.0.1-blue)\n\n\u003cimg src=\"docs/images/BoardMaster.png\" width=\"50%\" alt=\"BoardMaster\" style=\"display: block; margin-left: auto; margin-right: auto;\"\u003e\n\u003c/div\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\u003cb\u003e📋 Table of contents \u003c/b\u003e\u003c/summary\u003e\n\n- [board-master](#board-master)\n  - [Introduction](#introduction)\n    - [What is BoardMaster?](#what-is-boardmaster)\n      - [Main-menu:](#main-menu)\n      - [TicTacToe-menu:](#tictactoe-menu)\n      - [TicTacToe game:](#tictactoe-game)\n    - [Minimax Algorithm](#minimax-algorithm)\n  - [Setup](#setup)\n    - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n    - [1. Clone the repository](#1-clone-the-repository)\n    - [2. Navigate to the Project Directory:](#2-navigate-to-the-project-directory)\n  - [Usage](#usage)\n  - [Documentation 📖](#documentation-)\n  - [Contributors](#contributors)\n  - [License](#license)\n\n\u003c/details\u003e\n\n## Introduction\n\n### What is BoardMaster?\nBoardMaster 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.\n\n#### Main-menu:\n\u003cdiv align=\"center\"\u003e \n  \u003cimg src=\"docs/images/BoardMaster_mainMenu.png\" width=\"50%\" alt=\"BoardMaster\" style=\"display: block; margin-left: auto; margin-right: auto;\"\u003e\n\u003c/div\u003e\n\n#### TicTacToe-menu:\n\n\u003cdiv style=\"display: flex;\" align=\"center\"\u003e\n  \u003cimg src=\"docs/images/BoardMaster_TicTacToe_BotType.png\" alt=\"BoardMaster\" style=\"width: 45%; margin-right: 5px; height: auto; \"\u003e\n  \u003cimg src=\"docs/images/BoardMaster_TicTacToe_Menu.png\" alt=\"BoardMaster\" style=\"width: 45%; height: auto; \"\u003e\n\u003c/div\u003e\n\n#### TicTacToe game:\n\u003cdiv style=\"display: flex;\" align=\"center\"\u003e\n  \u003cimg src=\"docs/images/BoardMaster_TicTacToe_PlayerStart.png\" alt=\"BoardMaster\" style=\"width: 45%; margin-right: 5px; height: auto; \"\u003e\n  \u003cimg src=\"docs/images/BoardMaster_TicTacToe_BotStart.png\" alt=\"BoardMaster\" style=\"width: 45%; height: auto;\"\u003e\n\u003c/div\u003e\n\n### Minimax Algorithm\nThe 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.\n\n\n## Setup\nTo 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.\n\n### Prerequisites\nBefore setting up BoardMaster, ensure that your system meets the following requirements:\n\n* Ensure that git is installed on your machine. [Download Git](https://git-scm.com/downloads)\n* Ensure that Docker is installed on your machine. [Download Docker](https://www.docker.com/products/docker-desktop)\n\n\n## Installation\nFollow these steps to set up BoardMaster on your local machine:\n\n### 1. Clone the repository\n```cmd\ngit clone https://github.com/SverreNystad/board-master.git\n```\n\n### 2. Navigate to the Project Directory:\nAfter cloning, move into the BoardMaster project directory:\n```cmd\ncd board-master\n```\n\n## Usage\nTo start the application locally, follow the steps below:\n```bash\ndocker compose up --build\n```\n\nAfter starting the application, the frontend should be available at [http://localhost:3000/](http://localhost:3000/) and should pop up in your default browser.\nThe backend should be available at [http://localhost:8080/](http://localhost:8080/). The backend has OpenAPI documentation available at [http://localhost:8080/swagger-ui.html](http://localhost:8080/swagger-ui.html) generated straight from the source code.\n\nFor the full development setup, see the [Developer Setup](docs/manuals/developer_setup.md) guide.\n\n## Documentation 📖\n- [Developer Setup](docs/manuals/developer_setup.md) 🛠️\n- [Testing](docs/manuals/testing.md) 🧪\n- [Docker Guide](docs/docker.md) 🐳\n- [Understanding the Minimax Algorithm](docs/minimax.md) 🧠\n- [Architecture](docs/architecture.md)  🏗️\n\n\n## Contributors\n\u003ctable align=\"center\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/JonBergland\"\u003e\n            \u003cimg src=\"https://github.com/JonBergland.png?size=100\" width=\"100px;\" alt=\"Jon Bergland\"/\u003e\u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eJon Bergland\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/SverreNystad\"\u003e\n            \u003cimg src=\"https://github.com/SverreNystad.png?size=100\" width=\"100px;\"/\u003e\u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eSverre Nystad\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## License\nLicensed under the [MIT License](LICENSE).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsverrenystad%2Fboard-master","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsverrenystad%2Fboard-master","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsverrenystad%2Fboard-master/lists"}