first draft of foundigPhase Method

This commit is contained in:
schrom01 2021-12-02 17:13:43 +01:00
parent c4a3346fad
commit 9916d38073
3 changed files with 88 additions and 12 deletions

View File

@ -1,6 +1,6 @@
package ch.zhaw.catan; package ch.zhaw.catan;
public class City extends Structure { public class City extends Settlement {
public City(Config.Faction faction) { public City(Config.Faction faction) {
super(faction); super(faction);

View File

@ -4,22 +4,79 @@ import org.beryx.textio.TextIO;
import org.beryx.textio.TextIoFactory; import org.beryx.textio.TextIoFactory;
import org.beryx.textio.TextTerminal; import org.beryx.textio.TextTerminal;
import java.util.HashMap;
public class Siedler { public class Siedler {
public static void main(String[] args) { public static void main(String[] args) {
//Spiel erstellen //Spiel erstellen
SiedlerGame game = new SiedlerGame(3, 2);
//Spielfeld ausgeben
TextIO textIO = TextIoFactory.getTextIO();
TextTerminal<?> textTerminal = textIO.getTextTerminal();
textTerminal.println(game.getBoard().getTextView());
Parser parser = new Parser(); Parser parser = new Parser();
SiedlerGame game = foundingPhase(parser);
parser.getAction(); parser.getAction();
//Spielfeld ausgeben
} }
private static SiedlerGame foundingPhase(Parser parser) {
HashMap<String, Integer> gameInfo = parser.gameStart();
SiedlerGame game = new SiedlerGame(gameInfo.get("NumberOfWinPoints"), gameInfo.get("NumberOfPlayers"));
for(int player = 1; player <= gameInfo.get("NumberOfPlayers"); player++){
buildStructuresInFoundingPhase(game, parser, false);
if(player < gameInfo.get("NumberOfPlayers")){
game.switchToPreviousPlayer();
}
}
for(int player = 1; player <= gameInfo.get("NumberOfPlayers"); player++){
buildStructuresInFoundingPhase(game, parser, true);
game.switchToNextPlayer();
}
return game;
}
private static void buildStructuresInFoundingPhase(SiedlerGame game, Parser parser, Boolean payout){
parser.displayGameboard(game.getBoard().getTextView());
parser.playerTurn(game.getCurrentPlayerFaction());
//build Settlement
parser.giveCoordinatesForStructures(Config.Structure.SETTLEMENT);
boolean sucessful = false;
do{
if(game.placeInitialSettlement(parser.getPoint(), payout)) {
sucessful = true;
}
else{
parser.errorMessage();
}
} while(!sucessful);
//build Road
parser.displayGameboard(game.getBoard().getTextView());
parser.giveCoordinatesForStructures(Config.Structure.ROAD);
sucessful = false;
do{
if(game.placeInitialRoad(parser.getPoint(), parser.getPoint())) {
sucessful = true;
}
else{
parser.errorMessage();
}
} while(!sucessful);
}
} }

View File

@ -144,7 +144,7 @@ public class SiedlerGame {
*/ */
public boolean placeInitialSettlement(Point position, boolean payout) { public boolean placeInitialSettlement(Point position, boolean payout) {
// TODO: Implement // TODO: Implement
return false; return true;
} }
/** /**
@ -157,7 +157,7 @@ public class SiedlerGame {
*/ */
public boolean placeInitialRoad(Point roadStart, Point roadEnd) { public boolean placeInitialRoad(Point roadStart, Point roadEnd) {
// TODO: Implement // TODO: Implement
return false; return true;
} }
/** /**
@ -220,6 +220,11 @@ public class SiedlerGame {
return true; return true;
} }
public boolean buildSettlementFoundation(Point position) {
//todo implement
return true;
}
/** /**
* Builds a city at the specified position on the board. * Builds a city at the specified position on the board.
* *
@ -276,6 +281,19 @@ public class SiedlerGame {
} }
private boolean validPositionForRoad(Point position){
//todo implement
return true;
}
private boolean validPositionForSettlement(Point position){
//todo implement
return true;
}
/** /**
* Trades in {@link #FOUR_TO_ONE_TRADE_OFFER} resource cards of the * Trades in {@link #FOUR_TO_ONE_TRADE_OFFER} resource cards of the
* offered type for {@link #FOUR_TO_ONE_TRADE_WANT} resource cards of the wanted type. * offered type for {@link #FOUR_TO_ONE_TRADE_WANT} resource cards of the wanted type.
@ -312,10 +330,10 @@ public class SiedlerGame {
for(Structure structure : structures) { for(Structure structure : structures) {
int newWinPoints = 0; int newWinPoints = 0;
if(structure instanceof Settlement){ if(structure instanceof City){
newWinPoints = 1;
} else if(structure instanceof City) {
newWinPoints = 2; newWinPoints = 2;
} else if(structure instanceof Settlement) {
newWinPoints = 1;
} }
Faction faction = structure.getFaction(); Faction faction = structure.getFaction();
@ -327,6 +345,7 @@ public class SiedlerGame {
} }
} }
//todo add points for longest road
return winPoints; return winPoints;
} }