diff --git a/uebung04/chess/Rook.java b/uebung04/chess/Rook.java new file mode 100644 index 0000000..e2700d0 --- /dev/null +++ b/uebung04/chess/Rook.java @@ -0,0 +1,39 @@ +package chess; + +import static java.lang.Integer.signum; +import static java.lang.Math.abs; + +public class Rook extends Piece{ + public Rook(Color color, Board board, int row, int col) { + super(color, board, row, col); + } + + @Override + public char charRep() { + return getColor() == Color.white ? 'r' : 'R'; + } + + @Override + public String toString() { + return "" + getColor() + " rook at (" + getRow() + ", " + getCol() + ")"; + } + + @Override + public boolean canCapture(Piece other) { + if (getBoard() != other.getBoard() || getColor() == other.getColor()) + return false; + if (other.getRow() != getRow() && + other.getCol() != getCol()) + return false; + final int dr = signum(other.getRow() - getRow()); + final int dc = signum(other.getCol() - getCol()); + int r = getRow() + dr; + int c = getCol() + dc; + while (r != other.getRow() || c != other.getCol()) { + if (getBoard().pieceAt(r, c) != null) return false; + r += dr; + c += dc; + } + return true; + } +} diff --git a/uebung04/tournament/ByeGame.java b/uebung04/tournament/ByeGame.java new file mode 100644 index 0000000..1647206 --- /dev/null +++ b/uebung04/tournament/ByeGame.java @@ -0,0 +1,53 @@ +package tournament; + +import java.util.ArrayList; +import java.util.List; +import java.util.Arrays; + +public class ByeGame extends Game{ + private final String player1; + private final Game ref; + + ByeGame(String player1, Game ref){ + super(); + this.ref = ref; + this.player1 = player1; + } + + public Game getRef() { + return ref; + } + + @Override + public String getPlayer1() { + return player1; + } + + @Override + public String getPlayer2() { + return ref.getWinner(); + } + + @Override + public List getAllPlayers() { + List players = new ArrayList(); + players.add(player1); + players.addAll(ref.getAllPlayers()); + return players; + } + + + @Override + public List getAllGames() + { + List temp = new ArrayList(Arrays.asList(this.getId())); + temp.addAll(ref.getAllGames()); + return temp; + } + + @Override + public List getRemaningPlayers() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'getRemaningPlayers'"); + } +} diff --git a/uebung04/tournament/Game.java b/uebung04/tournament/Game.java new file mode 100644 index 0000000..48fb1c3 --- /dev/null +++ b/uebung04/tournament/Game.java @@ -0,0 +1,47 @@ +package tournament; + +import java.util.List; + +public abstract class Game { + private static int counter = 0; + private final int id; + //null nicht notwendig + private String winner = null; + + + protected Game() { + this.id = counter++; + } + + public int getId(){ + return this.id; + } + + public String getWinner(){ + return this.winner; + } + + public void setWinner(String winner) { + String player1 = getPlayer1(); + System.out.println("Player 1: " + player1); + String player2 = getPlayer2(); + System.out.println("Player 2: " + player2); + this.winner = this.winner == null && player1 != null && player2 != null && (winner == player1 || winner == player2) ? this.winner = winner : this.winner; + } + + public abstract String getPlayer1(); + + public abstract String getPlayer2(); + + public abstract List getAllPlayers(); + + public abstract List getRemaningPlayers(); + + public abstract List getAllGames(); + + public String toString(){ + return "Game: " + getId() + " Player: "+ getPlayer1()+ " vs Player: " + getPlayer2() + "Winner is: "+ getWinner(); + } + + +} diff --git a/uebung04/tournament/OrdinaryGame.java b/uebung04/tournament/OrdinaryGame.java new file mode 100644 index 0000000..1ba43e4 --- /dev/null +++ b/uebung04/tournament/OrdinaryGame.java @@ -0,0 +1,51 @@ +package tournament; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class OrdinaryGame extends Game{ + private Game Player1; + private Game Player2; + public OrdinaryGame(Game Player1, Game Player2) + { + this.Player1 = Player1; + this.Player2 = Player2; + } + @Override + public String getPlayer1() + { + return Player1.getWinner(); + } + @Override + public String getPlayer2() + { + return Player2.getWinner(); + } + @Override + public List getAllPlayers() + { + List temp = new ArrayList(); + temp.addAll(Player1.getAllPlayers()); + temp.addAll(Player2.getAllPlayers()); + return temp; + } + @Override + public List getRemaningPlayers() + { + if(this.getWinner() != null) + return new ArrayList<>(Arrays.asList(this.getWinner())); + List temp = new ArrayList(); + temp.addAll(Player1.getRemaningPlayers()); + temp.addAll(Player2.getRemaningPlayers()); + return temp; + } + @Override + public List getAllGames() + { + List temp = new ArrayList(Arrays.asList(this.getId())); + temp.addAll(Player1.getAllGames()); + temp.addAll(Player2.getAllGames()); + return temp; + } +} \ No newline at end of file diff --git a/uebung04/tournament/SeededGame.java b/uebung04/tournament/SeededGame.java new file mode 100644 index 0000000..c39f5c9 --- /dev/null +++ b/uebung04/tournament/SeededGame.java @@ -0,0 +1,51 @@ +package tournament; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class SeededGame extends Game{ + private String player1; + private String player2; + + public SeededGame(String player1, String player2) { + super(); + this.player1 = player1; + this.player2 = player2; + } + + @Override + public String getPlayer1() + { + return player1; + } + + @Override + public String getPlayer2() + { + return player2; + } + + @Override + public List getAllPlayers() + { + //return new ArrayList(Arrays.asList(player1, player2)); + return List.of(player1, player2); + } + + @Override + public List getRemaningPlayers() + { + if(this.getWinner() != null) + return new ArrayList<>(Arrays.asList(this.getWinner())); + List temp = new ArrayList(Arrays.asList(player1,player2)); + return temp; + } + @Override + public List getAllGames() + { + return List.of(this); + } +} + diff --git a/uebung04/tournament/Tournament.java b/uebung04/tournament/Tournament.java new file mode 100644 index 0000000..5375669 --- /dev/null +++ b/uebung04/tournament/Tournament.java @@ -0,0 +1,19 @@ +package tournament; + +import java.util.List; + +public class Tournament { + private final Game finale; + private final String name; + public Tournament(String name, Game finale) + { + this.finale = finale; + this.name = name; + } + + public List getAllPlayers() {return finale.getAllPlayers();} + + public List getAllGames() {return finale.getAllGames();} + + public List getRemainingPlayers() {return finale.getRemaningPlayers();} +}