package ch.zhaw.catan; import java.util.HashMap; import java.util.Random; public class Siedler { public static void main(String[] args) { //Spiel erstellen Parser parser = new Parser(); SiedlerGame game = foundingPhase(parser); boolean running = true; boolean diceThrown = false; while (running){ parser.displayGameboard(game.getBoard().getTextView()); parser.playerTurn(game.getCurrentPlayerFaction()); if(!diceThrown) { throwDice(game, parser); diceThrown = true; } parser.displayPlayerInfo(game.getCurrentPlayerResource(),game.getWinPoints().get(game.getCurrentPlayerFaction())); switch (parser.getAction()) { case NEXTPLAYER: Config.Faction winner = game.getWinner(); if(winner == null) { game.switchToNextPlayer(); diceThrown = false; } else { parser.displayWinnertext(winner); running = false; } break; case BUILDSETTLEMENT: parser.giveCoordinatesForStructures(Config.Structure.SETTLEMENT); game.buildSettlement(parser.getPoint()); break; case BUILDCITY: parser.giveCoordinatesForStructures(Config.Structure.CITY); game.buildCity(parser.getPoint()); break; case BUILDROAD: parser.giveCoordinatesForStructures(Config.Structure.ROAD); game.buildRoad(parser.getPoint(), parser.getPoint()); break; case TRADEWITHBANK: Config.Resource offer = parser.trade(true); Config.Resource want = parser.trade(false); if(!game.tradeWithBankFourToOne(offer, want)){ parser.errorMessage(); } break; case QUIT: running = false; //todo close window break; default: parser.errorMessage(); } } } private static void throwDice(SiedlerGame game, Parser parser) { Random random = new Random(); //sum of two integers from 0-5 + 2 --> sum of two integers from 1-6 int thrownDices = random.nextInt(6) + random.nextInt(6) + 2; //todo check if 7 parser.thrownDices(thrownDices); game.throwDice(thrownDices); } private static SiedlerGame foundingPhase(Parser parser) { HashMap 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); } }