|
|
@ -11,11 +11,12 @@ public class Game { |
|
|
|
public static void main(String[] args) throws InterruptedException { |
|
|
|
Game g = new Game(); |
|
|
|
Player winner; |
|
|
|
clearScreen(); |
|
|
|
while(true){ |
|
|
|
for (Player p : g.players) { |
|
|
|
int c = 0; |
|
|
|
int dice; |
|
|
|
System.out.println("Spieler " + p.name + " an der Reihe."); |
|
|
|
System.out.println(g.printGameboard(g, p)); |
|
|
|
do { |
|
|
|
int figId; |
|
|
|
dice = p.rollDice(); |
|
|
@ -28,6 +29,8 @@ public class Game { |
|
|
|
figId = p.choose(usableFigures); |
|
|
|
} while(figId == -1); |
|
|
|
g.setFigure(figId, dice, p, g); |
|
|
|
clearScreen(); |
|
|
|
System.out.println(g.printGameboard(g, p)); |
|
|
|
} |
|
|
|
} while (g.checkDice(dice, p, c, g)); |
|
|
|
if(p.checkGameWin(p.figures)) { |
|
|
@ -35,6 +38,8 @@ public class Game { |
|
|
|
System.out.println("Spieler " + winner.name + " gewinnt!"); |
|
|
|
exit(42); |
|
|
|
} |
|
|
|
TimeUnit.SECONDS.sleep(1L); |
|
|
|
clearScreen(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -135,7 +140,7 @@ public class Game { |
|
|
|
|
|
|
|
if(p.checkFigureInBase(p.figures) > 0 && dice == 6){ |
|
|
|
if(g.checkFieldClear(p.startPos, p, g) == 2) { |
|
|
|
return f.getPosition() == p.startPos; //TODO Wenn Figur auf Startpos von anderer Figur blockiert ist |
|
|
|
return f.getPosition() == p.startPos; |
|
|
|
} |
|
|
|
return f.getPosition() == -1; |
|
|
|
} else if (f.getPosition() <= p.jumpToHome && (f.getPosition() + dice) > p.jumpToHome) { |
|
|
@ -144,7 +149,9 @@ public class Game { |
|
|
|
} else { |
|
|
|
return false; |
|
|
|
} |
|
|
|
} else if(f.getPosition() != -1) { |
|
|
|
} else if(f.getPosition() >= p.startHome && (f.getPosition() + dice) < p.startHome + 4) { |
|
|
|
return g.checkFieldClear(f.getPosition() + dice, p, g) == 0; |
|
|
|
} else if(f.getPosition() != -1 && f.getPosition() < 40) { |
|
|
|
return g.checkFieldClear((f.getPosition() + dice) % 40, p, g) != 2; |
|
|
|
} |
|
|
|
return false; |
|
|
@ -162,19 +169,21 @@ public class Game { |
|
|
|
int preCalculated; |
|
|
|
if (p.figures.get(figId).getPosition() == -1) { |
|
|
|
preCalculated = p.startPos; |
|
|
|
} else if (p.figures.get(figId).getPosition() <= p.jumpToHome && (p.figures.get(figId).getPosition() + dice) > p.jumpToHome) { |
|
|
|
preCalculated = p.startHome + (dice - (p.jumpToHome - p.figures.get(figId).getPosition()) - 1); |
|
|
|
} else if (p.figures.get(figId).getPosition() >= p.startHome) { |
|
|
|
preCalculated = p.figures.get(figId).getPosition() + dice; |
|
|
|
}else { |
|
|
|
preCalculated = (p.figures.get(figId).getPosition() + dice) % 40; |
|
|
|
} |
|
|
|
int kicked = 0; |
|
|
|
for(Player currentPlayer : g.players) { |
|
|
|
for(Figure currentFigure : currentPlayer.figures) { |
|
|
|
if(currentFigure.getPosition() == preCalculated) { |
|
|
|
currentFigure.setPosition(-1); |
|
|
|
kicked = 1; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
p.figures.get(figId).setPosition(preCalculated); |
|
|
|
return kicked; |
|
|
|
return preCalculated; |
|
|
|
} |
|
|
|
} |