diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 79ee123..0000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/README.md b/README.md index cb41fb6..af49663 100644 --- a/README.md +++ b/README.md @@ -6,17 +6,18 @@ strategic game where you have to choose wisely where to build your structures, to be able to dominate your friends. #Rules -1. The min. Player amount is 2 and the max. Player amount is 4. -2. Each Player can build two roads and two settlements free of cost at the beginning of +1. The minimum Player amount is 2 and the maximum Player amount is 4. +2. The minimum amount if win points is 3. +3. Each Player can build two roads and two settlements free of cost at the beginning of the game. After the placement, each player gets resources from the field around the second settlement. -3. Every Player is being sorted into a faction. There cannot be two players in the +4. Every Player is being sorted into a faction. There cannot be two players in the same faction. -4. A player cannot build two settlements or cities right next one another. +5. A player cannot build two settlements or cities right next one another. There have to be at least two roads between them. -5. The cost for each structure is set and is nonnegotiable. -6. The player with the longest road (most roads connecting to one another) +6. The cost for each structure is set and is nonnegotiable. +7. The player with the longest road (most roads connecting to one another), which is longer then 4 will be awarded two additional points. -7. If a player rolls a 7 on a dice throw, then the resources of every player that has +8. If a player rolls a 7 on a dice throw, then the resources of every player that has more than 7 resources will be halved. The resources that are being taken are chosen at random. @@ -35,6 +36,8 @@ number that the player rolled with the dice. Now as for the commands a player has to put in while it's their turn: #Build Settlement +``build settlement`` Builds a settlement + When it's the players turn, they can build a new settlement by giving the command build settlement. With that they will be asked where they want to build said settlement and to enter the coordinates, then the program will check if those coordinates are available or not. Then the @@ -43,6 +46,8 @@ insufficient resources the settlement will not be built and an error message wil appear. The turn of the current player will continue until the player ends it. #Build City +``build city`` Builds a city + During the players turn they can build a city on the same coordinates that they have already built a settlement on. To do that they have to enter the command build city. Then they have to add the coordinates that they want the city to be @@ -53,6 +58,8 @@ the program will subtract them of the players resources, otherwise the city won' be build and the player continues their turn until they end it. #Build Road +``build road`` Builds a road + During the current players turn, the player can build a new road by giving the command build road. Then the player will be asked to give the coordinates for where they want to build the new road after entering the coordinates the program will @@ -64,6 +71,8 @@ have enough resources the road will not be built and the player will receive an error message. The player continues their turn until they end it. #Trade with Bank +``trade with bank`` Let's the player trade resources with the bank + The current player can trade resources with the bank by entering the command trade with bank. The player then can enter what and how many resources they want then they have to enter what resources they will give in return. The trade course @@ -72,14 +81,22 @@ trade for one of their choosing from the bank. If they do not have enough resour to give the trade will not be completed and the player may continue their turn. #Next Player +``next player`` Ends a players turn + When the current player has done all the building and trading they wanted and now want to end their turn they can end it by entering the command next player. By entering this command the player relinquishes their turn and the next player may start their turn. #Quit +``quit`` Let's a player quit the game + If a player wants to quit the game they can enter the command quit while it's their turn to quit the game. +#Coordinates + + #Class Diagram +![alt text](doc/Klassendiagramm%20Siedler.png) \ No newline at end of file diff --git a/doc/Klassendiagramm Siedler.png b/doc/Klassendiagramm Siedler.png new file mode 100644 index 0000000..daf48a5 Binary files /dev/null and b/doc/Klassendiagramm Siedler.png differ diff --git a/src/ch/zhaw/catan/Bank.java b/src/ch/zhaw/catan/Bank.java index 52bb9eb..7adecac 100644 --- a/src/ch/zhaw/catan/Bank.java +++ b/src/ch/zhaw/catan/Bank.java @@ -2,39 +2,19 @@ package ch.zhaw.catan; import java.util.HashMap; -/** - * Bank Class that stores Resources when not being owned by a player, - * and the needed functions to take and give resources to it. - * - * @author Leonardo Brandenberger - */ + public class Bank { private final HashMap resources = new HashMap<>(); - /** - * Construct a Bank Object and stores Config Values in own HashMap. - */ public Bank() { resources.putAll(Config.INITIAL_RESOURCE_CARDS_BANK); + } - /** - * Stores a desired resource in desired quantity in the bank. - * - * @param resource the resource type that gets added to the bank - * @param numberOfResources the quantity of resources of the chosen type get added - */ public void storeResourceToBank(Config.Resource resource, int numberOfResources) { resources.put(resource, resources.get(resource) + numberOfResources); } - /** - * Checks if a Resource is available in the quantity desired. and then deducts it from the bank inventory. - * - * @param resource the resource type that has to be deducted - * @param numberOfResources the quantity of the resource that gets deducted from the inventory - * @return true if resources available and deducted false if not enough resources are in the bank - */ public boolean getResourceFromBank(Config.Resource resource, int numberOfResources) { if (resources.get(resource) >= numberOfResources) { Integer newResourceNumber = resources.get(resource) - numberOfResources; diff --git a/src/ch/zhaw/catan/Settlement.java b/src/ch/zhaw/catan/Settlement.java index 4fc1da4..6897cb6 100644 --- a/src/ch/zhaw/catan/Settlement.java +++ b/src/ch/zhaw/catan/Settlement.java @@ -1,6 +1,6 @@ package ch.zhaw.catan; -import java.awt.Point; +import java.awt.*; /** * Sub Class of Structure and Super Class of City diff --git a/src/ch/zhaw/catan/SiedlerBoard.java b/src/ch/zhaw/catan/SiedlerBoard.java index adf84fb..0619c57 100644 --- a/src/ch/zhaw/catan/SiedlerBoard.java +++ b/src/ch/zhaw/catan/SiedlerBoard.java @@ -2,7 +2,6 @@ package ch.zhaw.catan; import ch.zhaw.hexboard.HexBoard; import ch.zhaw.hexboard.Label; - import java.awt.Point; import java.util.ArrayList; import java.util.Collections; diff --git a/src/ch/zhaw/catan/SiedlerBoardTextView.java b/src/ch/zhaw/catan/SiedlerBoardTextView.java index 157e4f9..bece675 100644 --- a/src/ch/zhaw/catan/SiedlerBoardTextView.java +++ b/src/ch/zhaw/catan/SiedlerBoardTextView.java @@ -3,7 +3,10 @@ package ch.zhaw.catan; import ch.zhaw.catan.Config.Land; import ch.zhaw.hexboard.HexBoardTextView; -//TODO Java Docs +/** + * This Class extends the Class HexBoardTextView + * + */ public class SiedlerBoardTextView extends HexBoardTextView { public SiedlerBoardTextView(SiedlerBoard board) { diff --git a/src/ch/zhaw/catan/SiedlerGame.java b/src/ch/zhaw/catan/SiedlerGame.java index 7e14467..b32b241 100644 --- a/src/ch/zhaw/catan/SiedlerGame.java +++ b/src/ch/zhaw/catan/SiedlerGame.java @@ -1,19 +1,17 @@ package ch.zhaw.catan; import java.awt.Point; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; import java.util.Map; +import java.util.HashMap; +import java.util.ArrayList; +import java.util.List; import java.util.Random; /** * This class performs all actions related to modifying the game state. - *

- * TODO: (your documentation) * - * @author TODO + * @author Andrin Fassbind, Leonardo Brandenberger, Roman Schenk, Stefan Amador */ public class SiedlerGame { static final int FOUR_TO_ONE_TRADE_OFFER = 4; @@ -74,7 +72,14 @@ public class SiedlerGame { } } - //TODO JavaDoc + /** + * This methode is used to add resources to the player. + * + * @param player the active Player + * @param resource the resource to add + * @param numberToAdd the quantity of resources to add + * @return true if resource has been added else false + */ private boolean addResourcesToPlayer(Player player, Config.Resource resource, int numberToAdd) { if (bank.getResourceFromBank(resource, numberToAdd)) { player.addResource(resource, numberToAdd); @@ -83,7 +88,14 @@ public class SiedlerGame { return false; } - //TODO JavaDoc + /** + * This methode is used to subtract resources from Player + * + * @param player the active player + * @param resource the resource to subtract + * @param numberToSubtract the quantity of resource to subtract + * @return true if resource has been subtracted + */ private boolean subtractResourceFromPlayer(Player player, Config.Resource resource, int numberToSubtract) { if (player.subtractResource(resource, numberToSubtract)) { bank.storeResourceToBank(resource, numberToSubtract); @@ -234,7 +246,11 @@ public class SiedlerGame { return null; } - //TODO JavaDoc + /** + * This method handles the case if a 7 has been diced. + * + * @param player the active player who rolls the dice. + */ public void handleDiceThrow7(Player player) { ArrayList resourceArrayList = new ArrayList<>(); HashMap resources = player.getResources(); @@ -376,7 +392,7 @@ public class SiedlerGame { if (!board.hasEdge(roadStart, roadEnd)) { return false; } - //2. Check if edge is empty //TODO Check if always inverted is allowed + //2. Check if edge is empty if (board.getEdge(roadStart, roadEnd) != null) { return false; } @@ -482,7 +498,11 @@ public class SiedlerGame { return null; } - //Todo Java Doc + /** + * This methode counts the winpoints of the current player. + * + * @return the winpoints as an integer + */ public int getCurrentPlayerWinPoints() { int winPoints = 0; List settlements = board.getCorners();