skeleton: Cleaned up code and md
This commit is contained in:
parent
dc6e1258b2
commit
5463debddf
@ -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
|
||||
## 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
|
||||
* 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
|
||||
* 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)
|
||||
|
||||
## Island
|
||||
* Size (x,y)
|
||||
* Location (x,y)
|
||||
* Point value (int)
|
||||
* Tiles (List of Tiles)
|
||||
|
||||
## Stone Circle
|
||||
* Location (x,y)
|
||||
* Resources (List of Resources)
|
||||
* Statuettes (List of Statuettes)
|
||||
* Claimed (bool)
|
||||
|
||||
## Player
|
||||
* Name (string)
|
||||
* Age (int)
|
||||
* Score (int)
|
||||
|
||||
## 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 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)
|
||||
* Number of Statuettes (int)
|
||||
* Claimed (bool, set during game)
|
||||
|
||||
## Player
|
||||
* Name (string)
|
||||
* Age (int)
|
||||
* Score (int, set during game)
|
||||
* Pieces (List of Pieces, set during game)
|
@ -5,6 +5,7 @@ public class board {
|
||||
public final 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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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) {
|
||||
// Needed to stop the compiler complaining about the final fields not being set
|
||||
this.type = type;
|
||||
this.owner = owner;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -7,8 +7,10 @@ public class player {
|
||||
public piece[] pieces;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,12 @@ package comp1110.ass2.skeleton;
|
||||
*/
|
||||
public class setup {
|
||||
|
||||
/**
|
||||
* This method clears the board.
|
||||
*/
|
||||
public void clearBoard() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This method creates the board, islands, and stone circles.
|
||||
@ -25,7 +31,8 @@ public class setup {
|
||||
|
||||
/**
|
||||
* 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) {
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user