Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
86d998ddd7
|
@ -1,4 +0,0 @@
|
||||||
package ch.zhaw.catan;
|
|
||||||
|
|
||||||
public class CommandWords {
|
|
||||||
}
|
|
|
@ -25,15 +25,16 @@ public class Parser {
|
||||||
textTerminal.println(gameboard);
|
textTerminal.println(gameboard);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void displayPlayerResourceStock(HashMap<Config.Resource, Integer> currentPlayerResource){
|
public void displayPlayerInfo(HashMap<Config.Resource, Integer> currentPlayerResource, int winpoints){
|
||||||
textTerminal.println("You own the follwing Resources");
|
textTerminal.println("You are currently holding" + winpoints + " winpoints.");
|
||||||
|
textTerminal.println("You own the follwing resources:");
|
||||||
for(Config.Resource resource : currentPlayerResource.keySet()){
|
for(Config.Resource resource : currentPlayerResource.keySet()){
|
||||||
textTerminal.println(resource.name() + ":" + currentPlayerResource.get(resource));
|
textTerminal.println(resource.name() + ":" + currentPlayerResource.get(resource));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void displayWinnertext(Config.Faction winner){
|
public void displayWinnertext(Config.Faction winner){
|
||||||
textTerminal.println(winner.name() + "won the game!");
|
textTerminal.println(winner.name() + " won the game!");
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashMap<String, Integer> gameStart(){
|
public HashMap<String, Integer> gameStart(){
|
||||||
|
@ -66,6 +67,11 @@ public class Parser {
|
||||||
return textIO.newEnumInputReader(Command.class).read("What would you like to do?");
|
return textIO.newEnumInputReader(Command.class).read("What would you like to do?");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param give if true ask for resource to give if false for resource to receive
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public Config.Resource trade(boolean give) {
|
public Config.Resource trade(boolean give) {
|
||||||
String output = "give";
|
String output = "give";
|
||||||
if (!give){
|
if (!give){
|
||||||
|
@ -73,5 +79,10 @@ public class Parser {
|
||||||
}
|
}
|
||||||
return textIO.newEnumInputReader(Config.Resource.class).read("Which Resource would you like to " + output );
|
return textIO.newEnumInputReader(Config.Resource.class).read("Which Resource would you like to " + output );
|
||||||
}
|
}
|
||||||
|
public void quit(){
|
||||||
|
textTerminal.dispose();
|
||||||
|
textIO.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,8 @@
|
||||||
package ch.zhaw.catan;
|
package ch.zhaw.catan;
|
||||||
|
|
||||||
import org.beryx.textio.TextIO;
|
|
||||||
import org.beryx.textio.TextIoFactory;
|
|
||||||
import org.beryx.textio.TextTerminal;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import static ch.zhaw.catan.Command.*;
|
|
||||||
import static ch.zhaw.catan.Command.QUIT;
|
|
||||||
|
|
||||||
public class Siedler {
|
public class Siedler {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
@ -20,13 +13,15 @@ public class Siedler {
|
||||||
boolean running = true;
|
boolean running = true;
|
||||||
boolean diceThrown = false;
|
boolean diceThrown = false;
|
||||||
while (running){
|
while (running){
|
||||||
|
Config.Faction currentPlayerFaction = game.getCurrentPlayerFaction();
|
||||||
parser.displayGameboard(game.getBoard().getTextView());
|
parser.displayGameboard(game.getBoard().getTextView());
|
||||||
parser.playerTurn(game.getCurrentPlayerFaction());
|
parser.playerTurn(currentPlayerFaction);
|
||||||
if(!diceThrown) {
|
if(!diceThrown) {
|
||||||
throwDice(game, parser);
|
throwDice(game, parser);
|
||||||
diceThrown = true;
|
diceThrown = true;
|
||||||
}
|
}
|
||||||
parser.displayPlayerResourceStock(game.getCurruntPlayerResource());
|
|
||||||
|
parser.displayPlayerInfo(game.getCurrentPlayerResource(), game.getCurrentPlayerWinpoints());
|
||||||
switch (parser.getAction()) {
|
switch (parser.getAction()) {
|
||||||
case NEXTPLAYER:
|
case NEXTPLAYER:
|
||||||
Config.Faction winner = game.getWinner();
|
Config.Faction winner = game.getWinner();
|
||||||
|
@ -40,15 +35,21 @@ public class Siedler {
|
||||||
break;
|
break;
|
||||||
case BUILDSETTLEMENT:
|
case BUILDSETTLEMENT:
|
||||||
parser.giveCoordinatesForStructures(Config.Structure.SETTLEMENT);
|
parser.giveCoordinatesForStructures(Config.Structure.SETTLEMENT);
|
||||||
game.buildSettlement(parser.getPoint());
|
if(!game.buildSettlement(parser.getPoint())){
|
||||||
|
parser.errorMessage();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case BUILDCITY:
|
case BUILDCITY:
|
||||||
parser.giveCoordinatesForStructures(Config.Structure.CITY);
|
parser.giveCoordinatesForStructures(Config.Structure.CITY);
|
||||||
game.buildCity(parser.getPoint());
|
if(!game.buildCity(parser.getPoint())){
|
||||||
|
parser.errorMessage();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case BUILDROAD:
|
case BUILDROAD:
|
||||||
parser.giveCoordinatesForStructures(Config.Structure.ROAD);
|
parser.giveCoordinatesForStructures(Config.Structure.ROAD);
|
||||||
game.buildRoad(parser.getPoint(), parser.getPoint());
|
if(game.buildRoad(parser.getPoint(), parser.getPoint())){
|
||||||
|
parser.errorMessage();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case TRADEWITHBANK:
|
case TRADEWITHBANK:
|
||||||
Config.Resource offer = parser.trade(true);
|
Config.Resource offer = parser.trade(true);
|
||||||
|
@ -59,7 +60,7 @@ public class Siedler {
|
||||||
break;
|
break;
|
||||||
case QUIT:
|
case QUIT:
|
||||||
running = false;
|
running = false;
|
||||||
//todo close window
|
parser.quit();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
parser.errorMessage();
|
parser.errorMessage();
|
||||||
|
@ -71,6 +72,7 @@ public class Siedler {
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
//sum of two integers from 0-5 + 2 --> sum of two integers from 1-6
|
//sum of two integers from 0-5 + 2 --> sum of two integers from 1-6
|
||||||
int thrownDices = random.nextInt(6) + random.nextInt(6) + 2;
|
int thrownDices = random.nextInt(6) + random.nextInt(6) + 2;
|
||||||
|
//todo check if 7
|
||||||
parser.thrownDices(thrownDices);
|
parser.thrownDices(thrownDices);
|
||||||
game.throwDice(thrownDices);
|
game.throwDice(thrownDices);
|
||||||
}
|
}
|
||||||
|
|
|
@ -130,7 +130,7 @@ public class SiedlerGame {
|
||||||
return allPlayers.get(activePlayer).getSpecificResource(resource);
|
return allPlayers.get(activePlayer).getSpecificResource(resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashMap<Resource, Integer> getCurruntPlayerResource() {
|
public HashMap<Resource, Integer> getCurrentPlayerResource() {
|
||||||
return allPlayers.get(activePlayer).getResources();
|
return allPlayers.get(activePlayer).getResources();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,17 +329,14 @@ public class SiedlerGame {
|
||||||
* @return the winner of the game or null, if there is no winner (yet)
|
* @return the winner of the game or null, if there is no winner (yet)
|
||||||
*/
|
*/
|
||||||
public Faction getWinner() {
|
public Faction getWinner() {
|
||||||
HashMap<Faction, Integer> winPoints = getWinPoints();
|
if(getCurrentPlayerWinpoints() >= winPointsForWin){
|
||||||
for(Faction faction : winPoints.keySet()){
|
return getCurrentPlayerFaction();
|
||||||
if(winPoints.get(faction) >= winPointsForWin){
|
|
||||||
return faction;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private HashMap<Faction, Integer> getWinPoints(){
|
public int getCurrentPlayerWinpoints(){
|
||||||
HashMap<Faction, Integer> winPoints = new HashMap<>();
|
int winPoints = 0;
|
||||||
List<Structure> structures = board.getCorners();
|
List<Structure> structures = board.getCorners();
|
||||||
for(Structure structure : structures) {
|
for(Structure structure : structures) {
|
||||||
|
|
||||||
|
@ -349,15 +346,9 @@ public class SiedlerGame {
|
||||||
} else if(structure instanceof Settlement) {
|
} else if(structure instanceof Settlement) {
|
||||||
newWinPoints = 1;
|
newWinPoints = 1;
|
||||||
}
|
}
|
||||||
|
if(structure.getFaction() == getCurrentPlayerFaction()){
|
||||||
Faction faction = structure.getFaction();
|
winPoints ++;
|
||||||
if(winPoints.containsKey(faction)) {
|
|
||||||
winPoints.put(faction, winPoints.get(faction) + newWinPoints);
|
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
winPoints.put(faction, newWinPoints);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//todo add points for longest road
|
//todo add points for longest road
|
||||||
return winPoints;
|
return winPoints;
|
||||||
|
|
Loading…
Reference in New Issue