Uhr eingebunden und Ergebnisanzeige hinzugefügt
parent
e709659e45
commit
392d704729
|
|
@ -4,6 +4,7 @@ import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.github.bhlangonijr.chesslib.Board;
|
import com.github.bhlangonijr.chesslib.Board;
|
||||||
|
import com.github.bhlangonijr.chesslib.Side;
|
||||||
import com.github.bhlangonijr.chesslib.Square;
|
import com.github.bhlangonijr.chesslib.Square;
|
||||||
import com.github.bhlangonijr.chesslib.move.Move;
|
import com.github.bhlangonijr.chesslib.move.Move;
|
||||||
import com.github.bhlangonijr.chesslib.move.MoveList;
|
import com.github.bhlangonijr.chesslib.move.MoveList;
|
||||||
|
|
@ -18,8 +19,7 @@ import de.mannheim.th.chess.utl.Clock;
|
||||||
public class Game {
|
public class Game {
|
||||||
|
|
||||||
private Board board;
|
private Board board;
|
||||||
private Clock clockPlayer1;
|
private Clock clock;
|
||||||
private Clock clockPlayer2;
|
|
||||||
|
|
||||||
private MoveList movelist;
|
private MoveList movelist;
|
||||||
|
|
||||||
|
|
@ -31,8 +31,8 @@ public class Game {
|
||||||
|
|
||||||
this.movelist = new MoveList();
|
this.movelist = new MoveList();
|
||||||
|
|
||||||
// this.clockPlayer1 = new Clock();
|
clock = new Clock("blitz");
|
||||||
// this.clockPlayer2 = new Clock();
|
clock.start();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -77,6 +77,7 @@ public class Game {
|
||||||
public void playMove(Move move) {
|
public void playMove(Move move) {
|
||||||
this.board.doMove(move);
|
this.board.doMove(move);
|
||||||
this.movelist.add(move);
|
this.movelist.add(move);
|
||||||
|
clock.pressClock();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -89,6 +90,22 @@ public class Game {
|
||||||
Move move = new Move(origin, desination);
|
Move move = new Move(origin, desination);
|
||||||
this.board.doMove(move);
|
this.board.doMove(move);
|
||||||
this.movelist.add(move);
|
this.movelist.add(move);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isMate() {
|
||||||
|
return board.isMated();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDraw() {
|
||||||
|
return board.isDraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getActivePlayer() {
|
||||||
|
if (board.getSideToMove() == Side.WHITE) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -105,6 +122,10 @@ public class Game {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void stopClock() {
|
||||||
|
clock.endGame();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves a list of all legal moveable squares from the current board state.
|
* Retrieves a list of all legal moveable squares from the current board state.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import com.github.bhlangonijr.chesslib.Square;
|
import com.github.bhlangonijr.chesslib.Square;
|
||||||
|
import com.github.bhlangonijr.chesslib.game.Player;
|
||||||
import com.github.bhlangonijr.chesslib.move.Move;
|
import com.github.bhlangonijr.chesslib.move.Move;
|
||||||
|
|
||||||
import de.mannheim.th.chess.App;
|
import de.mannheim.th.chess.App;
|
||||||
|
|
@ -16,8 +17,12 @@ import javax.swing.BorderFactory;
|
||||||
import javax.swing.ImageIcon;
|
import javax.swing.ImageIcon;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JSplitPane;
|
import javax.swing.JSplitPane;
|
||||||
|
import javax.swing.JTextArea;
|
||||||
|
import javax.swing.JTextField;
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Cursor;
|
import java.awt.Cursor;
|
||||||
|
|
@ -49,7 +54,7 @@ public class SpielFrame extends JFrame {
|
||||||
private Square selectedSquare;
|
private Square selectedSquare;
|
||||||
|
|
||||||
enum BoardMode {
|
enum BoardMode {
|
||||||
normal, pieceSelected,
|
normal, pieceSelected, finished
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -223,6 +228,8 @@ public class SpielFrame extends JFrame {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Switches the button actions depending on the boardmode
|
* Switches the button actions depending on the boardmode
|
||||||
*/
|
*/
|
||||||
|
|
@ -290,6 +297,15 @@ public class SpielFrame extends JFrame {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
game.playMove(move);
|
game.playMove(move);
|
||||||
|
if (game.isDraw()) {
|
||||||
|
game.stopClock();
|
||||||
|
mode = BoardMode.finished;
|
||||||
|
showDraw();
|
||||||
|
} else if (game.isMate()) {
|
||||||
|
game.stopClock();
|
||||||
|
mode = BoardMode.finished;
|
||||||
|
showWin(game.getActivePlayer());
|
||||||
|
}
|
||||||
mode = BoardMode.normal;
|
mode = BoardMode.normal;
|
||||||
setCursor(null);
|
setCursor(null);
|
||||||
erstelleBrett();
|
erstelleBrett();
|
||||||
|
|
@ -298,6 +314,10 @@ public class SpielFrame extends JFrame {
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case finished:
|
||||||
|
clearButtons();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -308,4 +328,31 @@ public class SpielFrame extends JFrame {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void showDraw() {
|
||||||
|
JFrame frame = new JFrame("Result");
|
||||||
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
frame.setSize(300, 150);
|
||||||
|
frame.setLayout(null);
|
||||||
|
|
||||||
|
JLabel jl = new JLabel("1/2 - 1/2");
|
||||||
|
jl.setBounds(50, 30, 200, 25);
|
||||||
|
jl.setFont(new Font("Tahoma", Font.BOLD, 20));
|
||||||
|
frame.add(jl);
|
||||||
|
frame.setVisible(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showWin(int player) {
|
||||||
|
JFrame frame = new JFrame("Result");
|
||||||
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
frame.setSize(300, 150);
|
||||||
|
frame.setLayout(null);
|
||||||
|
|
||||||
|
JLabel jl = new JLabel(String.format("%d - %d", player / 2, player % 2));
|
||||||
|
jl.setBounds(50, 30, 200, 25);
|
||||||
|
jl.setFont(new Font("Tahoma", Font.BOLD, 20));
|
||||||
|
frame.add(jl);
|
||||||
|
frame.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue