From d826ad974a3f1ff735011be3b8c6645cce9d6568 Mon Sep 17 00:00:00 2001 From: Victor Date: Sun, 16 Mar 2014 16:25:22 +0200 Subject: [PATCH] Detect end round --- src/com/annimon/turrets/Constants.java | 1 + src/com/annimon/turrets/GameCanvas.java | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/com/annimon/turrets/Constants.java b/src/com/annimon/turrets/Constants.java index 6bae23f..514f59c 100644 --- a/src/com/annimon/turrets/Constants.java +++ b/src/com/annimon/turrets/Constants.java @@ -20,4 +20,5 @@ public interface Constants { // Game public static final double GRAVITATION_ACCELERATION = 9.81; public static final int PLAYERS_BLOCK_COUNT = 24; + public static final int MAX_ROUNDS = 5; } diff --git a/src/com/annimon/turrets/GameCanvas.java b/src/com/annimon/turrets/GameCanvas.java index c2d5664..1b6cfcc 100644 --- a/src/com/annimon/turrets/GameCanvas.java +++ b/src/com/annimon/turrets/GameCanvas.java @@ -20,6 +20,7 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ private final boolean serverInstance; private SocketHelper socketHelper; + private int roundWinCount; private boolean gameStarted, serverMove; public GameCanvas(boolean serverInstance) { @@ -118,6 +119,19 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ gameStarted = true; serverMove = true; + roundWinCount = 0; + } + + private void finishRound(boolean serverWinRound) { + if (serverInstance && serverWinRound) roundWinCount++; + else if (!serverInstance && !serverWinRound) roundWinCount--; + + if (roundWinCount == Constants.MAX_ROUNDS) finishGame(true); + else if (roundWinCount == -Constants.MAX_ROUNDS) finishGame(false); + } + + private void finishGame(boolean instanceWin) { + System.out.println(instanceWin ? "You win" : "Opponent win"); } private boolean allowMove() { @@ -148,6 +162,11 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ @Override public void shootComplete(int x) { serverMove = !serverMove; + if (x == -1) return; + final int bound = Constants.WIDTH - Constants.PLAYERS_BLOCK_COUNT; + if (x > bound) { + finishRound(serverInstance); + } } }; @@ -156,6 +175,10 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ @Override public void shootComplete(int x) { serverMove = !serverMove; + if (x == -1) return; + if (x < Constants.PLAYERS_BLOCK_COUNT) { + finishRound(!serverInstance); + } } }; }