From 81041f30fb9f66dbdd482ac6542dee5249232175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Tue, 2 Mar 2021 09:56:21 +0100 Subject: pause --- src/se/liu/gusso230/tetris/Board.java | 8 ++++++-- src/se/liu/gusso230/tetris/TetrisViewer.java | 19 +++++++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/se/liu/gusso230/tetris/Board.java b/src/se/liu/gusso230/tetris/Board.java index 311d736..1486d7b 100644 --- a/src/se/liu/gusso230/tetris/Board.java +++ b/src/se/liu/gusso230/tetris/Board.java @@ -17,6 +17,7 @@ public class Board { } private GameState state = GameState.RUNNING; + private boolean paused = false; private SquareType[][] squares; private int width; private int height; @@ -54,8 +55,7 @@ public class Board { } public void tick() { - if (state == GameState.RUNNING) { - gameOver(); + if (state == GameState.RUNNING && !paused) { if (falling == null) { createFalling(); } else { @@ -282,6 +282,10 @@ public class Board { this.state = state; } + public void togglePaused() { + paused = !paused; + } + /** * Randomize all squares inside this board. */ diff --git a/src/se/liu/gusso230/tetris/TetrisViewer.java b/src/se/liu/gusso230/tetris/TetrisViewer.java index 369991e..3ba6e0f 100644 --- a/src/se/liu/gusso230/tetris/TetrisViewer.java +++ b/src/se/liu/gusso230/tetris/TetrisViewer.java @@ -8,10 +8,13 @@ public class TetrisViewer { private JMenuBar menuBar; private ImageComponent imageComponent; private TetrisComponent tetrisComponent; + private Board board; - public TetrisViewer(Board board) { + public TetrisViewer(final Board board) { + menuBar = setupMenuBar(); imageComponent = new ImageComponent("images/hello_world.png"); tetrisComponent = new TetrisComponent(board); + this.board = board; board.addListener(tetrisComponent); } @@ -34,12 +37,24 @@ public class TetrisViewer { }; quit.addActionListener(quitAction); menuBar.add(file); + + final JMenu edit = new JMenu("Edit"); + final JMenuItem pause = new JMenuItem("Pause"); + edit.add(pause); + final Action pauseAction = new AbstractAction() { + @Override public void actionPerformed(final ActionEvent actionEvent) { + board.togglePaused(); + } + }; + pause.addActionListener(pauseAction); + menuBar.add(edit); + return menuBar; } public void show() { JFrame frame = new JFrame("Tetris"); - frame.setJMenuBar(setupMenuBar()); + frame.setJMenuBar(menuBar); frame.setLayout(new BorderLayout()); frame.setVisible(true); -- cgit v1.2.1