Пример #1
0
 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);
 }
Пример #2
0
  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);
  }
Пример #3
0
  /**
   * 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);
    }
  }
Пример #4
0
  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;
  }
Пример #5
0
  /**
   * 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();
  }
Пример #6
0
 /**
  * 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;
 }
Пример #7
0
 public Team getLoser() {
   if (!isEndOfGame()) {
     return null;
   }
   return leftTeam.getScore() > rightTeam.getScore() ? rightTeam : leftTeam;
 }
Пример #8
0
 public Team getWinner() {
   if (!isEndOfGame()) {
     return null;
   }
   return leftTeam.getScore() > rightTeam.getScore() ? leftTeam : rightTeam;
 }
Пример #9
0
 public boolean isEndOfGame() {
   return (leftTeam.getScore() >= gameLength.getPoints()
           || rightTeam.getScore() >= gameLength.getPoints())
       && !isOvertime();
 }
Пример #10
0
 public boolean isOvertime() {
   return (leftTeam.getScore() >= gameLength.getPoints()
           || rightTeam.getScore() >= gameLength.getPoints())
       && Math.abs(leftTeam.getScore() - rightTeam.getScore()) < 2;
 }
Пример #11
0
  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);
  }