diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-03-09 20:29:14 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-03-09 20:29:14 +0100 |
| commit | e2c067eb64ab3825351e928adc4ae30b25465292 (patch) | |
| tree | 34bfb4c9734dbe4b2805a2789f1f792cc5a8e657 | |
| parent | 09ad68845a77ddc04e9f1ea4f58625646ddeb059 (diff) | |
| download | tdde30-e2c067eb64ab3825351e928adc4ae30b25465292.tar.gz | |
redovisning
| -rw-r--r-- | src/se/liu/gusso230/tetris/BoardInterface.java | 1 | ||||
| -rw-r--r-- | src/se/liu/gusso230/tetris/BoardListener.java | 1 | ||||
| -rw-r--r-- | src/se/liu/gusso230/tetris/BoardTester.java | 2 | ||||
| -rw-r--r-- | src/se/liu/gusso230/tetris/Heavy.java | 5 | ||||
| -rw-r--r-- | src/se/liu/gusso230/tetris/TetrisComponent.java | 41 | ||||
| -rw-r--r-- | src/se/liu/gusso230/tetris/TetrisViewer.java | 7 |
6 files changed, 33 insertions, 24 deletions
diff --git a/src/se/liu/gusso230/tetris/BoardInterface.java b/src/se/liu/gusso230/tetris/BoardInterface.java index 8f9ec0a..76d4964 100644 --- a/src/se/liu/gusso230/tetris/BoardInterface.java +++ b/src/se/liu/gusso230/tetris/BoardInterface.java @@ -1,5 +1,6 @@ package se.liu.gusso230.tetris; +// Used by Board to prompt the user in some way. public interface BoardInterface { boolean promptUserYesNo(String prompt); String promptUserString(String prompt); diff --git a/src/se/liu/gusso230/tetris/BoardListener.java b/src/se/liu/gusso230/tetris/BoardListener.java index 7ed7380..34d8352 100644 --- a/src/se/liu/gusso230/tetris/BoardListener.java +++ b/src/se/liu/gusso230/tetris/BoardListener.java @@ -2,5 +2,4 @@ package se.liu.gusso230.tetris; public interface BoardListener { public void boardChanged(); - //public void onGameOver(); //TODO } diff --git a/src/se/liu/gusso230/tetris/BoardTester.java b/src/se/liu/gusso230/tetris/BoardTester.java index 82c225e..8c8dacd 100644 --- a/src/se/liu/gusso230/tetris/BoardTester.java +++ b/src/se/liu/gusso230/tetris/BoardTester.java @@ -7,7 +7,7 @@ public class BoardTester implements BoardInterface { HighscoreList highscores = new HighscoreList(); Board board = new Board(10, 20, highscores, new BoardTester()); - TetrisViewer viewer = new TetrisViewer(board); + TetrisViewer viewer = new TetrisViewer(board, ClassLoader.getSystemResource("images/hello_world.png")); viewer.show(); board.getTimer().start(); diff --git a/src/se/liu/gusso230/tetris/Heavy.java b/src/se/liu/gusso230/tetris/Heavy.java index 85666b6..519d812 100644 --- a/src/se/liu/gusso230/tetris/Heavy.java +++ b/src/se/liu/gusso230/tetris/Heavy.java @@ -1,9 +1,9 @@ package se.liu.gusso230.tetris; -public class Heavy implements FallHandler { +public class Heavy extends DefaultFallHandler { @Override public boolean hasFallingCollision(final Board board, final int dx, final int dy) { if (dx != 0) { - return new DefaultFallHandler().hasFallingCollision(board, dx, dy); //inget new + return super.hasFallingCollision(board, dx, dy); } for (Point point: board.getFalling().getPoints()) { @@ -27,6 +27,7 @@ public class Heavy implements FallHandler { } } + // move points for (Point point: board.getFalling().getPoints()) { int x = board.getFallingX() + point.getX(); int y = board.getFallingY() + point.getY(); diff --git a/src/se/liu/gusso230/tetris/TetrisComponent.java b/src/se/liu/gusso230/tetris/TetrisComponent.java index f5720f1..b3d0884 100644 --- a/src/se/liu/gusso230/tetris/TetrisComponent.java +++ b/src/se/liu/gusso230/tetris/TetrisComponent.java @@ -29,33 +29,31 @@ public class TetrisComponent extends JComponent implements BoardListener { this.getInputMap().put(KeyStroke.getKeyStroke('q'), "fallthrough"); this.getInputMap().put(KeyStroke.getKeyStroke('e'), "heavy"); - this.getActionMap().put("moveLeft", new MoveAction(Direction.LEFT)); - this.getActionMap().put("moveRight", new MoveAction(Direction.RIGHT)); - this.getActionMap().put("rotateLeft", new RotateAction(Direction.LEFT)); - this.getActionMap().put("rotateRight", new RotateAction(Direction.RIGHT)); + this.getActionMap().put("moveLeft", new MoveAction(MoveActionType.MOVE, Direction.LEFT)); + this.getActionMap().put("moveRight", new MoveAction(MoveActionType.MOVE, Direction.RIGHT)); + this.getActionMap().put("rotateLeft", new MoveAction(MoveActionType.ROTATE, Direction.LEFT)); + this.getActionMap().put("rotateRight", new MoveAction(MoveActionType.ROTATE, Direction.RIGHT)); this.getActionMap().put("fallthrough", new PowerUpAction(new Fallthrough())); this.getActionMap().put("heavy", new PowerUpAction(new Heavy())); } private class MoveAction extends AbstractAction { + private MoveActionType type; private Direction dir; - private MoveAction(Direction dir) { + private MoveAction(MoveActionType type, Direction dir) { + this.type = type; this.dir = dir; } @Override public void actionPerformed(final ActionEvent actionEvent) { - board.move(dir); - } - } - //TODO join move and rotate - private class RotateAction extends AbstractAction { - private Direction dir; - private RotateAction(Direction dir) { - this.dir = dir; - } - - @Override public void actionPerformed(final ActionEvent actionEvent) { - board.rotate(dir); + switch (type) { + case MOVE: + board.move(dir); + break; + case ROTATE: + board.rotate(dir); + break; + } } } @@ -105,6 +103,10 @@ public class TetrisComponent extends JComponent implements BoardListener { requestFocus(); } + @Override public void onGameOver() { + + } + public Color getColor(int x, int y) { return SQUARE_TYPE_COLORS.get(board.getSquareAt(x, y, true)); } @@ -129,4 +131,9 @@ public class TetrisComponent extends JComponent implements BoardListener { map.put(SquareType.L, Color.PINK); return map; } + + private enum MoveActionType { + MOVE, + ROTATE, + } } diff --git a/src/se/liu/gusso230/tetris/TetrisViewer.java b/src/se/liu/gusso230/tetris/TetrisViewer.java index fb824f9..0406c7c 100644 --- a/src/se/liu/gusso230/tetris/TetrisViewer.java +++ b/src/se/liu/gusso230/tetris/TetrisViewer.java @@ -3,6 +3,7 @@ package se.liu.gusso230.tetris; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; +import java.net.URL; public class TetrisViewer { private JMenuBar menuBar; @@ -10,12 +11,11 @@ public class TetrisViewer { private TetrisComponent tetrisComponent; private Board board; - public TetrisViewer(final Board board) { + public TetrisViewer(final Board board, URL image) { menuBar = setUpMenuBar(); - imageComponent = new ImageComponent(ClassLoader.getSystemResource("images/hello_world.png")); //TODO arg + imageComponent = new ImageComponent(image); tetrisComponent = new TetrisComponent(board); this.board = board; - board.addListener(tetrisComponent); //TODO move } private JMenuBar setUpMenuBar() { @@ -67,6 +67,7 @@ public class TetrisViewer { frame.remove(imageComponent); frame.add(tetrisComponent, BorderLayout.CENTER); frame.pack(); + board.addListener(tetrisComponent); update(); } |
