From f81a3cb569944f9fa4e6cb008da432f35da7dfdb Mon Sep 17 00:00:00 2001 From: EngIcaro Date: Sat, 4 Mar 2017 16:22:51 -0300 Subject: [PATCH] Update Game2048.java Code Refactoring --- src/com/bulenkov/game2048/Game2048.java | 45 +++++++++++++------------ 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/src/com/bulenkov/game2048/Game2048.java b/src/com/bulenkov/game2048/Game2048.java index 63e69cb..5017d65 100644 --- a/src/com/bulenkov/game2048/Game2048.java +++ b/src/com/bulenkov/game2048/Game2048.java @@ -44,13 +44,12 @@ public Game2048() { addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { - if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { + if (e.getKeyCode() == KeyEvent.VK_ESCAPE) resetGame(); - } - if (!canMove()) { + + if (!canMove()) myLose = true; - } - + if (!myWin && !myLose) { switch (e.getKeyCode()) { case KeyEvent.VK_LEFT: @@ -154,30 +153,34 @@ private boolean isFull() { boolean canMove() { if (!isFull()) { return true; - } - for (int x = 0; x < 4; x++) { - for (int y = 0; y < 4; y++) { - Tile t = tileAt(x, y); - if ((x < 3 && t.value == tileAt(x + 1, y).value) - || ((y < 3) && t.value == tileAt(x, y + 1).value)) { - return true; + } + + for (int y = 0, x = 0; y < 4; y++) { + Tile t = tileAt(x, y); + if ((x < 3 && t.value == tileAt(x + 1, y).value) + || ((y < 3) && t.value == tileAt(x, y + 1).value)) { + return true; + } + if((y == 3) && (x < 3)){ + x++; + y=0; } } - } + return false; + } private boolean compare(Tile[] line1, Tile[] line2) { - if (line1 == line2) { + if (line1 == line2) return true; - } else if (line1.length != line2.length) { + else if (line1.length != line2.length) return false; - } + for (int i = 0; i < line1.length; i++) { - if (line1[i].value != line2[i].value) { + if (line1[i].value != line2[i].value) return false; - } } return true; } @@ -185,11 +188,11 @@ private boolean compare(Tile[] line1, Tile[] line2) { private Tile[] rotate(int angle) { Tile[] newTiles = new Tile[4 * 4]; int offsetX = 3, offsetY = 3; - if (angle == 90) { + if (angle == 90) offsetY = 0; - } else if (angle == 270) { + else if (angle == 270) offsetX = 0; - } + double rad = Math.toRadians(angle); int cos = (int) Math.cos(rad);