From 4c52aee4ac9e4503384465078f515989cca497fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 8 Feb 2021 13:00:32 +0100 Subject: 4.5 --- src/se/liu/gusso230/tetris/Board.java | 12 ++++++++++++ src/se/liu/gusso230/tetris/Direction.java | 6 ++++++ src/se/liu/gusso230/tetris/TetrisComponent.java | 20 ++++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 src/se/liu/gusso230/tetris/Direction.java (limited to 'src') 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) { -- cgit v1.2.1