public boolean isServerChange() { int totalScore = leftTeam.getScore() + rightTeam.getScore(); if (totalScore == 0) { return false; } switch (gameLength) { case ELEVEN: return totalScore % 2 == 0 || isOvertime(); case TWENTY_ONE: return totalScore % 5 == 0 || isOvertime(); } throw new IllegalStateException("Invalid game length: " + gameLength); }
public void decrementTeamScore(Team.Side side) { Team team = getTeam(side); log.trace("Decrement team: " + team); if (team.getScore() == 0) { return; } if (isEndOfGame()) { team.setWins(team.getWins() - 1); } if (isServerChange()) { this.switchServers(); } histories.add(0, new PointHistory(side, PointHistory.Type.DECREMENT)); team.setScore(team.getScore() - 1); }
/** * Set ScoreBoard (XXX: another misleading class name) * * @param board Score board */ public void setScoreBoard(scoreBoard board) { ListIterator teamsList = teams.listIterator(0); Team tempTeam; float finalScore; int tempScore; while (teamsList.hasNext()) { tempTeam = (Team) teamsList.next(); tempScore = tempTeam.getScore(); finalScore = (float) tempScore / maxScore; board.Insert(tempTeam.teamName, tempTeam.rgbColor, finalScore); } }
public Commentary checkForGamePoint(Commentary commentary) { if (leftTeam.getScore() >= this.getGameLength().getPoints() - 1 && leftTeam.getScore() - rightTeam.getScore() >= 1) { if (isOvertime()) { commentary.next("Advantage ").add(leftTeam.getName()); } else if (leftTeam.getWins() == matchLength.getMinGames() - 1) { commentary.next("Match point"); } else { commentary.next("Game point"); } } if (rightTeam.getScore() >= this.getGameLength().getPoints() - 1 && rightTeam.getScore() - leftTeam.getScore() >= 1) { if (isOvertime()) { commentary.next("Advantage ").add(rightTeam.getName()); } else if (rightTeam.getWins() == matchLength.getMinGames() - 1) { commentary.next("Match point"); } else { commentary.next("Game point"); } } return commentary; }
/** * Creates and runs a scoreboard for a variety of games * * @param args command line arguments (none expected) */ public static void main(String args[]) { Scanner r = new Scanner(System.in); int trip = 0; boolean err = true; Game game = null; while (err) { try { System.out.print( "\nSelect Sport (by number): \n" + " 1) Football\n" + " 2) Soccer\n" + " 3) Basketball\n" + " 4) Hockey\n" + "Enter choice: "); trip = r.nextInt(); r.nextLine(); if (trip > 4 || trip < 1) { throw new IndexOutOfBoundsException(); } err = false; } catch (IndexOutOfBoundsException e) { System.out.println("Invalid Option, try again"); // r.nextLine(); } catch (InputMismatchException e) { System.out.println("Please enter the menu item number"); r.nextLine(); } } if (trip > 0) { System.out.println("ENTER TEAMS"); System.out.print("Home: "); Team team1 = new Team(r.nextLine()); System.out.print("Away: "); Team team2 = new Team(r.nextLine()); System.out.println(); switch (trip) { case 1: game = new Football(team1, team2); break; case 2: game = new Soccer(team1, team2); break; case 3: game = new Basketball(team1, team2); break; case 4: game = new Hockey(team1, team2); break; } while (!game.gameOver()) { err = true; int menuCount = 0; while (err) { menuCount = 1; // PRINT MENU try { ArrayList<ScoringMethod> scoringMethods = game.getScoringMethods(); /* Displays dynamically generated scoreboard containing all available scoring methods for both teams */ System.out.println( team1.getName() + " - " + team1.getScore() + ", " + team2.getName() + " - " + team2.getScore()); System.out.println("Current " + game.getPeriodName() + ": " + game.getPeriod()); System.out.println("Menu: "); for (int i = 0; i < (game.getScoringMethods().size()); i++) { System.out.println( " " + menuCount + ") " + team1.getName() + " " + game.getScoringMethods().get(i).getName()); menuCount++; } for (int i = 0; i < (game.getScoringMethods().size()); i++) { System.out.println( " " + menuCount + ") " + team2.getName() + " " + game.getScoringMethods().get(i).getName()); menuCount++; } System.out.println(" " + menuCount + ") End " + game.getPeriodName()); System.out.print("Enter choice: "); trip = r.nextInt(); if (trip > ((scoringMethods.size() * 2) + 1) || trip < 1) { throw new IndexOutOfBoundsException(); } err = false; } catch (IndexOutOfBoundsException e) { System.out.println("Invalid Option, try again " + e); r.nextLine(); } catch (InputMismatchException e) { System.out.println("Please enter the menu item number"); r.nextLine(); } } if (trip == menuCount) { game.endPeriod(); } else if (trip > ((menuCount - 1) / 2)) { trip -= (menuCount - 1) / 2; team2.addScore(game.getScoringMethods().get(trip - 1).getPoints()); } else { team1.addScore(game.getScoringMethods().get(trip - 1).getPoints()); } } System.out.println("\n\nGame is over."); System.out.println( "Final Score: " + team1.getName() + " - " + team1.getScore() + ", " + team2.getName() + " - " + team2.getScore()); String winner = game.getWinner(); if (winner.equals("Nobody")) { System.out.println("Tie"); // System.out.println(winner+" wins :("); } else { System.out.println(winner + " wins!"); } } r.close(); }
/** * Get total score by team * * @param team Team * @return Score */ public float getScore(Team team) { float score = (float) team.getScore(); float max = (float) maxScore; float ret = (float) score / max * (Game.getNTeams() + 50); // XXX return ret; }
public Team getLoser() { if (!isEndOfGame()) { return null; } return leftTeam.getScore() > rightTeam.getScore() ? rightTeam : leftTeam; }
public Team getWinner() { if (!isEndOfGame()) { return null; } return leftTeam.getScore() > rightTeam.getScore() ? leftTeam : rightTeam; }
public boolean isEndOfGame() { return (leftTeam.getScore() >= gameLength.getPoints() || rightTeam.getScore() >= gameLength.getPoints()) && !isOvertime(); }
public boolean isOvertime() { return (leftTeam.getScore() >= gameLength.getPoints() || rightTeam.getScore() >= gameLength.getPoints()) && Math.abs(leftTeam.getScore() - rightTeam.getScore()) < 2; }
public void incrementTeamScore(Team.Side side) { Team team = getTeam(side); log.trace("Increment team: " + team); Commentary commentary = new Commentary(); if (isEndOfMatch()) { return; } if (isEndOfGame()) { Team winner = getWinner(); Team loser = getLoser(); leftTeam.setScore(0); rightTeam.setScore(0); server = loser.getSide(); switchSides(); return; } if (server == null) { server = side; commentary.add(team.getName()).add(" serves first"); } else { team.setScore(team.getScore() + 1); histories.add(0, new PointHistory(side, PointHistory.Type.INCREMENT)); if (!isOvertime() && !isEndOfGame()) { commentary.add("Point ").add(team.getName()); } if (isEndOfGame()) { Team winner = getWinner(); Team loser = getLoser(); winner.setWins(winner.getWins() + 1); if (leftTeam.getWins() == matchLength.getMinGames() || rightTeam.getWins() == matchLength.getMinGames()) { commentary .next("Congratulations ") .add(winner.getName()) .next("You have defeated ") .add(loser.getName()); } else { commentary .add(winner.getName()) .add(" wins the game") .next("Switch sides") .next("Losers serve first"); } if (loser.getScore() == 0) { commentary.next("Perfect game!", "Perfect, game!"); } else if (loser.getScore() <= 12 && gameLength == GameLength.TWENTY_ONE) { commentary.next("Sorry ").add(loser.getName()).add(", Jacob is not impressed!"); } } else { int totalScore = leftTeam.getScore() + rightTeam.getScore(); // check for o-fer and add to commentary if (!isOvertime() && totalScore != 0 && isServerChange()) { log.trace("Check for ofer"); commentary = checkForOfer(team, commentary); } if (isServerChange()) { if (!isOvertime()) { commentary.next("Change servers", "Change servers!"); } switchServers(); // String name = getTeam(server).getName(); } // announce score if (!isOvertime()) { AnnounceScore announceScore = new AnnounceScore(this); commentary.next(announceScore.getScore()); } else { if (leftTeam.getScore() == rightTeam.getScore()) { commentary.next("Deuce", "Deuce!"); } } // check for gamepoint or matchpoint commentary = checkForGamePoint(commentary); } } log.trace( "Score: " + leftTeam.getName() + " " + leftTeam.getScore() + " to " + rightTeam.getName() + " " + rightTeam.getScore()); talker.say(commentary); }