fix timer
This commit is contained in:
parent
6bb57c1eb8
commit
ab467ea11e
|
|
@ -0,0 +1,9 @@
|
|||
BR, , ,BK, ,BR, ,
|
||||
BP,WP,BP, , ,BP,BP,BP
|
||||
, , , ,WP, , ,
|
||||
, , , , , , ,
|
||||
, , , , , , ,
|
||||
, , , , , , ,
|
||||
WP,WP,WP, , ,WP,WP,WP
|
||||
WR,WN,WB,WQ,WK,WB,WN,WR
|
||||
3W
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
BR,BN,BB,BQ,BK,BB,BN,BR
|
||||
,BP,BP,BP,BP,BP,BP,BP
|
||||
, , , , , , ,
|
||||
BP, , ,WP, , , ,
|
||||
, , , , , , ,
|
||||
, , , , , , ,
|
||||
WP,WP,WP, ,WP,WP,WP,WP
|
||||
WR,WN,WB,WQ,WK,WB,WN,WR
|
||||
4B
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
, ,BB,BQ,BK, , ,BR
|
||||
BP,WP,BP,BP, ,BP,BP,BP
|
||||
, ,BN,BB, ,BP, ,
|
||||
, , , , , , ,
|
||||
, , , , , , ,
|
||||
, , , , , , ,
|
||||
, , , , , , ,
|
||||
, , ,WK, , , ,
|
||||
3W
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 41 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 954 B |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,68 @@
|
|||
package windowInterface;
|
||||
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.Timer;
|
||||
|
||||
public class TimerManager {
|
||||
private int whiteSeconds = 300;
|
||||
private int blackSeconds = 300;
|
||||
private boolean whiteTurn = true;
|
||||
private Timer timer;
|
||||
private Runnable onTimeout;
|
||||
private JLabel whiteLabel;
|
||||
private JLabel blackLabel;
|
||||
|
||||
public TimerManager(JLabel whiteLabel, JLabel blackLabel, Runnable onTimeout, int time) {
|
||||
this.whiteLabel = whiteLabel;
|
||||
this.blackLabel = blackLabel;
|
||||
this.onTimeout = onTimeout;
|
||||
this.whiteSeconds = time;
|
||||
this.blackSeconds = time;
|
||||
|
||||
timer = new Timer(1000, e -> tick());
|
||||
}
|
||||
|
||||
public void start(boolean whiteStarts) {
|
||||
this.whiteTurn = whiteStarts;
|
||||
timer.start();
|
||||
}
|
||||
|
||||
public void switchTurn() {
|
||||
whiteTurn = !whiteTurn;
|
||||
}
|
||||
|
||||
private void tick() {
|
||||
if (whiteTurn) {
|
||||
whiteSeconds--;
|
||||
updateLabel(whiteLabel, whiteSeconds);
|
||||
if (whiteSeconds <= 0) timeout("White");
|
||||
} else {
|
||||
blackSeconds--;
|
||||
updateLabel(blackLabel, blackSeconds);
|
||||
if (blackSeconds <= 0) timeout("Black");
|
||||
}
|
||||
}
|
||||
|
||||
private void updateLabel(JLabel label, int seconds) {
|
||||
int mins = seconds / 60;
|
||||
int secs = seconds % 60;
|
||||
label.setText(String.format("%s: %02d:%02d", label == whiteLabel ? "White" : "Black", mins, secs));
|
||||
}
|
||||
|
||||
private void timeout(String player) {
|
||||
timer.stop();
|
||||
onTimeout.run(); // you define what happens on timeout
|
||||
JOptionPane.showMessageDialog(null, player + " ran out of time! Game over.");
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
timer.stop();
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
updateLabel(whiteLabel, whiteSeconds);
|
||||
updateLabel(blackLabel, blackSeconds);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue