Compare commits

...

2 Commits

Author SHA1 Message Date
e7f7a20ea6 formatting 2025-05-13 13:06:17 +02:00
703097ad4d fixed Exception handling 2025-05-13 13:01:17 +02:00
4 changed files with 70 additions and 61 deletions

View File

@ -8,7 +8,7 @@ public class ByeGame extends Game{
private final String player1; private final String player1;
private final Game ref; private final Game ref;
ByeGame(String player1, Game ref){ ByeGame(String player1, Game ref) {
super(); super();
this.ref = ref; this.ref = ref;
this.player1 = player1; this.player1 = player1;
@ -38,16 +38,22 @@ public class ByeGame extends Game{
@Override @Override
public List<Game> getAllGames() public List<Game> getAllGames() {
{ List<Game> temp = new ArrayList<>();
List<Game> temp = new ArrayList(Arrays.asList(this.getId())); temp.add(this);
temp.addAll(ref.getAllGames()); temp.addAll(ref.getAllGames());
return temp; return temp;
} }
@Override @Override
public List<String> getRemaningPlayers() { public List<String> getRemaningPlayers() {
// TODO Auto-generated method stub if (winner != null) {
throw new UnsupportedOperationException("Unimplemented method 'getRemaningPlayers'"); return Arrays.asList(winner);
} else {
List<String> players = new ArrayList<>();
players.add(player1);
players.addAll(ref.getRemaningPlayers());
return players;
}
} }
} }

View File

@ -3,45 +3,49 @@ package tournament;
import java.util.List; import java.util.List;
public abstract class Game { public abstract class Game {
private static int counter = 0;
private final int id; private static int counter = 0;
//null nicht notwendig protected final int id;
private String winner = null; //null nicht notwendig
protected String winner = null;
protected Game() { protected Game() {
this.id = counter++; this.id = counter++;
} }
public int getId(){ public int getId(){
return this.id; return this.id;
} }
public String getWinner(){ public String getWinner(){
return this.winner; return this.winner;
} }
public void setWinner(String winner) { public void setWinner(String winner) {
String player1 = getPlayer1(); if (this.winner != null)
System.out.println("Player 1: " + player1); throw new IllegalStateException("winner already set");
String player2 = getPlayer2(); if (getPlayer1() == null || getPlayer2() == null)
System.out.println("Player 2: " + player2); throw new IllegalStateException("Opponents are not yet known");
this.winner = this.winner == null && player1 != null && player2 != null && (winner == player1 || winner == player2) ? this.winner = winner : this.winner; if (getPlayer1().equals(winner) || getPlayer2().equals(winner))
} this.winner = winner;
else
throw new IllegalArgumentException("Unknown player " + winner);
}
public abstract String getPlayer1();
public abstract String getPlayer2(); public abstract String getPlayer1();
public abstract List<String> getAllPlayers(); public abstract String getPlayer2();
public abstract List<String> getAllPlayers();
public abstract List<String> getRemaningPlayers(); public abstract List<String> getRemaningPlayers();
public abstract List<Game> getAllGames(); public abstract List<Game> getAllGames();
public String toString(){ public String toString() {
return "Game: " + getId() + " Player: "+ getPlayer1()+ " vs Player: " + getPlayer2() + "Winner is: "+ getWinner(); return "Game: " + getId() + " Player: "+ getPlayer1()+ " vs Player: " + getPlayer2() + "Winner is: "+ getWinner();
} }
} }

View File

@ -5,45 +5,46 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
public class OrdinaryGame extends Game{ public class OrdinaryGame extends Game{
private Game Player1; private Game Player1;
private Game Player2; private Game Player2;
public OrdinaryGame(Game Player1, Game Player2)
{ public OrdinaryGame(Game Player1, Game Player2) {
this.Player1 = Player1; this.Player1 = Player1;
this.Player2 = Player2; this.Player2 = Player2;
} }
@Override @Override
public String getPlayer1() public String getPlayer1() {
{
return Player1.getWinner(); return Player1.getWinner();
} }
@Override @Override
public String getPlayer2() public String getPlayer2() {
{
return Player2.getWinner(); return Player2.getWinner();
} }
@Override @Override
public List<String> getAllPlayers() public List<String> getAllPlayers() {
{ List<String> temp = new ArrayList<>();
List<String> temp = new ArrayList();
temp.addAll(Player1.getAllPlayers()); temp.addAll(Player1.getAllPlayers());
temp.addAll(Player2.getAllPlayers()); temp.addAll(Player2.getAllPlayers());
return temp; return temp;
} }
@Override @Override
public List<String> getRemaningPlayers() public List<String> getRemaningPlayers() {
{
if(this.getWinner() != null) if(this.getWinner() != null)
return new ArrayList<>(Arrays.asList(this.getWinner())); return new ArrayList<>(Arrays.asList(this.getWinner()));
List<String> temp = new ArrayList(); List<String> temp = new ArrayList<>();
temp.addAll(Player1.getRemaningPlayers()); temp.addAll(Player1.getRemaningPlayers());
temp.addAll(Player2.getRemaningPlayers()); temp.addAll(Player2.getRemaningPlayers());
return temp; return temp;
} }
@Override @Override
public List<Game> getAllGames() public List<Game> getAllGames() {
{ List<Game> temp = new ArrayList<>();
List<Game> temp = new ArrayList(Arrays.asList(this.getId()));
temp.addAll(Player1.getAllGames()); temp.addAll(Player1.getAllGames());
temp.addAll(Player2.getAllGames()); temp.addAll(Player2.getAllGames());
return temp; return temp;

View File

@ -6,6 +6,7 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
public class SeededGame extends Game{ public class SeededGame extends Game{
private String player1; private String player1;
private String player2; private String player2;
@ -16,35 +17,32 @@ public class SeededGame extends Game{
} }
@Override @Override
public String getPlayer1() public String getPlayer1() {
{
return player1; return player1;
} }
@Override @Override
public String getPlayer2() public String getPlayer2() {
{
return player2; return player2;
} }
@Override @Override
public List<String> getAllPlayers() public List<String> getAllPlayers() {
{
//return new ArrayList<String>(Arrays.asList(player1, player2)); //return new ArrayList<String>(Arrays.asList(player1, player2));
return List.of(player1, player2); return List.of(player1, player2);
} }
@Override @Override
public List<String> getRemaningPlayers() public List<String> getRemaningPlayers() {
{ if(this.getWinner() != null) {
if(this.getWinner() != null)
return new ArrayList<>(Arrays.asList(this.getWinner())); return new ArrayList<>(Arrays.asList(this.getWinner()));
List<String> temp = new ArrayList(Arrays.asList(player1,player2)); }
return temp;
return List.of(player1, player2);
} }
@Override @Override
public List<Game> getAllGames() public List<Game> getAllGames() {
{
return List.of(this); return List.of(this);
} }
} }