Помогите решить задачку про Tennis, программа работает, но как сделать код короче?
Гейм в тенисе выигрывает тот игрок, кто первым наберёт минимум четыре очка, при этом у него должно быть на два очка больше чем у противника.
- Очки в тенисном гейме описываются следующим образом: очки от нуля до трёх - "Love", "Fifteen", "Thirty", and "Forty" соответственно.
- Если оба игрока набрали хотя бы по три очка каждый и у обоих игроков одинаковое количество очков, то результат "Deuce".
- Если оба игрока набрали хотя бы по три очка каждый и один из игроков набрал на одно очко больше другого, то результат игры "Advantage" в пользу игрока с наибольшим количеством очков.
Ваша программа должна подсчитывать очки только для одного гейма игры. Сеты и матчи не входят в контекст этой задачи.
Ваша задача создать класс, который будет реализовать интерфейс TennisGame:
interface TennisGame {
void wonPoint(String playerName);
String score();
}
Когда игрок выигрывает очко, у вашего класса будут
вызывать метод wonPoint() и передавать в качестве
параметра имя игрока выигравшего очко.
Потом у вашего класса будет вызываться метод
score(), который должен вернуть строку с информацией
о текущем счёте игры. Полученную таким образом информацию
предпологается выводить на табло.
Пример:
TennisGame game = new TennisGame("player1", "player2");
game.score(); -> "Love - Love"
game.wonPoint("player1");
game.score(); -> "Fifteen - Love"
game.wonPoint("player1");
game.score(); -> "Thirty - Love"
game.wonPoint("player1");
game.score(); -> "Forty - Love"
game.wonPoint("player2");
game.score(); -> "Forty - Fifteen"
game.wonPoint("player2");
game.score(); -> "Forty - Thirty"
game.wonPoint("player2");
game.score(); -> "Deuce"
game.wonPoint("player2");
game.score(); -> "Advantage player2"
game.wonPoint("player2");
game.score(); -> "Win player2"
```Я сделал так:
package com.javaguru.student_vladimir_petranovski.lesson_15.level_3.service;
import com.javaguru.student_vladimir_petranovski.lesson_15.level_3.bean.Tennis;
public class TennisGameImpl implements TennisGame {
private final Tennis tennis;
public TennisGameImpl(Tennis tennis) {
this.tennis = tennis;
}
@Override
public void wonPoint(String playerWhoWonPointName) {
if (tennis.getPlayerOneName().equals(playerWhoWonPointName)) {
tennis.setScorePlayerOne(tennis.getScorePlayerOne() + 1);
}
if (tennis.getPlayerTwoName().equals(playerWhoWonPointName)) {
tennis.setScorePlayerTwo(tennis.getScorePlayerTwo() + 1);
}
}
@Override
public String score() {
String result = "";
if (tennis.getScorePlayerOne() == 0 && tennis.getScorePlayerTwo() == 0) {
result = "Love - Love";
}
if (tennis.getScorePlayerOne() == 1 && tennis.getScorePlayerTwo() == 0) {
result = "Fifteen - Love";
}
if (tennis.getScorePlayerOne() == 2 && tennis.getScorePlayerTwo() == 0) {
result = "Thirty - Love";
}
if (tennis.getScorePlayerOne() == 3 && tennis.getScorePlayerTwo() == 0) {
result = "Forty - Love";
}
if (tennis.getScorePlayerOne() == 0 && tennis.getScorePlayerTwo() == 1) {
result = "Love - Fifteen";
}
if (tennis.getScorePlayerOne() == 0 && tennis.getScorePlayerTwo() == 2) {
result = "Love - Thirty";
}
if (tennis.getScorePlayerOne() == 0 && tennis.getScorePlayerTwo() == 3) {
result = "Love - Forty";
}
if (tennis.getScorePlayerOne() == 1 && tennis.getScorePlayerTwo() == 1) {
result = "Fifteen - Fifteen";
}
if (tennis.getScorePlayerOne() == 2 && tennis.getScorePlayerTwo() == 2) {
result = "Thirty - Thirty";
}
if (tennis.getScorePlayerOne() == 2 && tennis.getScorePlayerTwo() == 1) {
result = "Thirty - Fifteen";
}
if (tennis.getScorePlayerOne() == 3 && tennis.getScorePlayerTwo() == 1) {
result = "Forty - Fifteen";
}
if (tennis.getScorePlayerOne() == 3 && tennis.getScorePlayerTwo() == 2) {
result = "Forty - Thirty";
}
if (tennis.getScorePlayerOne() == 1 && tennis.getScorePlayerTwo() == 2) {
result = "Fifteen - Thirty";
}
if (tennis.getScorePlayerOne() == 2 && tennis.getScorePlayerTwo() == 3) {
result = "Thirty - Forty";
}
if (tennis.getScorePlayerOne() == 3 && tennis.getScorePlayerTwo() == 3) {
result = "Deuce";
}
if (tennis.getScorePlayerOne() > 3 && tennis.getScorePlayerTwo() > 3
&& tennis.getScorePlayerOne() == tennis.getScorePlayerTwo()) {
result = "Deuce";
}
if (tennis.getScorePlayerOne() == 4
&& tennis.getScorePlayerTwo() < 3) {
result = "Win player1";
}
if (tennis.getScorePlayerOne() < 3 && tennis.getScorePlayerTwo() == 4) {
result = "Win player2";
}
if (tennis.getScorePlayerOne() >= 3
&& tennis.getScorePlayerTwo() == tennis.getScorePlayerOne() + 1) {
result = "Advantage player2";
}
if (tennis.getScorePlayerOne() == tennis.getScorePlayerTwo() + 1
&& tennis.getScorePlayerTwo() >= 3) {
result = "Advantage player1";
}
if (tennis.getScorePlayerOne() == tennis.getScorePlayerTwo() + 2
&& tennis.getScorePlayerTwo() >= 3) {
result = "Win player1";
}
if (tennis.getScorePlayerOne() >= 3
&& tennis.getScorePlayerTwo() == tennis.getScorePlayerOne() + 2) {
result = "Win player2";
}
return result;
}