diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..c5f3f6b
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "java.configuration.updateBuildConfiguration": "interactive"
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..231652f
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,23 @@
+
+ 4.0.0
+ com.zetcode
+ pacman
+ jar
+ 1.0-SNAPSHOT
+ pacman
+ http://maven.apache.org
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.9.2
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ 5.9.2
+
+
+
diff --git a/src/com/zetcode/Board.java b/src/main/java/com/zetcode/Board.java
similarity index 82%
rename from src/com/zetcode/Board.java
rename to src/main/java/com/zetcode/Board.java
index 7d0018d..3841d55 100644
--- a/src/com/zetcode/Board.java
+++ b/src/main/java/com/zetcode/Board.java
@@ -56,21 +56,21 @@ public class Board extends JPanel implements ActionListener {
private int req_dx, req_dy, view_dx, view_dy;
private final short levelData[] = {
- 19, 26, 26, 26, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 22,
- 21, 0, 0, 0, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 20,
- 21, 0, 0, 0, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 20,
- 21, 0, 0, 0, 17, 16, 16, 24, 16, 16, 16, 16, 16, 16, 20,
- 17, 18, 18, 18, 16, 16, 20, 0, 17, 16, 16, 16, 16, 16, 20,
- 17, 16, 16, 16, 16, 16, 20, 0, 17, 16, 16, 16, 16, 24, 20,
- 25, 16, 16, 16, 24, 24, 28, 0, 25, 24, 24, 16, 20, 0, 21,
- 1, 17, 16, 20, 0, 0, 0, 0, 0, 0, 0, 17, 20, 0, 21,
- 1, 17, 16, 16, 18, 18, 22, 0, 19, 18, 18, 16, 20, 0, 21,
- 1, 17, 16, 16, 16, 16, 20, 0, 17, 16, 16, 16, 20, 0, 21,
- 1, 17, 16, 16, 16, 16, 20, 0, 17, 16, 16, 16, 20, 0, 21,
- 1, 17, 16, 16, 16, 16, 16, 18, 16, 16, 16, 16, 20, 0, 21,
- 1, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 20, 0, 21,
- 1, 25, 24, 24, 24, 24, 24, 24, 24, 24, 16, 16, 16, 18, 20,
- 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 25, 24, 24, 24, 28
+ 19, 26, 26, 26, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 22,
+ 21, 0, 0, 0, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 20,
+ 21, 0, 0, 0, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 20,
+ 21, 0, 0, 0, 17, 16, 16, 24, 16, 16, 16, 16, 16, 16, 20,
+ 17, 18, 18, 18, 16, 16, 20, 0, 17, 16, 16, 16, 16, 16, 20,
+ 17, 16, 16, 16, 16, 16, 20, 0, 17, 16, 16, 16, 16, 24, 20,
+ 25, 16, 16, 16, 24, 24, 28, 0, 25, 24, 24, 16, 20, 0, 21,
+ 1, 17, 16, 20, 0, 0, 0, 0, 0, 0, 0, 17, 20, 0, 21,
+ 1, 17, 16, 16, 18, 18, 22, 0, 19, 18, 18, 16, 20, 0, 21,
+ 1, 17, 16, 16, 16, 16, 20, 0, 17, 16, 16, 16, 20, 0, 21,
+ 1, 17, 16, 16, 16, 16, 20, 0, 17, 16, 16, 16, 20, 0, 21,
+ 1, 17, 16, 16, 16, 16, 16, 18, 16, 16, 16, 16, 20, 0, 21,
+ 1, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 20, 0, 21,
+ 1, 25, 24, 24, 24, 24, 24, 24, 24, 24, 16, 16, 16, 18, 20,
+ 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 25, 24, 24, 24, 28
};
private final int validSpeeds[] = {1, 2, 3, 4, 6, 8};
@@ -80,6 +80,54 @@ public class Board extends JPanel implements ActionListener {
private short[] screenData;
private Timer timer;
+ public short[] getScreenData() {
+ return screenData;
+ }
+
+ public Color getMazeColor() {
+ return mazeColor;
+ }
+
+ public Dimension getD() {
+ return d;
+ }
+
+ public int getPacman_x() {
+ return pacman_x;
+ }
+
+ public int getPacman_y() {
+ return pacman_y;
+ }
+
+ public int getPacsLeft() {
+ return pacsLeft;
+ }
+
+ public int getScore() {
+ return score;
+ }
+
+ public int getN_GHOSTS() {
+ return N_GHOSTS;
+ }
+
+ public boolean isInGame() {
+ return inGame;
+ }
+
+ public void setReq_dx(int req_dx) {
+ this.req_dx = req_dx;
+ }
+
+ public void setReq_dy(int req_dy) {
+ this.req_dy = req_dy;
+ }
+
+ public void setPacsLeft(int pacsLeft) {
+ this.pacsLeft = pacsLeft;
+ }
+
public Board() {
loadImages();
@@ -96,7 +144,7 @@ private void initBoard() {
setBackground(Color.black);
}
- private void initVariables() {
+ protected void initVariables() {
screenData = new short[N_BLOCKS * N_BLOCKS];
mazeColor = new Color(5, 100, 5);
@@ -180,7 +228,7 @@ private void drawScore(Graphics2D g) {
}
}
- private void checkMaze() {
+ protected void checkMaze() {
short i = 0;
boolean finished = true;
@@ -210,7 +258,7 @@ private void checkMaze() {
}
}
- private void death() {
+ protected void death() {
pacsLeft--;
@@ -299,7 +347,7 @@ private void drawGhost(Graphics2D g2d, int x, int y) {
g2d.drawImage(ghost, x, y, this);
}
- private void movePacman() {
+ protected void movePacman() {
int pos;
short ch;
@@ -478,7 +526,7 @@ private void initGame() {
currentSpeed = 3;
}
- private void initLevel() {
+ protected void initLevel() {
int i;
for (i = 0; i < N_BLOCKS * N_BLOCKS; i++) {
@@ -523,20 +571,20 @@ private void continueLevel() {
private void loadImages() {
- ghost = new ImageIcon("src/resources/images/ghost.png").getImage();
- pacman1 = new ImageIcon("src/resources/images/pacman.png").getImage();
- pacman2up = new ImageIcon("src/resources/images/up1.png").getImage();
- pacman3up = new ImageIcon("src/resources/images/up2.png").getImage();
- pacman4up = new ImageIcon("src/resources/images/up3.png").getImage();
- pacman2down = new ImageIcon("src/resources/images/down1.png").getImage();
- pacman3down = new ImageIcon("src/resources/images/down2.png").getImage();
- pacman4down = new ImageIcon("src/resources/images/down3.png").getImage();
- pacman2left = new ImageIcon("src/resources/images/left1.png").getImage();
- pacman3left = new ImageIcon("src/resources/images/left2.png").getImage();
- pacman4left = new ImageIcon("src/resources/images/left3.png").getImage();
- pacman2right = new ImageIcon("src/resources/images/right1.png").getImage();
- pacman3right = new ImageIcon("src/resources/images/right2.png").getImage();
- pacman4right = new ImageIcon("src/resources/images/right3.png").getImage();
+ ghost = new ImageIcon(getClass().getClassLoader().getResource("images/ghost.png")).getImage();
+ pacman1 = new ImageIcon(getClass().getClassLoader().getResource("images/pacman.png")).getImage();
+ pacman2up = new ImageIcon(getClass().getClassLoader().getResource("images/up1.png")).getImage();
+ pacman3up = new ImageIcon(getClass().getClassLoader().getResource("images/up2.png")).getImage();
+ pacman4up = new ImageIcon(getClass().getClassLoader().getResource("images/up3.png")).getImage();
+ pacman2down = new ImageIcon(getClass().getClassLoader().getResource("images/down1.png")).getImage();
+ pacman3down = new ImageIcon(getClass().getClassLoader().getResource("images/down2.png")).getImage();
+ pacman4down = new ImageIcon(getClass().getClassLoader().getResource("images/down3.png")).getImage();
+ pacman2left = new ImageIcon(getClass().getClassLoader().getResource("images/left1.png")).getImage();
+ pacman3left = new ImageIcon(getClass().getClassLoader().getResource("images/left2.png")).getImage();
+ pacman4left = new ImageIcon(getClass().getClassLoader().getResource("images/left3.png")).getImage();
+ pacman2right = new ImageIcon(getClass().getClassLoader().getResource("images/right1.png")).getImage();
+ pacman3right = new ImageIcon(getClass().getClassLoader().getResource("images/right2.png")).getImage();
+ pacman4right = new ImageIcon(getClass().getClassLoader().getResource("images/right3.png")).getImage();
}
diff --git a/src/com/zetcode/Pacman.java b/src/main/java/com/zetcode/Pacman.java
similarity index 87%
rename from src/com/zetcode/Pacman.java
rename to src/main/java/com/zetcode/Pacman.java
index 77b0508..2793d38 100644
--- a/src/com/zetcode/Pacman.java
+++ b/src/main/java/com/zetcode/Pacman.java
@@ -1,6 +1,7 @@
package com.zetcode;
import java.awt.EventQueue;
+
import javax.swing.JFrame;
public class Pacman extends JFrame {
@@ -16,7 +17,7 @@ private void initUI() {
setTitle("Pacman");
setDefaultCloseOperation(EXIT_ON_CLOSE);
- setSize(380, 420);
+ setSize(380, 430);
setLocationRelativeTo(null);
}
@@ -24,7 +25,7 @@ public static void main(String[] args) {
EventQueue.invokeLater(() -> {
- var ex = new Pacman();
+ Pacman ex = new Pacman();
ex.setVisible(true);
});
}
diff --git a/src/resources/images/down1.png b/src/main/resources/images/down1.png
similarity index 100%
rename from src/resources/images/down1.png
rename to src/main/resources/images/down1.png
diff --git a/src/resources/images/down2.png b/src/main/resources/images/down2.png
similarity index 100%
rename from src/resources/images/down2.png
rename to src/main/resources/images/down2.png
diff --git a/src/resources/images/down3.png b/src/main/resources/images/down3.png
similarity index 100%
rename from src/resources/images/down3.png
rename to src/main/resources/images/down3.png
diff --git a/src/resources/images/file.txt b/src/main/resources/images/file.txt
similarity index 100%
rename from src/resources/images/file.txt
rename to src/main/resources/images/file.txt
diff --git a/src/resources/images/ghost.png b/src/main/resources/images/ghost.png
similarity index 100%
rename from src/resources/images/ghost.png
rename to src/main/resources/images/ghost.png
diff --git a/src/resources/images/left1.png b/src/main/resources/images/left1.png
similarity index 100%
rename from src/resources/images/left1.png
rename to src/main/resources/images/left1.png
diff --git a/src/resources/images/left2.png b/src/main/resources/images/left2.png
similarity index 100%
rename from src/resources/images/left2.png
rename to src/main/resources/images/left2.png
diff --git a/src/resources/images/left3.png b/src/main/resources/images/left3.png
similarity index 100%
rename from src/resources/images/left3.png
rename to src/main/resources/images/left3.png
diff --git a/src/resources/images/pacman.png b/src/main/resources/images/pacman.png
similarity index 100%
rename from src/resources/images/pacman.png
rename to src/main/resources/images/pacman.png
diff --git a/src/resources/images/right1.png b/src/main/resources/images/right1.png
similarity index 100%
rename from src/resources/images/right1.png
rename to src/main/resources/images/right1.png
diff --git a/src/resources/images/right2.png b/src/main/resources/images/right2.png
similarity index 100%
rename from src/resources/images/right2.png
rename to src/main/resources/images/right2.png
diff --git a/src/resources/images/right3.png b/src/main/resources/images/right3.png
similarity index 100%
rename from src/resources/images/right3.png
rename to src/main/resources/images/right3.png
diff --git a/src/resources/images/up1.png b/src/main/resources/images/up1.png
similarity index 100%
rename from src/resources/images/up1.png
rename to src/main/resources/images/up1.png
diff --git a/src/resources/images/up2.png b/src/main/resources/images/up2.png
similarity index 100%
rename from src/resources/images/up2.png
rename to src/main/resources/images/up2.png
diff --git a/src/resources/images/up3.png b/src/main/resources/images/up3.png
similarity index 100%
rename from src/resources/images/up3.png
rename to src/main/resources/images/up3.png
diff --git a/src/test/java/com/zetcode/BoardTest.java b/src/test/java/com/zetcode/BoardTest.java
new file mode 100644
index 0000000..a5a21c1
--- /dev/null
+++ b/src/test/java/com/zetcode/BoardTest.java
@@ -0,0 +1,182 @@
+package com.zetcode;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+public class BoardTest {
+
+ /**
+ * Skenario Unit Testing by @MFarhanZ1 // M. Farhan Aulia Pratama
+ * List skenario pengujian yang dilakukan:
+ - [TEST: 01] Menguji Movement Pacman Berhasil Bergerak ke Atas
+ - [TEST: 02] Menguji Movement Pacman Berhasil Bergerak ke Bawah
+ - [TEST: 03] Menguji Movement Pacman Berhasil Bergerak ke Kiri
+ - [TEST: 04] Menguji Movement Pacman Berhasil Bergerak ke Kanan
+ - [TEST: 05] Menguji apakah berhasil Pacman Nyawa-nya Berkurang ketika mati pertama kali
+ - [TEST: 06] Menguji apakah game terhenti saat pacman mati dengan kondisi nyawa habis
+ - [TEST: 07] Menguji apakah setelah semua dot dimakan, score berhasil bertambah
+ - [TEST: 08] Menguji apakah setelah semua dot dimakan, lanjut ke level berikutnya ditandai dengan jumlah ghost bertambah
+ */
+
+ private Board board;
+
+ @BeforeEach
+ public void setUp() {
+ this.board = new Board();
+ }
+
+ @Test
+ @DisplayName("[TEST: 04] Menguji Movement Pacman Berhasil Bergerak ke Kanan")
+ public void testMovePacmanKeKanan() {
+ System.out.println("[TEST: 04] Menguji Movement Pacman Berhasil Bergerak ke Kanan");
+
+ // Menginisialisasi variabel dan memindahkan Pacman
+ board.initVariables();
+ board.initLevel();
+
+ // Simulasikan pergerakan Pacman ke kanan
+ board.setReq_dx(1);
+ board.setReq_dy(0);
+ board.movePacman();
+
+ // Tambahkan assertion agar hasil tes dapat dicek
+ assertEquals(7 * 24 + 6, board.getPacman_x(), "Koordinat x Pacman tidak bertambah 6, yang menandakan tidak gerak ke kanan");
+ assertEquals(11 * 24, board.getPacman_y(), "Koordinat y Pacman tidak tetap, malah berubah");
+ }
+
+ @Test
+ @DisplayName("[TEST: 03] Menguji Movement Pacman Berhasil Bergerak ke Kiri")
+ public void testMovePacmanKeKiri() {
+ System.out.println("[TEST: 03] Menguji Movement Pacman Berhasil Bergerak ke Kiri");
+
+ // Menginisialisasi variabel dan memindahkan Pacman
+ board.initVariables();
+ board.initLevel();
+
+ // Simulasikan pergerakan Pacman ke kiri
+ board.setReq_dx(-1);
+ board.setReq_dy(0);
+ board.movePacman();
+
+ // Tambahkan assertion agar hasil tes dapat dicek
+ assertEquals(7 * 24 - 6, board.getPacman_x(), "Koordinat x Pacman tidak berkurang 6, yang menandakan tidak gerak ke kiri");
+ assertEquals(11 * 24, board.getPacman_y(), "Koordinat y Pacman tidak tetap, malah berubah");
+ }
+
+ @Test
+ @DisplayName("[TEST: 02] Menguji Movement Pacman Berhasil Bergerak ke Bawah")
+ public void testMovePacmanKeBawah() {
+ System.out.println("[TEST: 02] Menguji Movement Pacman Berhasil Bergerak ke Bawah");
+
+ // Menginisialisasi variabel dan memindahkan Pacman
+ board.initVariables();
+ board.initLevel();
+
+ // Simulasikan pergerakan Pacman ke bawah
+ board.setReq_dx(0);
+ board.setReq_dy(-1);
+ board.movePacman();
+
+ // Tambahkan assertion agar hasil tes dapat dicek
+ assertEquals(7 * 24, board.getPacman_x(), "Koordinat x Pacman tidak tetap, malah berubah");
+ assertEquals(11 * 24, board.getPacman_y(), "Koordinat y Pacman tidak berkurang 6, yang menandakan tidak gerak ke bawah");
+ }
+
+ @Test
+ @DisplayName("[TEST: 01] Menguji Movement Pacman Berhasil Bergerak ke Atas")
+ public void testMovePacmanKeAtas() {
+ System.out.println("[TEST: 01] Menguji Movement Pacman Berhasil Bergerak ke Atas");
+
+ // Menginisialisasi variabel dan memindahkan Pacman
+ board.initVariables();
+ board.initLevel();
+
+ // Simulasikan pergerakan Pacman ke atas
+ board.setReq_dx(0);
+ board.setReq_dy(1);
+ board.movePacman();
+
+ // Tambahkan assertion agar hasil tes dapat dicek
+ assertEquals(7 * 24, board.getPacman_x(), "Koordinat x Pacman tidak tetap, malah berubah");
+ assertEquals(11 * 24 + 6, board.getPacman_y(), "Koordinat y Pacman tidak bertambah 6, yang menandakan tidak gerak ke atas");
+ }
+
+ @Test
+ @DisplayName("[TEST: 06] Menguji apakah game terhenti saat pacman mati dengan kondisi nyawa habis")
+ public void testDeath() {
+ System.out.println("[TEST: 06] Menguji apakah game terhenti saat pacman mati dengan kondisi nyawa habis");
+
+ // Menginisialisasi variabel dan mensimulasikan kematian Pacman dengan nyawa habis
+ board.initVariables();
+ board.initLevel();
+
+ // Memeriksa apakah game berakhir ketika nyawa habis
+ board.setPacsLeft(0);
+ board.death();
+ assertFalse(board.isInGame());
+ }
+
+ @Test
+ @DisplayName("[TEST: 05] Menguji apakah berhasil Pacman Nyawa-nya Berkurang ketika mati pertama kali")
+ public void testNyawaBerkurang() {
+ System.out.println("[TEST: 05] Menguji apakah berhasil Pacman Nyawa-nya Berkurang ketika mati pertama kali");
+
+ // Menginisialisasi variabel dan mensimulasikan kematian Pacman pertama kali dan nyawanya berkurang
+ board.initVariables();
+ board.initLevel();
+
+ int initialPacsLeft = board.getPacsLeft();
+ board.death();
+
+ // Memeriksa apakah jumlah nyawa Pacman berkurang
+ assertEquals(initialPacsLeft - 1, board.getPacsLeft());
+ }
+
+ @Test
+ @DisplayName("[TEST: 07] Menguji apakah setelah semua dot dimakan, score berhasil bertambah")
+ public void testCheckMaze() {
+ System.out.println("[TEST: 07] Menguji apakah setelah semua dot dimakan, score berhasil bertambah");
+
+ // Menginisialisasi variabel dan memeriksa maze
+ board.initVariables();
+ board.initLevel();
+
+ // Simulasikan semua dot telah dimakan
+ for (int i = 0; i < board.getScreenData().length; i++) {
+ board.getScreenData()[i] = (short) (board.getScreenData()[i] & 15); // Hapus dot
+ }
+
+ // Panggil metode checkMaze
+ board.checkMaze();
+
+ // Memeriksa apakah score telah bertambah
+ assertEquals(50, board.getScore());
+ }
+
+ @Test
+ @DisplayName("[TEST: 08] Menguji apakah setelah semua dot dimakan, lanjut ke level berikutnya ditandai dengan jumlah ghost bertambah")
+ public void testNextLevelGhosts() {
+ System.out.println("[TEST: 08] Menguji apakah setelah semua dot dimakan, lanjut ke level berikutnya ditandai dengan jumlah ghost bertambah");
+
+ // Menginisialisasi variabel dan memeriksa maze
+ board.initVariables();
+ board.initLevel();
+
+ int initialN_GHOSTS = board.getN_GHOSTS(); // Jumlah ghost awal sebelum dimakan semua dot
+
+ // Simulasikan semua dot telah dimakan
+ for (int i = 0; i < board.getScreenData().length; i++) {
+ board.getScreenData()[i] = (short) (board.getScreenData()[i] & 15); // Hapus dot
+ }
+
+ // Panggil metode checkMaze
+ board.checkMaze();
+
+ // Memeriksa apakah ghost berhasil bertambah saat semua dot dimakan
+ assertEquals(initialN_GHOSTS + 1, board.getN_GHOSTS()); // Jumlah ghost bertambah
+ }
+
+}
diff --git a/target/classes/com/zetcode/Board$TAdapter.class b/target/classes/com/zetcode/Board$TAdapter.class
new file mode 100644
index 0000000..8e78a05
Binary files /dev/null and b/target/classes/com/zetcode/Board$TAdapter.class differ
diff --git a/target/classes/com/zetcode/Board.class b/target/classes/com/zetcode/Board.class
new file mode 100644
index 0000000..9111c1a
Binary files /dev/null and b/target/classes/com/zetcode/Board.class differ
diff --git a/target/classes/com/zetcode/Pacman.class b/target/classes/com/zetcode/Pacman.class
new file mode 100644
index 0000000..898d880
Binary files /dev/null and b/target/classes/com/zetcode/Pacman.class differ
diff --git a/target/classes/images/down1.png b/target/classes/images/down1.png
new file mode 100644
index 0000000..fa6b768
Binary files /dev/null and b/target/classes/images/down1.png differ
diff --git a/target/classes/images/down2.png b/target/classes/images/down2.png
new file mode 100644
index 0000000..be8e24f
Binary files /dev/null and b/target/classes/images/down2.png differ
diff --git a/target/classes/images/down3.png b/target/classes/images/down3.png
new file mode 100644
index 0000000..9f3a025
Binary files /dev/null and b/target/classes/images/down3.png differ
diff --git a/target/classes/images/file.txt b/target/classes/images/file.txt
new file mode 100644
index 0000000..39cdd0d
--- /dev/null
+++ b/target/classes/images/file.txt
@@ -0,0 +1 @@
+-
diff --git a/target/classes/images/ghost.png b/target/classes/images/ghost.png
new file mode 100644
index 0000000..7d93cf6
Binary files /dev/null and b/target/classes/images/ghost.png differ
diff --git a/target/classes/images/left1.png b/target/classes/images/left1.png
new file mode 100644
index 0000000..18e1582
Binary files /dev/null and b/target/classes/images/left1.png differ
diff --git a/target/classes/images/left2.png b/target/classes/images/left2.png
new file mode 100644
index 0000000..5272b45
Binary files /dev/null and b/target/classes/images/left2.png differ
diff --git a/target/classes/images/left3.png b/target/classes/images/left3.png
new file mode 100644
index 0000000..dcc00ba
Binary files /dev/null and b/target/classes/images/left3.png differ
diff --git a/target/classes/images/pacman.png b/target/classes/images/pacman.png
new file mode 100644
index 0000000..e1ed87e
Binary files /dev/null and b/target/classes/images/pacman.png differ
diff --git a/target/classes/images/right1.png b/target/classes/images/right1.png
new file mode 100644
index 0000000..3ed04d6
Binary files /dev/null and b/target/classes/images/right1.png differ
diff --git a/target/classes/images/right2.png b/target/classes/images/right2.png
new file mode 100644
index 0000000..b20263c
Binary files /dev/null and b/target/classes/images/right2.png differ
diff --git a/target/classes/images/right3.png b/target/classes/images/right3.png
new file mode 100644
index 0000000..c8ce554
Binary files /dev/null and b/target/classes/images/right3.png differ
diff --git a/target/classes/images/up1.png b/target/classes/images/up1.png
new file mode 100644
index 0000000..9ef859f
Binary files /dev/null and b/target/classes/images/up1.png differ
diff --git a/target/classes/images/up2.png b/target/classes/images/up2.png
new file mode 100644
index 0000000..206cf8a
Binary files /dev/null and b/target/classes/images/up2.png differ
diff --git a/target/classes/images/up3.png b/target/classes/images/up3.png
new file mode 100644
index 0000000..cf9ccbf
Binary files /dev/null and b/target/classes/images/up3.png differ
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..e86af1a
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,3 @@
+com\zetcode\Board.class
+com\zetcode\Board$TAdapter.class
+com\zetcode\Pacman.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..6ebb16b
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,2 @@
+D:\Kuliah\KRS-KHS\Semester 6\Software Testing\P5\pacman\src\main\java\com\zetcode\Board.java
+D:\Kuliah\KRS-KHS\Semester 6\Software Testing\P5\pacman\src\main\java\com\zetcode\Pacman.java
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
new file mode 100644
index 0000000..d6fbaf6
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
@@ -0,0 +1 @@
+com\zetcode\BoardTest.class
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 0000000..5b5b8b8
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
@@ -0,0 +1 @@
+D:\Kuliah\KRS-KHS\Semester 6\Software Testing\P5\pacman\src\test\java\com\zetcode\BoardTest.java
diff --git a/target/surefire-reports/2025-03-24T15-05-28_687.dumpstream b/target/surefire-reports/2025-03-24T15-05-28_687.dumpstream
new file mode 100644
index 0000000..51dc072
--- /dev/null
+++ b/target/surefire-reports/2025-03-24T15-05-28_687.dumpstream
@@ -0,0 +1,5 @@
+# Created at 2025-03-24T15:05:28.972
+Boot Manifest-JAR contains absolute paths in classpath 'D:\Kuliah\KRS-KHS\Semester 6\Software Testing\P5\pacman\target\test-classes'
+Hint: -Djdk.net.URLClassPath.disableClassPathURLCheck=true
+'other' has different root
+
diff --git a/target/surefire-reports/TEST-com.zetcode.BoardTest.xml b/target/surefire-reports/TEST-com.zetcode.BoardTest.xml
new file mode 100644
index 0000000..8f8497b
--- /dev/null
+++ b/target/surefire-reports/TEST-com.zetcode.BoardTest.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/surefire-reports/com.zetcode.BoardTest.txt b/target/surefire-reports/com.zetcode.BoardTest.txt
new file mode 100644
index 0000000..6492ed3
--- /dev/null
+++ b/target/surefire-reports/com.zetcode.BoardTest.txt
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------------------
+Test set: com.zetcode.BoardTest
+-------------------------------------------------------------------------------
+Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.323 s -- in com.zetcode.BoardTest
diff --git a/target/test-classes/com/zetcode/BoardTest.class b/target/test-classes/com/zetcode/BoardTest.class
new file mode 100644
index 0000000..a1503c8
Binary files /dev/null and b/target/test-classes/com/zetcode/BoardTest.class differ