skeleton: Cleaned up code and md

This commit is contained in:
2023-03-15 17:28:02 +11:00
parent dc6e1258b2
commit 5463debddf
9 changed files with 113 additions and 114 deletions

View File

@@ -1,128 +1,112 @@
# Simple draft skeleton:
# Overview
## Board Setup
# Game play flow
1. Game Setup
2. Phase Setup
3. While phase isn't over do phase
4. Score
5. Phase Setup
6. While phase isn't over do phase
7. Score
8. Game End
## Game Setup
* Create player data (maybe using enums)
## Phase Setup
* Clear board
* Create a grid of tiles
* Create islands and assign size and location (on tiles)
* Create "stone circles"
## On Game start functions
* Create player data (maybe using enums)
* Create stone circles
* Assign villages to players
* Assign settlers to players
* Randomly Assign resources and statuettes to map "stone circles"
## Exploration Phase
1. Pick player
2. Player places piece (use function to check placement rules)
3. Repeat with next player (while not Exploration Phase over)
## Check Placement
If piece is settler, check if one of:
* on unoccupied water
* on unoccupied land adjacent to one of their pieces
If piece is village, check on unoccupied land adjacent to one of their pieces
* Randomly Assign resources and statuettes to stone circles
## Phase
* Advance to next player
* Player places piece (use function piece plaging)
## Piece Placing
* Check placement (using function)
* Assign piece to tile
* If piece on "stone circle" > get resources and statuettes
## Exploration Phase over
If one of:
* If piece on stone circle, get resources and statuettes
## Valid Placement (bool)
* If piece is settler, if either of:
* on unoccupied water
* on unoccupied land adjacent to one of their pieces
* If piece is village, if both:
* on unoccupied land
* is adjacent to one of their pieces
## Phase over (bool)
If either of:
* All resources (not including statuettes) have been collected
* No player has any remaining moves available
# Settlement Phase
## Setup
1. Remove pieces from board
2. Assign resources and statuettes to stone circles
3. Player after last player from exploration phase goes first
## Play
1. Pick player (from setup.3)
2. Player places piece (use settlement check function to check placement rules)
3. Repeat with next player (while not Exploration Phase over)
## End
Use same conditions as exploration phase over
Score
# Scoring
## Island Scoring
* If player has pieces on > 7 islands, score 20 points
* If player has pieces on 7 islands, score 10 points
* Otherwise, score 0 points
## Links Scoring
1. For each player get largest link
2. Score 5 points per island in largest link
## Majorities Scoring
* Player with most pieces on each island type scores points assigned to that island
* Ties are distributed evenly rounding down
## Resources Scoring
* For each player
* For each resource
* If >3 of resource, score 20 points
* If 3 of resource, score 10 points
* If 2 of resource, score 5 points
* If player has all 4 resources, score 10 points
## Scoring
* Island Scoring
* If player has pieces on > 7 islands, score 20 points
* If player has pieces on 7 islands, score 10 points
* Otherwise, score 0 points
* Links Scoring
* Score 5 points per island in players largest link
* Majorities Scoring
* Player with most pieces on each island type scores points assigned to that island
* Ties are distributed evenly rounding down
* Resources Scoring
* For each player
* For each resource
* If >3 of resource, score 20 points
* If 3 of resource, score 10 points
* If 2 of resource, score 5 points
* If player has all 4 resources, score 10 points
## Statuettes Scoring
* Each statuette is worth 4 points
# Classes/Fuctions
## Setup board
## Create player (requires input data, probably from player number and colour)
## Phase play
## Check Placement (requires input data, probably piece annd returns bool)
## Place Piece (requires input data, probably from player and piece type)
## Phase over (bool)
# Functions
* Setup Functions
* Clear Board
* Board Setup
* Player Setup
* Game Functions
* Player Turn
* Place Piece
* Claim Stone Circle
* Valid placement (bool)
* Phase Over (bool)
* Scoring Functions
* Island Scoring
* Links Scoring
* Majorities Scoring
* Resources Scoring
* Statuettes Scoring
# Objects
## Piece
* Owner (Player)
* Type (Settler, Village)
* Placed on (Tile)
## Tile
* Location (x,y)
* Type (Land, Water)
* Pieces (List of Pieces)
## Board
* Islands (List of Islands)
* Stone Circles (List of Stone Circles)
## Island
* Size (x,y)
* Location (x,y)
* Point value (int)
* Tiles (List of Tiles)
* Tiles (List of Tiles in an grid)
## Tile
* Location (x,y)
* Type (Land, Water)
* Pieces (List of Pieces, set during game)
## Piece
* Type (Settler, Village)
* Owner (Player)
* Placed on (Tile)
## Stone Circle
* Location (x,y)
* Resources (List of Resources)
* Statuettes (List of Statuettes)
* Claimed (bool)
* Number of Statuettes (int)
* Claimed (bool, set during game)
## Player
* Name (string)
* Age (int)
* Score (int)
## Board
* Islands (List of Islands)
* Stone Circles (List of Stone Circles)
* Score (int, set during game)
* Pieces (List of Pieces, set during game)