From 5463debddf97236bfc898c095cab6b80f324b26d Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Wed, 15 Mar 2023 17:28:02 +1100 Subject: [PATCH] skeleton: Cleaned up code and md --- assn-files/skeleton.md | 176 +++++++++----------- src/comp1110/ass2/skeleton/board.java | 3 +- src/comp1110/ass2/skeleton/island.java | 11 +- src/comp1110/ass2/skeleton/piece.java | 5 +- src/comp1110/ass2/skeleton/player.java | 4 +- src/comp1110/ass2/skeleton/resources.java | 1 + src/comp1110/ass2/skeleton/setup.java | 13 +- src/comp1110/ass2/skeleton/stoneCircle.java | 10 +- src/comp1110/ass2/skeleton/tile.java | 4 +- 9 files changed, 113 insertions(+), 114 deletions(-) diff --git a/assn-files/skeleton.md b/assn-files/skeleton.md index 35ccd49..a182fd9 100644 --- a/assn-files/skeleton.md +++ b/assn-files/skeleton.md @@ -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) \ No newline at end of file +* Score (int, set during game) +* Pieces (List of Pieces, set during game) \ No newline at end of file diff --git a/src/comp1110/ass2/skeleton/board.java b/src/comp1110/ass2/skeleton/board.java index db07ece..ee3a652 100644 --- a/src/comp1110/ass2/skeleton/board.java +++ b/src/comp1110/ass2/skeleton/board.java @@ -4,7 +4,8 @@ public class board { public final island[] islands; public final stoneCircle[] stoneCircles; -public board(island[] islands, stoneCircle[] stoneCircles) { + public board(island[] islands, stoneCircle[] stoneCircles) { + // Needed to stop the compiler complaining about the final fields not being set this.islands = islands; this.stoneCircles = stoneCircles; } diff --git a/src/comp1110/ass2/skeleton/island.java b/src/comp1110/ass2/skeleton/island.java index 7095bf3..0fe03ac 100644 --- a/src/comp1110/ass2/skeleton/island.java +++ b/src/comp1110/ass2/skeleton/island.java @@ -3,13 +3,18 @@ package comp1110.ass2.skeleton; public class island { public final int width; public final int height; + public final int x; + public final int y; public tile[][] tiles; public final int score; - public island(int width, int height, int score) { + public island(int width, int height,int x, int y, int score, tile[][] tiles) { + // Needed to stop the compiler complaining about the final fields not being set this.width = width; this.height = height; this.score = score; - this.tiles = new tile[width][height]; + this.tiles = tiles; + this.x = x; + this.y = y; } -} +} \ No newline at end of file diff --git a/src/comp1110/ass2/skeleton/piece.java b/src/comp1110/ass2/skeleton/piece.java index f8aa0ec..0d177a4 100644 --- a/src/comp1110/ass2/skeleton/piece.java +++ b/src/comp1110/ass2/skeleton/piece.java @@ -4,14 +4,15 @@ public class piece { enum pieceType { Settler, Villager } + public final pieceType type; public final player owner; public tile placedOn; -public piece(pieceType type, player owner) { + public piece(pieceType type, player owner) { + // Needed to stop the compiler complaining about the final fields not being set this.type = type; this.owner = owner; - } } diff --git a/src/comp1110/ass2/skeleton/player.java b/src/comp1110/ass2/skeleton/player.java index 7cf22e4..60bc580 100644 --- a/src/comp1110/ass2/skeleton/player.java +++ b/src/comp1110/ass2/skeleton/player.java @@ -6,9 +6,11 @@ public class player { public int score; public piece[] pieces; -public player(String name, int age) { + public player(String name, int age) { + // Needed to stop the compiler complaining about the final fields not being set this.name = name; this.age = age; this.score = 0; + this.pieces = null; } } diff --git a/src/comp1110/ass2/skeleton/resources.java b/src/comp1110/ass2/skeleton/resources.java index 0610cc2..b25edc5 100644 --- a/src/comp1110/ass2/skeleton/resources.java +++ b/src/comp1110/ass2/skeleton/resources.java @@ -8,6 +8,7 @@ public class resources { public final resourceType type; public resources(resourceType type) { + // Needed to stop the compiler complaining about the final fields not being set this.type = type; } } diff --git a/src/comp1110/ass2/skeleton/setup.java b/src/comp1110/ass2/skeleton/setup.java index ab2c522..19d04a7 100644 --- a/src/comp1110/ass2/skeleton/setup.java +++ b/src/comp1110/ass2/skeleton/setup.java @@ -8,24 +8,31 @@ package comp1110.ass2.skeleton; */ public class setup { + /** + * This method clears the board. + */ + public void clearBoard() { + + } /** * This method creates the board, islands, and stone circles. */ - public void boardSetup(){ + public void boardSetup() { } /** * This method creates a player. */ - public void playerSetup(){ + public void playerSetup() { } /** * This method holds the startup code for the game. - * It will create 2-4 players, set up the board and assign the players their pieces. + * It will create 2-4 players, set up the board and assign the players their + * pieces. */ public static void main(String[] args) { } diff --git a/src/comp1110/ass2/skeleton/stoneCircle.java b/src/comp1110/ass2/skeleton/stoneCircle.java index 45e389f..795b9c4 100644 --- a/src/comp1110/ass2/skeleton/stoneCircle.java +++ b/src/comp1110/ass2/skeleton/stoneCircle.java @@ -4,17 +4,15 @@ public class stoneCircle { public final int x; public final int y; public boolean claimed; - public player owner; - public final resources[] resources; - public final statuettes[] statuettes; + public final int statuettes; - public stoneCircle(int x, int y, resources[] resources, statuettes[] statuettes) { + public stoneCircle(int x, int y, resources[] resources, int numStatuettes) { + // Needed to stop the compiler complaining about the final fields not being set this.x = x; this.y = y; this.claimed = false; - this.owner = null; this.resources = resources; - this.statuettes = statuettes; + this.statuettes = numStatuettes; } } diff --git a/src/comp1110/ass2/skeleton/tile.java b/src/comp1110/ass2/skeleton/tile.java index 50aefe6..a94d38d 100644 --- a/src/comp1110/ass2/skeleton/tile.java +++ b/src/comp1110/ass2/skeleton/tile.java @@ -4,12 +4,12 @@ public class tile { enum tileType { Land, Water } - public final tileType type; public int x; public int y; + public final tileType type; public piece[] pieces; - public tile(tileType type, int x, int y) { + public tile(int x, int y, tileType type) { this.type = type; this.x = x; this.y = y;