feat: display score & game over, code cleanup

This commit is contained in:
Martin Prokoph
2025-06-28 21:30:12 +02:00
parent 7aa1b0e73c
commit a906bc5381
6 changed files with 149 additions and 77 deletions

View File

@@ -1,17 +1,20 @@
package eu.midnightdust.yaytris;
import eu.midnightdust.yaytris.game.Space;
import eu.midnightdust.yaytris.ui.ScoreMenu;
import eu.midnightdust.yaytris.ui.TetrisUI;
import javax.swing.*;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
public class Tetris {
public static final Random random = new Random();
public static Space space;
public static Timer timer;
public static TetrisUI ui;
private static Space space;
private static Timer timer;
private static TetrisUI ui;
private static TimerTask gravityTask;
public static void main(String[] args) {
try {
@@ -23,4 +26,35 @@ public class Tetris {
space = new Space();
ui = new TetrisUI();
}
public static TetrisUI getUi() {
return ui;
}
public static Space getSpace() {
return space;
}
public static void resetSpace() {
space = new Space();
}
public static void startGame() {
space.spawnTetromino();
gravityTask = new TimerTask() {
@Override
public void run() {
if (space.getCurrentTetromino() != null) {
space.getCurrentTetromino().fall(1);
ui.getGamePanel().repaint();
}
}
};
timer.scheduleAtFixedRate(gravityTask, 1, Settings.difficulty.getTimerPeriod());
}
public static void stopGame() {
gravityTask.cancel();
if (ui.getMenuPanel() instanceof ScoreMenu) ((ScoreMenu) Tetris.ui.getMenuPanel()).gameOver();
ui.transferFocus();
}
}