From b2af45300e3e580e72b6a134c750a9c0042cf43a Mon Sep 17 00:00:00 2001 From: Christopher Guerrero Date: Thu, 10 Oct 2024 15:27:12 -0400 Subject: [PATCH] Fixed 180 degree turn --- src/com/zetcode/Board.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/com/zetcode/Board.java b/src/com/zetcode/Board.java index e81c4e9..d10eeac 100644 --- a/src/com/zetcode/Board.java +++ b/src/com/zetcode/Board.java @@ -36,6 +36,7 @@ public class Board extends JPanel implements ActionListener { private boolean upDirection = false; private boolean downDirection = false; private boolean inGame = true; + private boolean onSameTile = false; private Timer timer; private Image ball; @@ -140,7 +141,7 @@ private void move() { x[z] = x[(z - 1)]; y[z] = y[(z - 1)]; } - + if (leftDirection) { x[0] -= DOT_SIZE; } @@ -155,7 +156,8 @@ private void move() { if (downDirection) { y[0] += DOT_SIZE; - } + } + onSameTile = false; } private void checkCollision() { @@ -217,29 +219,34 @@ public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); - if ((key == KeyEvent.VK_LEFT) && (!rightDirection)) { + if ((key == KeyEvent.VK_LEFT) && (!rightDirection) && (!onSameTile)) { leftDirection = true; upDirection = false; downDirection = false; + onSameTile = true; } - if ((key == KeyEvent.VK_RIGHT) && (!leftDirection)) { + if ((key == KeyEvent.VK_RIGHT) && (!leftDirection) && (!onSameTile)) { rightDirection = true; upDirection = false; downDirection = false; + onSameTile = true; } - if ((key == KeyEvent.VK_UP) && (!downDirection)) { + if ((key == KeyEvent.VK_UP) && (!downDirection) && (!onSameTile)) { upDirection = true; rightDirection = false; leftDirection = false; + onSameTile = true; } - if ((key == KeyEvent.VK_DOWN) && (!upDirection)) { + if ((key == KeyEvent.VK_DOWN) && (!upDirection) && (!onSameTile)) { downDirection = true; rightDirection = false; leftDirection = false; + onSameTile = true; } } } } +