diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-02-02 18:04:13 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-02-08 08:51:33 +0100 |
| commit | 64d9b21780d4a3b760ff699611c16781f6b0dbab (patch) | |
| tree | 845d9efbd8dcbac50cc0664b8e3f11070fbab697 | |
| parent | 433f21dea0626f3744341a468efd99857a7342dc (diff) | |
| download | tdde30-64d9b21780d4a3b760ff699611c16781f6b0dbab.tar.gz | |
4.3
| -rw-r--r-- | src/se/liu/gusso230/tetris/Board.java | 19 | ||||
| -rw-r--r-- | src/se/liu/gusso230/tetris/BoardListener.java | 5 | ||||
| -rw-r--r-- | src/se/liu/gusso230/tetris/BoardTester.java | 1 | ||||
| -rw-r--r-- | src/se/liu/gusso230/tetris/TetrisComponent.java | 6 | ||||
| -rw-r--r-- | src/se/liu/gusso230/tetris/TetrisViewer.java | 1 |
5 files changed, 30 insertions, 2 deletions
diff --git a/src/se/liu/gusso230/tetris/Board.java b/src/se/liu/gusso230/tetris/Board.java index 7a70673..ee791ac 100644 --- a/src/se/liu/gusso230/tetris/Board.java +++ b/src/se/liu/gusso230/tetris/Board.java @@ -1,5 +1,7 @@ package se.liu.gusso230.tetris; +import java.util.ArrayList; +import java.util.List; import java.util.Random; public class Board { @@ -11,6 +13,8 @@ public class Board { private int fallingX; private int fallingY; + private List<BoardListener> boardListeners; + private final static Random RND = new Random(); public static void main(String[] args) { @@ -26,6 +30,7 @@ public class Board { squares[y][x] = SquareType.EMPTY; } } + boardListeners = new ArrayList<>(); } public int getWidth() { @@ -58,14 +63,17 @@ public class Board { public void setFalling(final Poly falling) { this.falling = falling; + notifyListeners(); } public void setFallingX(final int fallingX) { this.fallingX = fallingX; + notifyListeners(); } public void setFallingY(final int fallingY) { this.fallingY = fallingY; + notifyListeners(); } /** @@ -79,5 +87,16 @@ public class Board { squares[y][x] = values[RND.nextInt(numValues)]; } } + notifyListeners(); + } + + public void addListener(BoardListener bl) { + boardListeners.add(bl); + } + + private void notifyListeners() { + for (BoardListener bl: boardListeners) { + bl.boardChanged(); + } } } diff --git a/src/se/liu/gusso230/tetris/BoardListener.java b/src/se/liu/gusso230/tetris/BoardListener.java new file mode 100644 index 0000000..34d8352 --- /dev/null +++ b/src/se/liu/gusso230/tetris/BoardListener.java @@ -0,0 +1,5 @@ +package se.liu.gusso230.tetris; + +public interface BoardListener { + public void boardChanged(); +} diff --git a/src/se/liu/gusso230/tetris/BoardTester.java b/src/se/liu/gusso230/tetris/BoardTester.java index 0ee7f2e..7d7770c 100644 --- a/src/se/liu/gusso230/tetris/BoardTester.java +++ b/src/se/liu/gusso230/tetris/BoardTester.java @@ -17,7 +17,6 @@ public class BoardTester { final Action doOneStep = new AbstractAction() { @Override public void actionPerformed(final ActionEvent actionEvent) { board.randomize(); - viewer.update(); } }; diff --git a/src/se/liu/gusso230/tetris/TetrisComponent.java b/src/se/liu/gusso230/tetris/TetrisComponent.java index cecce16..fcc6834 100644 --- a/src/se/liu/gusso230/tetris/TetrisComponent.java +++ b/src/se/liu/gusso230/tetris/TetrisComponent.java @@ -4,7 +4,7 @@ import javax.swing.*; import java.awt.*; import java.util.EnumMap; -public class TetrisComponent extends JComponent { +public class TetrisComponent extends JComponent implements BoardListener { private static final int TILE_SIZE = 28; private static final int TILE_GAP = 4; private static final EnumMap<SquareType, Color> SQUARE_TYPE_COLORS = getDefaultColors(); @@ -31,6 +31,10 @@ public class TetrisComponent extends JComponent { return SQUARE_TYPE_COLORS.get(board.getSquareAt(x, y)); } + @Override public void boardChanged() { + repaint(); + } + public Dimension getPreferredSize() { return new Dimension(board.getWidth(), board.getHeight()); } diff --git a/src/se/liu/gusso230/tetris/TetrisViewer.java b/src/se/liu/gusso230/tetris/TetrisViewer.java index a386ee1..c1e6098 100644 --- a/src/se/liu/gusso230/tetris/TetrisViewer.java +++ b/src/se/liu/gusso230/tetris/TetrisViewer.java @@ -8,6 +8,7 @@ public class TetrisViewer { public TetrisViewer(Board board) { tetrisComponent = new TetrisComponent(board); + board.addListener(tetrisComponent); } public void show() { |
