Logo Lanfrica

Noah-Vincenz/ProjectCrawl

Record type:

software
Creator:
Noa
Host:
Oware board game: Oware is an Ashanti abstract strategy game among the Mancala family of board games played worldwide with slight variations as to the layout of the game, number of players and strategy of play [Wiki]. # Oware A JavaFX implementation of the **Oware** board game — a strategy game from the Mancala family, originating from the Ashanti people of West Africa. ## Features - **Two game modes**: Single-player (vs CPU) and two-player (local) - **Three AI difficulties**: Easy (random), Medium (greedy), Hard (minimax with alpha-beta pruning) - **Full Oware rules**: Sowing, capturing, chain captures, grand slam prevention, feeding rule - **Keyboard shortcuts**: 1-6 for house selection, N for new game, Esc for menu - **Move animations** and turn indicator ## Prerequisites - Java 17+ - Maven 3.8+ ## Build & Run ```bash # clone the repository git clone github.com cd ProjectCrawl # compile mvn clean compile # run the game mvn javafx:run # run tests mvn test ``` ## Architecture ``` src/main/java/com/noahvincenz/oware/ ├── OwareApplication.java # JavaFX entry point ├── model/ │ ├── Board.java # game board with sow-and-capture logic │ ├── House.java # individual pit on the board │ ├── Player.java # player identity and score │ ├── GameState.java # centralized game state and turn management │ ├── MoveResult.java # result of a sow-and-capture move │ └── OwareConstants.java # named constants (board size, seeds, etc.) ├── controller/ │ └── GameController.java # game logic controller (UI-independent) ├── view/ │ ├── MainMenuView.java # main menu with difficulty selection │ └── GameBoardView.java # game board UI └── ai/ ├── MoveStrategy.java # strategy interface ├── RandomStrategy.java # easy: random valid move ├── GreedyStrategy.java # medium: highest-capture move └── MinimaxStrategy.java # hard: minimax with alpha-beta (depth 8) ``` **Design patterns**: MVC, Strategy (AI), composition over inheritance (View takes Stage) ## Game Rules Oware is played on a board with 12 houses …

Languages

Licenses