Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
@RequestMapping("/list")
public class PlayerListController {

@RequestMapping(path = "", method = RequestMethod.GET)
/**@RequestMapping(path = "", method = RequestMethod.GET)
public String get(@RequestParam(value="id", required = false) String id, Model model) {
final Player player1 = new Player("Andi", 12, 265);
final Player player2 = new Player("Roman", 12, 264);
Expand All @@ -32,6 +32,6 @@ public String get(@RequestParam(value="id", required = false) String id, Model m
model.addAttribute("players", players.get(playerIndex));
}
return "leaderboard";
}
}**/
}

94 changes: 47 additions & 47 deletions src/main/java/com/commercetools/pingpong/model/Game.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,22 @@


public class Game {
private Player playerOne;
private Player playerTwo;
private Player leftPlayer;
private Player rightPlayer;

public Game(Player firstPlayer, Player secondPlayer) {
playerOne = firstPlayer;
playerTwo = secondPlayer;
leftPlayer = firstPlayer;
rightPlayer = secondPlayer;
}

public void updateScoreOfPlayer(Player player, int actionType) {

if (actionType == 1 && !hasSomebodyWonSet()) {
player.addPoint();
player.addSetPoint();
decideWhoServes();

} else if (actionType == 2 && player.getSetScore() > 0) {
player.subPoint();
player.subSetPoint();
whoServesAfterDoubleClick();

} else if (actionType == 3) {
Expand All @@ -31,13 +31,13 @@ public void updateScoreOfPlayer(Player player, int actionType) {
}

public void updateMatchScoreOfPlayers() {
if (hasPlayerWonSet(playerOne, playerTwo) && !isMatchOver()) {
playerOne.addMatchScore();
if (hasPlayerWonSet(leftPlayer, rightPlayer) && !isMatchOver()) {
leftPlayer.addMatchPoint();
resetSetScores();
whoBeginsServing();

} else if (hasPlayerWonSet(playerTwo, playerOne) && !isMatchOver()) {
playerTwo.addMatchScore();
} else if (hasPlayerWonSet(rightPlayer, leftPlayer) && !isMatchOver()) {
rightPlayer.addMatchPoint();
resetSetScores();
whoBeginsServing();
}
Expand All @@ -52,7 +52,7 @@ public void gameOver() {
}

public boolean hasSomebodyWonSet() {
return (hasPlayerWonSet(playerOne, playerTwo) || hasPlayerWonSet(playerTwo, playerOne));
return (hasPlayerWonSet(leftPlayer, rightPlayer) || hasPlayerWonSet(rightPlayer, leftPlayer));
}

public boolean hasPlayerWonSet(Player playerWhoIsWinning, Player playerWhoIsLoosing) {
Expand All @@ -68,67 +68,67 @@ public boolean hasPlayerWonSet(Player playerWhoIsWinning, Player playerWhoIsLoos
}

public boolean isMatchOver() {
return (playerOne.getMatchScore() == 2 || playerTwo.getMatchScore() == 2);
return (leftPlayer.getMatchScore() == 2 || rightPlayer.getMatchScore() == 2);
}

public boolean isTwoPointDifference(Player winningPlayer, Player losingPlayer) {
return (winningPlayer.getSetScore() - losingPlayer.getSetScore() == 2);
}

public void resetSetScores() {
playerOne.resetSet();
playerTwo.resetSet();
leftPlayer.resetSetScore();
rightPlayer.resetSetScore();
}

public void resetMatchScores() {
playerOne.resetMatchScore();
playerTwo.resetMatchScore();
leftPlayer.resetMatchScore();
rightPlayer.resetMatchScore();
}

public void resetServe() {
playerOne.unsetServe();
playerTwo.unsetServe();
leftPlayer.unsetServe();
rightPlayer.unsetServe();
}

public void resetBeginningServe() {
playerOne.unsetBeginningServe();
playerTwo.unsetBeginningServe();
leftPlayer.unsetBeginningServe();
rightPlayer.unsetBeginningServe();
}

public boolean areBothSetScoresZero() {
return (playerOne.getSetScore() == 0 && playerTwo.getSetScore() == 0);
return (leftPlayer.getSetScore() == 0 && rightPlayer.getSetScore() == 0);
}

public boolean areBothMatchScoresZero() {
return (playerOne.getMatchScore() == 0 && playerTwo.getMatchScore() == 0);
return (leftPlayer.getMatchScore() == 0 && rightPlayer.getMatchScore() == 0);
}

public boolean isSomeoneServing() {
return (playerOne.amIServing() || playerTwo.amIServing());
return (leftPlayer.amIServing() || rightPlayer.amIServing());
}

public boolean isSetScoreEven() {
return ((playerOne.getSetScore() + playerTwo.getSetScore()) % 2 == 0);
return ((leftPlayer.getSetScore() + rightPlayer.getSetScore()) % 2 == 0);
}

public boolean isMatchScoreEven() {
return ((playerOne.getMatchScore() + playerTwo.getMatchScore()) % 2 == 0);
return ((leftPlayer.getMatchScore() + rightPlayer.getMatchScore()) % 2 == 0);
}

public Player getPlayerOne() {
return playerOne;
public Player getLeftPlayer() {
return leftPlayer;
}

public Player getPlayerTwo() {
return playerTwo;
public Player getRightPlayer() {
return rightPlayer;
}

public boolean getPlayerOneServe() {
return playerOne.amIServing();
return leftPlayer.amIServing();
}

public boolean getPlayerTwoServe() {
return playerTwo.amIServing();
return rightPlayer.amIServing();
}

public void changeServingPlayer(Player nextServingPlayer, Player lastServingPlayer) {
Expand All @@ -149,11 +149,11 @@ public boolean isOvertime(Player playerOne, Player playerTwo) {

public void whoServesAfterDoubleClick() {
if (!isSetScoreEven()) {
if (playerOne.amIServing()) {
changeServingPlayer(playerTwo, playerOne);
if (leftPlayer.amIServing()) {
changeServingPlayer(rightPlayer, leftPlayer);

} else if (playerTwo.amIServing()) {
changeServingPlayer(playerOne, playerTwo);
} else if (rightPlayer.amIServing()) {
changeServingPlayer(leftPlayer, rightPlayer);
}
}
}
Expand All @@ -165,29 +165,29 @@ public void setFirstServe(Player actingPlayer) {


public void whoBeginsServing() {
if (playerOne.didIServeAtBeginning()) {
changeBeginningServingPlayer(playerTwo, playerOne);
if (leftPlayer.didIServeAtBeginning()) {
changeBeginningServingPlayer(rightPlayer, leftPlayer);

} else if (playerTwo.didIServeAtBeginning()) {
changeBeginningServingPlayer(playerOne, playerTwo);
} else if (rightPlayer.didIServeAtBeginning()) {
changeBeginningServingPlayer(leftPlayer, rightPlayer);
}
}

public void decideWhoServes() {
if (areBothSetScoresZero() && areBothMatchScoresZero()) {
return;

} else if (isOvertime(playerOne, playerTwo) && playerOne.amIServing()) {
changeServingPlayer(playerTwo, playerOne);
} else if (isOvertime(leftPlayer, rightPlayer) && leftPlayer.amIServing()) {
changeServingPlayer(rightPlayer, leftPlayer);

} else if (isOvertime(playerOne, playerTwo) && playerTwo.amIServing()) {
changeServingPlayer(playerOne, playerTwo);
} else if (isOvertime(leftPlayer, rightPlayer) && rightPlayer.amIServing()) {
changeServingPlayer(leftPlayer, rightPlayer);

} else if (playerOne.amIServing() && isSetScoreEven()) {
changeServingPlayer(playerTwo, playerOne);
} else if (leftPlayer.amIServing() && isSetScoreEven()) {
changeServingPlayer(rightPlayer, leftPlayer);

} else if (playerTwo.amIServing() && isSetScoreEven()) {
changeServingPlayer(playerOne, playerTwo);
} else if (rightPlayer.amIServing() && isSetScoreEven()) {
changeServingPlayer(leftPlayer, rightPlayer);
}
}
}
40 changes: 24 additions & 16 deletions src/main/java/com/commercetools/pingpong/model/Player.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,34 +8,40 @@ public class Player {
private boolean serve;
private boolean beginningServe;

public Player(String name, int numberOfGamesWon, int totalPoints) {
}

public Player(String name) {
this.name = name;
}

public Player() {
}

public void addPoint() {
public void customizeSetScore(int newPoints) {
setScore = setScore + newPoints;
}

public void customizeMatchScore(int newPoints) {
matchScore = matchScore + newPoints;
}


public void addSetPoint() {
setScore++;
}

public void subPoint() {
public void subSetPoint() {
setScore--;
}

public void resetSet() {
setScore = 0;
public void addMatchPoint() {
matchScore++;
}

public void setBeginningServe() {
beginningServe = true;
public void resetSetScore() {
setScore = 0;
}

public void unsetBeginningServe() {
beginningServe = false;
public void resetMatchScore() {
matchScore = 0;
}

public void setServe() {
Expand All @@ -46,15 +52,17 @@ public void unsetServe() {
serve = false;
}

public void addMatchScore() {
matchScore++;
public void setBeginningServe() {
beginningServe = true;
}

public void resetMatchScore() {
matchScore = 0;
public void unsetBeginningServe() {
beginningServe = false;
}




public String getName() {
return name;
}
Expand All @@ -75,4 +83,4 @@ public boolean amIServing() {
public boolean didIServeAtBeginning() {
return beginningServe;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,24 +36,24 @@ public void updateScore(Message message) {

private Player getPlayer(Message message) {
if (message.getButtonId().equals("1") && match.isMatchScoreEven()) {
return match.getPlayerOne();
return match.getLeftPlayer();
} else if (message.getButtonId().equals("2") && match.isMatchScoreEven()) {
return match.getPlayerTwo();
return match.getRightPlayer();
} else if (message.getButtonId().equals("1")) {
return match.getPlayerTwo();
return match.getRightPlayer();
} else {
return match.getPlayerOne();
return match.getLeftPlayer();
}
}

@Override
public Player getLeftPlayer() {
return match.isMatchScoreEven() ? match.getPlayerOne() : match.getPlayerTwo();
return match.isMatchScoreEven() ? match.getLeftPlayer() : match.getRightPlayer();
}

@Override
public Player getRightPlayer() {
return match.isMatchScoreEven() ? match.getPlayerTwo() : match.getPlayerOne();
return match.isMatchScoreEven() ? match.getRightPlayer() : match.getLeftPlayer();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import com.commercetools.pingpong.model.Game;
import com.commercetools.pingpong.model.Player;

import com.commercetools.pingpong.service.GameService;
import com.commercetools.pingpong.service.impl.GameServiceImpl;
import org.junit.Test;
import org.springframework.web.bind.annotation.RequestMapping;

Expand All @@ -18,8 +20,9 @@ public void shouldReturnBubbleMessage() {

Player playerTestTwo = new Player("Kelso");

GameService testGameService = new GameServiceImpl();
Game matchTest = new Game(playerTestOne, playerTestTwo);
GameController gameControllerTest = new GameController();
GameController gameControllerTest = new GameController(testGameService);

}
}
Expand Down
Loading