adjust countRoad in SiedlerGame

This commit is contained in:
Andrin Fassbind 2021-12-07 15:33:39 +01:00
parent ecc75e14c8
commit 46484df77c
2 changed files with 13 additions and 8 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="openjdk-17" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_X" default="true" project-jdk-name="openjdk-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
</project> </project>

View File

@ -24,6 +24,7 @@ public class SiedlerGame {
private int winPointsForWin; private int winPointsForWin;
private Bank bank; private Bank bank;
private int activePlayer; private int activePlayer;
private HashMap<Config.Faction,Integer> longestRoadFaction;
/** /**
* Constructs a SiedlerGame game state object. * Constructs a SiedlerGame game state object.
@ -43,6 +44,7 @@ public class SiedlerGame {
allPlayers = new ArrayList<>(); allPlayers = new ArrayList<>();
createPlayer(numberOfPlayers); createPlayer(numberOfPlayers);
activePlayer = 0; activePlayer = 0;
longestRoadFaction = new HashMap<>();
this.winPointsForWin = winPoints; this.winPointsForWin = winPoints;
} }
@ -504,7 +506,8 @@ public class SiedlerGame {
winPoints ++; winPoints ++;
} }
} }
if(getLongestRoadFaction() == getCurrentPlayerFaction()){ longestRoadFaction = getLongestRoadFaction(longestRoadFaction);
if(longestRoadFaction.get(getCurrentPlayerFaction()) != null){
winPoints += 2; winPoints += 2;
} }
return winPoints; return winPoints;
@ -515,12 +518,12 @@ public class SiedlerGame {
* This method returns the faction of the player with the longest road longer than 5. * This method returns the faction of the player with the longest road longer than 5.
* @return null if there is no player with a road longer than 5 otherwise it returns the faction of the specific player * @return null if there is no player with a road longer than 5 otherwise it returns the faction of the specific player
*/ */
private Faction getLongestRoadFaction() { private HashMap<Config.Faction, Integer> getLongestRoadFaction(HashMap<Config.Faction,Integer> currentLongestRoad) {
List<Settlement> corners = board.getCorners(); List<Settlement> corners = board.getCorners();
List<Config.Faction> factionList = getPlayerFactions(); List<Config.Faction> factionList = getPlayerFactions();
HashMap<Config.Faction,Integer> players = new HashMap<>(); HashMap<Config.Faction,Integer> players = new HashMap<>();
int highest = 0; int highest = 0;
Config.Faction longestRoad = null;
for(Config.Faction faction : factionList) { for(Config.Faction faction : factionList) {
int count = 0; int count = 0;
players.put(faction,count); players.put(faction,count);
@ -535,12 +538,14 @@ public class SiedlerGame {
} }
} }
for(Config.Faction faction : players.keySet()) { for(Config.Faction faction : players.keySet()) {
if(players.get(faction) >= 5 && players.get(faction)>highest) { for(Config.Faction faction1 : currentLongestRoad.keySet()) {
highest = players.get(faction); if(players.get(faction) >= 5 && players.get(faction) > currentLongestRoad.get(faction1)) {
longestRoad = faction; currentLongestRoad.remove(faction1);
currentLongestRoad.put(faction,players.get(faction));
} }
} }
return longestRoad; }
return currentLongestRoad;
} }
/** /**