diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-02-08 13:00:32 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-02-08 13:00:32 +0100 |
| commit | 4c52aee4ac9e4503384465078f515989cca497fd (patch) | |
| tree | 352bcd1804759004f498b93abf0d362e129fff1f | |
| parent | a5c082375721faf4bbd869e6d04255e96b18764c (diff) | |
| download | tdde30-4c52aee4ac9e4503384465078f515989cca497fd.tar.gz | |
4.5
| -rw-r--r-- | src/se/liu/gusso230/tetris/Board.java | 12 | ||||
| -rw-r--r-- | src/se/liu/gusso230/tetris/Direction.java | 6 | ||||
| -rw-r--r-- | src/se/liu/gusso230/tetris/TetrisComponent.java | 20 |
3 files changed, 38 insertions, 0 deletions
diff --git a/src/se/liu/gusso230/tetris/Board.java b/src/se/liu/gusso230/tetris/Board.java index 141cacf..8feed1f 100644 --- a/src/se/liu/gusso230/tetris/Board.java +++ b/src/se/liu/gusso230/tetris/Board.java @@ -52,6 +52,18 @@ public class Board { notifyListeners(); } + public void move(Direction dir) { + switch (dir) { + case LEFT: + fallingX -= 1; + break; + case RIGHT: + fallingX += 1; + break; + } + notifyListeners(); + } + public int getWidth() { return width; } diff --git a/src/se/liu/gusso230/tetris/Direction.java b/src/se/liu/gusso230/tetris/Direction.java new file mode 100644 index 0000000..355a3e8 --- /dev/null +++ b/src/se/liu/gusso230/tetris/Direction.java @@ -0,0 +1,6 @@ +package se.liu.gusso230.tetris; + +public enum Direction { + LEFT, + RIGHT, +} diff --git a/src/se/liu/gusso230/tetris/TetrisComponent.java b/src/se/liu/gusso230/tetris/TetrisComponent.java index fcc6834..0773ae4 100644 --- a/src/se/liu/gusso230/tetris/TetrisComponent.java +++ b/src/se/liu/gusso230/tetris/TetrisComponent.java @@ -2,6 +2,7 @@ package se.liu.gusso230.tetris; import javax.swing.*; import java.awt.*; +import java.awt.event.ActionEvent; import java.util.EnumMap; public class TetrisComponent extends JComponent implements BoardListener { @@ -11,8 +12,27 @@ public class TetrisComponent extends JComponent implements BoardListener { private Board board; + private class MoveAction extends AbstractAction { + private Direction dir; + private MoveAction(Direction dir) { + this.dir = dir; + } + + @Override public void actionPerformed(final ActionEvent actionEvent) { + board.move(dir); + } + } + public TetrisComponent(final Board board) { this.board = board; + + this.getInputMap().put(KeyStroke.getKeyStroke('a'), "moveLeft"); + this.getInputMap().put(KeyStroke.getKeyStroke("LEFT"), "moveLeft"); + this.getInputMap().put(KeyStroke.getKeyStroke('d'), "moveRight"); + this.getInputMap().put(KeyStroke.getKeyStroke("RIGHT"), "moveRight"); + + this.getActionMap().put("moveLeft", new MoveAction(Direction.LEFT)); + this.getActionMap().put("moveRight", new MoveAction(Direction.RIGHT)); } @Override protected void paintComponent(final Graphics g) { |
