X-Git-Url: https://troll.desast.re/troll.git/blobdiff_plain/055ce8e682c4b82d5b52362e88df2f9d6a7d53d6..e9fb4b60ebdea1a383b0963aa71d0a3ffc1e3822:/src/main/java/com/codingame/game/Model.java diff --git a/src/main/java/com/codingame/game/Model.java b/src/main/java/com/codingame/game/Model.java index 46841db..217388a 100644 --- a/src/main/java/com/codingame/game/Model.java +++ b/src/main/java/com/codingame/game/Model.java @@ -9,6 +9,7 @@ import com.google.inject.Inject; class Model { @Inject private MultiplayerGameManager gameManager; + long seed; Random random; int roadLength; int initialStones; @@ -18,8 +19,17 @@ class Model { class Player { com.codingame.game.Player gp; int index; + boolean hit; - Player(int i) { index = i; } + Player(int i) { + index = i; + hit = false; + } + + void loseRound() { + hit = true; + winner = 1 - index; + } private int castlePosition; public int getCastlePosition() { return castlePosition; } @@ -66,7 +76,9 @@ class Model { } public void adjustScore(int trollPosition) { - gp.setScore(Math.abs(castlePosition - trollPosition)); + if (gp.isActive()) { + gp.setScore(Math.abs(castlePosition - trollPosition)); + } } public int getTrollDistance() { @@ -74,7 +86,8 @@ class Model { } } - void init(long seed) { + void init() { + seed = gameManager.getSeed(); random = new Random(seed); switch (random.nextInt(4)) { case 0: @@ -112,6 +125,8 @@ class Model { gameManager.addToGameSummary(GameManager.formatErrorMessage("Ill-formed road length: " + buf)); } } + ps.setProperty("roadLength", new Integer(roadLength).toString()); + buf = ps.getProperty("initialStones"); if (buf != null) { try { @@ -128,6 +143,7 @@ class Model { gameManager.addToGameSummary(GameManager.formatErrorMessage("Ill-formed initial stone count: " + buf)); } } + ps.setProperty("initialStones", new Integer(initialStones).toString()); trollPosition = roadLength / 2; @@ -146,24 +162,30 @@ class Model { p1.setStones(initialStones); } - private int winner; - boolean haveWinner() { - if (trollPosition == 0) { + void moveTroll(int delta) { + trollPosition += delta; + if (trollPosition <= 0) { + trollPosition = 0; winner = 1; - return true; } - else if (trollPosition == roadLength) { + if (trollPosition >= roadLength) { + trollPosition = roadLength; winner = 0; - return true; - } - else { - return false; } + + p0.adjustScore(trollPosition); + p1.adjustScore(trollPosition); } + + private Integer winner; + boolean haveWinner() { + return winner != null; + } + int getWinner() { return winner; } int getLoser() { return 1 - winner; } boolean exhausted() { - return p0.getStones() <= 0 && p1.getStones() <= 0; + return p0.getStones() <= 0 || p1.getStones() <= 0; } }