From d229290e1b77f1dcf130fc9627b73880ffdabbb5 Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Sun, 10 Dec 2023 14:21:40 +1300 Subject: [PATCH 01/18] i made it so that invalid moves would not work --- tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java b/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java index d0763a8..1e1cad5 100644 --- a/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java +++ b/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java @@ -99,7 +99,14 @@ public void go(BufferedReader in, BufferedWriter out) throws IOException { * @return true if the given coordinate can be moved on */ private boolean isMoveValid(Coordinate coord) { - return true; + if (coord.x() > 2 + || coord.y() > 2 + || board[coord.y()][coord.x()] == Status.X + || board[coord.y()][coord.x()] == Status.O) { + return false; + } else { + return true; + } } /** From b54f5dc49351a33f5de2213bfc8dcbce8f9013fc Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Mon, 11 Dec 2023 09:21:24 +1300 Subject: [PATCH 02/18] sutf --- .../src/main/java/coding101/ttt/TicTacToe.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java b/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java index 1e1cad5..504875c 100644 --- a/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java +++ b/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java @@ -115,7 +115,21 @@ private boolean isMoveValid(Coordinate coord) { * @return true if the game has been won */ private boolean isWon(Coordinate lastMove) { - return false; + if (board[lastMove.y()][lastMove.x()] == Status.X + && board[lastMove.y() + 1][lastMove.x()] == Status.X + && board[lastMove.y() + 2][lastMove.x()] == Status.X + && board[lastMove.y() - 1][lastMove.x()] == Status.X + && board[lastMove.y() - 2][lastMove.x()] == Status.X) { + return true; + } else if (board[lastMove.y()][lastMove.x()] == Status.X + && board[lastMove.y()][lastMove.x() + 1] == Status.X + && board[lastMove.y()][lastMove.x() + 2] == Status.X + && board[lastMove.y()][lastMove.x() - 1] == Status.X + && board[lastMove.y()][lastMove.x() - 2] == Status.X) { + return true; + } else { + return false; + } } /** From bf2686863621e3b6be4c2fce84ed4df5e844c6fa Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Thu, 14 Dec 2023 15:13:57 +1300 Subject: [PATCH 03/18] is finish --- .../main/java/coding101/ttt/TicTacToe.java | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java b/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java index a581bcc..7410c85 100644 --- a/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java +++ b/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java @@ -121,21 +121,23 @@ private boolean isMoveValid(Coordinate coord) { * @return true if the game has been won */ private boolean isWon(Coordinate lastMove) { - if (board[lastMove.y()][lastMove.x()] == Status.X - && board[lastMove.y() + 1][lastMove.x()] == Status.X - && board[lastMove.y() + 2][lastMove.x()] == Status.X - && board[lastMove.y() - 1][lastMove.x()] == Status.X - && board[lastMove.y() - 2][lastMove.x()] == Status.X) { + var player = board[lastMove.y()][lastMove.x()]; + var row = lastMove.y(); + var column = lastMove.x(); + + if (board[row][0] == player && board[row][1] == player && board[row][2] == player) { return true; - } else if (board[lastMove.y()][lastMove.x()] == Status.X - && board[lastMove.y()][lastMove.x() + 1] == Status.X - && board[lastMove.y()][lastMove.x() + 2] == Status.X - && board[lastMove.y()][lastMove.x() - 1] == Status.X - && board[lastMove.y()][lastMove.x() - 2] == Status.X) { + } + if (board[0][column] == player && board[1][column] == player && board[2][column] == player) { return true; - } else { - return false; } + if (board[0][0] == player && board[1][1] == player && board[2][2] == player) { + return true; + } + if (board[0][2] == player && board[1][1] == player && board[2][0] == player) { + return true; + } + return false; } /** @@ -143,7 +145,14 @@ private boolean isWon(Coordinate lastMove) { * @return true if the game is a draw */ private boolean isDraw() { - return false; + for (int row = 0; row < size; row++) { + for (int col = 0; col < size; col++) { + if (board[row][col] == null) { + return false; + } + } + } + return true; } public static void main(String[] args) { From 8962f0a6c38fa077d296562e4a08cda4f16564d3 Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Sun, 17 Dec 2023 16:17:11 +1300 Subject: [PATCH 04/18] finshed --- .../main/java/coding101/ttt/TicTacToe.java | 67 +++++++++++++++++-- 1 file changed, 60 insertions(+), 7 deletions(-) diff --git a/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java b/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java index 7410c85..b9f77f5 100644 --- a/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java +++ b/tic-tac-toe/src/main/java/coding101/ttt/TicTacToe.java @@ -105,8 +105,8 @@ public void go(BufferedReader in, BufferedWriter out) throws IOException { * @return true if the given coordinate can be moved on */ private boolean isMoveValid(Coordinate coord) { - if (coord.x() > 2 - || coord.y() > 2 + if (coord.x() >= size + || coord.y() >= size || board[coord.y()][coord.x()] == Status.X || board[coord.y()][coord.x()] == Status.O) { return false; @@ -125,16 +125,63 @@ private boolean isWon(Coordinate lastMove) { var row = lastMove.y(); var column = lastMove.x(); - if (board[row][0] == player && board[row][1] == player && board[row][2] == player) { + // keeps track how many squaers have been checked if is equal to size someone won + var counter = 0; + + // look for a row win + for (int i = 0; i < size; i++) { + if (board[row][i] == player) { + counter++; + } else { + break; + } + } + if (counter == size) { return true; } - if (board[0][column] == player && board[1][column] == player && board[2][column] == player) { + + // reset the counter + counter = 0; + + // the same as previous loop but for columns + for (int i = 0; i < size; i++) { + if (board[i][column] == player) { + counter++; + } else { + break; + } + } + if (counter == size) { return true; } - if (board[0][0] == player && board[1][1] == player && board[2][2] == player) { + + // reset the counter + counter = 0; + + // diagonal wining left top to rigth bottom + for (int i = 0; i < size; i++) { + if (board[i][i] == player) { + counter++; + } else { + break; + } + } + if (counter == size) { return true; } - if (board[0][2] == player && board[1][1] == player && board[2][0] == player) { + + // reset the counter + counter = 0; + + // diagonal wining right top to left bottom + for (int i = 0, j = size - 1; i < size; i++, j--) { + if (board[i][j] == player) { + counter++; + } else { + break; + } + } + if (counter == size) { return true; } return false; @@ -156,7 +203,13 @@ private boolean isDraw() { } public static void main(String[] args) { - var game = new TicTacToe(3); + // accept an integer size for the game board, defaulting to 3 if none provided + var size = (args.length > 0 ? Integer.parseInt(args[0]) : 3); + if (size < 2 || size > 26) { + System.err.println("Invalid board size, please enter a size between 2 and 26."); + System.exit(1); + } + var game = new TicTacToe(size); try (BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out))) { game.go(in, out); From 181f20f3fb03a31ee5e017d0c274f001a8f645ca Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Wed, 10 Jan 2024 15:33:57 +1300 Subject: [PATCH 05/18] j --- .../META-INF/tqmaps/main/0000,0000.tqmap | 71 +++++++++++++++---- .../tqmaps/main/0015,0078/0000,0000.tqmap | 29 ++++++++ 2 files changed, 86 insertions(+), 14 deletions(-) create mode 100644 text-quest/src/main/resources/META-INF/tqmaps/main/0015,0078/0000,0000.tqmap diff --git a/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap b/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap index fa20d6d..954c201 100644 --- a/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap +++ b/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap @@ -7,19 +7,62 @@ # = lava # , sand # -#- start: 9,4 +#- start: 26,44 # # 1 2 3 4 5 6 7 8 9 C -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAA~~~~.....^^^^^AAAAAAAAAOAAAA~~~~~~~~~~^^^AAAAAAA -AA~~~~~~~.......^^^AAAAAA~~~~~~~~AAAAAAAAAAA~~ -A~~~~~~~~~~......^^AAAAA~~~~AAA~~~AAAAAAAAAAA -A~~~~~~~*........^^^AA^~~~AAAAAAA~~~~~AAAAA -AA~~~~~~&~~~....^^^^^^^~~~AAAAAAAAAAA~~AAAA -AAA~~~~~~~......^^^^^^~~~AAAAAAAAAAAAA~~AAA -AA~~~~~,,....^^^^^^^^~~~~AAAAAAAAAAAAAA~~AA -A~~~~~~,,,,,^^^^^~~~~~~AAAAAAAOAAAAAAAAA~AA -A~~~~~~~~,~~~~~~~~~~AAAAAAAAAA==AAAAAAAA~AA -A~~~~~~~~~~~~~~~~~AAAAAAAAAAAAA==AAAAAAA~AA -A~~~~~~~~~~~~~~~~AAAAAAAAAAAAAAA====AAAA~~A -AA~~~~~~~~~~~~~.AAAAAAAAAAAAAAAAAA=======~A +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAAAA +AAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAAAA +AAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~&~~~~~~~^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^AAAAAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^AAAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^AAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~O~~~~~~~~~~~~~~~~~^^^^^^^^^^^AAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^AAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^AAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^AAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~^^^^^^^^^^^^^^^^OAAAAAAAAAA................ +AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^^^AAAAAAAAAAAO.......................... +AAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AA~~AAAAAAAAAAAAAAAAAAAAAAA~~~~~~~~~~~~~~~..................... +AAAAA^^^^^^^^AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~~AAAAAAAAAAAAAAAAAAAA~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*.............. +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~AAAAAAAAAAAAAAAAAA~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&~~~~~~~~~............ +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~~AAAAAAAAAAAA^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...... +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~AAAAAAAA^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...... +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....... +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.... +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +AAAAAAAAAAAAAAAAAA.................AAAAAAAAAAAAAAAAAAAAAA~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~ +AAAAAAAAAAAA........................AAAAAAAAAAAAAAAAAAAA...~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~ +AAAAAAAAAA..........................AAAAAAAAAAAAAAAAAAA....~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~ +AAAAAAAAAA...........................AAAAAAAAAAAAAAAAA.....~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^ +AAAAAAAA................................AAAAAAAAAAAA.........~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~ +AAAAAAAA................................AAAAAAA..............~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~ +AAAAAAAA..................................AA.................~~~^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~ +AAAAAAA.......................................................~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +AAAAAAA.......................................................~~~~~~~ +AAAAAA........................................................~~ +AAAAAA........................................................~~ +AAAAAA........................................................~~ +AAAAA..........................................................~~ +AAAA............................................................~~~ +AAAA..............................................................~~ +AAA...............................................................~~~ +AA.................................................................~~~ +AA.................................................................&~~~ +AA^^^^^..............................................................~~ +AA^^^^^^^^^..........................................................~~ +AAA^^^^^^^^^^............*...........................................~~~ +AAAA^^^^^^^^^^^^^^^...................................................~~~ +AAAAA^^^^^^^^^^^^^^^^..................................................~~~ +AAAAA^^^^^^^^^^^^^^^^^^^^^.............................................~~~~~ +AAAAAA^^^^^^^^^^^^^^^^^^^^^^^..............................................~~~~~ +AAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^...........................^^^^...............~~~~~~ +AAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^.......................^^^^^^..................~~~~~ +AAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^.............^^^^^^^^^^....................~~ +AAAAAAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...................~~ +AAAAAAAAAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...................~~~ +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA diff --git a/text-quest/src/main/resources/META-INF/tqmaps/main/0015,0078/0000,0000.tqmap b/text-quest/src/main/resources/META-INF/tqmaps/main/0015,0078/0000,0000.tqmap new file mode 100644 index 0000000..3e88bc7 --- /dev/null +++ b/text-quest/src/main/resources/META-INF/tqmaps/main/0015,0078/0000,0000.tqmap @@ -0,0 +1,29 @@ +# A mountain O cave +# ~ water & ship +# . grass * town +# ^ forest +# = lava +# , sand +# +#- start: 69,14 +# +# 1 2 3 4 5 6 7 8 9 C +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAA +AAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAA +AAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~&~~~~~~~^^^^^^^^^^^^^^^^^AAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^AAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^AAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^AAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~O~~~~~~~~~~~~~~~~~^^^^^^^^^^^AAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^AAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^AAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^AAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~^^^^^^^^^^^^^^^^OAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^^^AAAAAAAAAAA +AAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AA~~AAAAAAAAAAAAAAAAAAAAAAA +AAAAA^^^^^^^^AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~~AAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA From 6f421b22809a425ece7d219bba1b7d5397147e60 Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Wed, 10 Jan 2024 16:49:37 +1300 Subject: [PATCH 06/18] lava will kill now --- text-quest/src/main/java/coding101/tq/domain/Player.java | 6 ++++-- .../src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/text-quest/src/main/java/coding101/tq/domain/Player.java b/text-quest/src/main/java/coding101/tq/domain/Player.java index 9ada896..199432a 100644 --- a/text-quest/src/main/java/coding101/tq/domain/Player.java +++ b/text-quest/src/main/java/coding101/tq/domain/Player.java @@ -335,8 +335,10 @@ public PlayerItems getItems() { */ public boolean visited(TerrainMap map, int x, int y) { assert map != null; - // TODO: walking on lava should decrease player's health - + // DUNNIIT: walking on lava should decrease player's health + if (map.terrainAt(x, y) == TerrainType.Lava) { + this.health -= config.lavaHealthDamage(); + } // update the visited state of this coordinate by setting to a non-null value; // the actual type used does not matter, we merely chose to use Town TerrainMap visited = diff --git a/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap b/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap index 13aa8ef..0a6fc72 100644 --- a/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap +++ b/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap @@ -46,8 +46,8 @@ AAAAAAAA..................................AA.................~~~^^^^^^^~~~~~~~~~ AAAAAAA.......................................................~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AAAAAAA.......................................................~~~~~~~ AAAAAA........................................................~~ -AAAAAA........................................................~~ -AAAAAA........................................................~~ +AAAAAA..................................===...................~~ +AAAAAA..................................===...................~~ AAAAA..........................................................~~ AAAA............................................................~~~ AAAA..............................................................~~ From eb494ff43732094aa1cc45608d4f45e552a3da47 Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Thu, 11 Jan 2024 20:52:51 +1300 Subject: [PATCH 07/18] Merged. --- text-quest/src/main/java/coding101/tq/domain/Player.java | 8 -------- .../tqmaps/main/{0015,0078 => 0078,0015}/0000,0000.tqmap | 0 2 files changed, 8 deletions(-) rename text-quest/src/main/resources/META-INF/tqmaps/main/{0015,0078 => 0078,0015}/0000,0000.tqmap (100%) diff --git a/text-quest/src/main/java/coding101/tq/domain/Player.java b/text-quest/src/main/java/coding101/tq/domain/Player.java index 7f5c8d2..1b217c4 100644 --- a/text-quest/src/main/java/coding101/tq/domain/Player.java +++ b/text-quest/src/main/java/coding101/tq/domain/Player.java @@ -348,23 +348,15 @@ public PlayerItems getItems() { */ public boolean visited(TerrainMap map, int x, int y) { assert map != null; -<<<<<<< HEAD // DUNNIIT: walking on lava should decrease player's health if (map.terrainAt(x, y) == TerrainType.Lava) { this.health -= config.lavaHealthDamage(); } - // update the visited state of this coordinate by setting to a non-null value; - // the actual type used does not matter, we merely chose to use Town - TerrainMap visited = - visitedMaps.computeIfAbsent(map.getName(), name -> nullMap(name, map.width(), map.height())); - boolean result = visited.modifyAt(x, y, TerrainType.Town); -======= // TODO: walking on lava should decrease player's health // update the visited state of this coordinate VisitedMap visited = visitedMaps.computeIfAbsent(map.getName(), name -> new VisitedMap()); boolean result = visited.visit(x, y); ->>>>>>> 477612be6ec068d183bc80956f5ae4101ad820b5 return result; } diff --git a/text-quest/src/main/resources/META-INF/tqmaps/main/0015,0078/0000,0000.tqmap b/text-quest/src/main/resources/META-INF/tqmaps/main/0078,0015/0000,0000.tqmap similarity index 100% rename from text-quest/src/main/resources/META-INF/tqmaps/main/0015,0078/0000,0000.tqmap rename to text-quest/src/main/resources/META-INF/tqmaps/main/0078,0015/0000,0000.tqmap From 956a8ac5a49f93cd73828d166f30eb5aff77cb16 Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Fri, 12 Jan 2024 11:02:48 +1300 Subject: [PATCH 08/18] done stuff --- text-quest/src/main/java/coding101/tq/domain/Player.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/text-quest/src/main/java/coding101/tq/domain/Player.java b/text-quest/src/main/java/coding101/tq/domain/Player.java index 4261273..27d1db8 100644 --- a/text-quest/src/main/java/coding101/tq/domain/Player.java +++ b/text-quest/src/main/java/coding101/tq/domain/Player.java @@ -554,6 +554,10 @@ public boolean canMoveTo(TerrainMap map, int x, int y) { return (newTerrain == TerrainType.Water || newTerrain == TerrainType.Ship) && !vehicleLocatedAt(map, x, y); } // TODO: finish validation that player can move to specified coordinate - return true; + if ((newTerrain == TerrainType.Water || newTerrain == TerrainType.Mountain) && !vehicleLocatedAt(map, x, y)) { + return false; + } else { + return true; + } } } From b5ce285b22bfc02b69f97eba065a1e6ca4401653 Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Fri, 12 Jan 2024 11:10:00 +1300 Subject: [PATCH 09/18] Fniished goal 2 --- text-quest/src/main/java/coding101/tq/domain/Player.java | 7 ++++++- .../main/resources/META-INF/tqmaps/main/0000,0000.tqmap | 2 +- .../tqmaps/main/{0027,0001 => 0034,0024}/0000,0000.tqmap | 0 3 files changed, 7 insertions(+), 2 deletions(-) rename text-quest/src/main/resources/META-INF/tqmaps/main/{0027,0001 => 0034,0024}/0000,0000.tqmap (100%) diff --git a/text-quest/src/main/java/coding101/tq/domain/Player.java b/text-quest/src/main/java/coding101/tq/domain/Player.java index 27d1db8..c3c2c1e 100644 --- a/text-quest/src/main/java/coding101/tq/domain/Player.java +++ b/text-quest/src/main/java/coding101/tq/domain/Player.java @@ -554,7 +554,12 @@ public boolean canMoveTo(TerrainMap map, int x, int y) { return (newTerrain == TerrainType.Water || newTerrain == TerrainType.Ship) && !vehicleLocatedAt(map, x, y); } // TODO: finish validation that player can move to specified coordinate - if ((newTerrain == TerrainType.Water || newTerrain == TerrainType.Mountain) && !vehicleLocatedAt(map, x, y)) { + if ((newTerrain == TerrainType.Water + || newTerrain == TerrainType.Mountain + || newTerrain == TerrainType.WallHorizontal + || newTerrain == TerrainType.WallVertical + || newTerrain == TerrainType.WallCorner) + && !vehicleLocatedAt(map, x, y)) { return false; } else { return true; diff --git a/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap b/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap index 0a6fc72..64997b8 100644 --- a/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap +++ b/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap @@ -36,7 +36,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~AAAAAAAA^^^^^^^^^^^^^^^ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....... AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.... AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -AAAAAAAAAAAAAAAAAA.................AAAAAAAAAAAAAAAAAAAAAA~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~ +AAAAAAAAAAAAAAAAAA................OAAAAAAAAAAAAAAAAAAAAAA~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~ AAAAAAAAAAAA........................AAAAAAAAAAAAAAAAAAAA...~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~ AAAAAAAAAA..........................AAAAAAAAAAAAAAAAAAA....~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~ AAAAAAAAAA...........................AAAAAAAAAAAAAAAAA.....~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^ diff --git a/text-quest/src/main/resources/META-INF/tqmaps/main/0027,0001/0000,0000.tqmap b/text-quest/src/main/resources/META-INF/tqmaps/main/0034,0024/0000,0000.tqmap similarity index 100% rename from text-quest/src/main/resources/META-INF/tqmaps/main/0027,0001/0000,0000.tqmap rename to text-quest/src/main/resources/META-INF/tqmaps/main/0034,0024/0000,0000.tqmap From 1a82013639a85a95ac1edba42b342d8397bf7ece Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Sat, 13 Jan 2024 13:58:11 +1300 Subject: [PATCH 10/18] Move map to local. --- .../META-INF/tqmaps/local/0000,0000.tqmap | 70 +++++++++++++++++++ .../{main => local}/0034,0024/0000,0000.tqmap | 0 .../{main => local}/0078,0015/0000,0000.tqmap | 0 3 files changed, 70 insertions(+) create mode 100644 text-quest/src/main/resources/META-INF/tqmaps/local/0000,0000.tqmap rename text-quest/src/main/resources/META-INF/tqmaps/{main => local}/0034,0024/0000,0000.tqmap (100%) rename text-quest/src/main/resources/META-INF/tqmaps/{main => local}/0078,0015/0000,0000.tqmap (100%) diff --git a/text-quest/src/main/resources/META-INF/tqmaps/local/0000,0000.tqmap b/text-quest/src/main/resources/META-INF/tqmaps/local/0000,0000.tqmap new file mode 100644 index 0000000..64997b8 --- /dev/null +++ b/text-quest/src/main/resources/META-INF/tqmaps/local/0000,0000.tqmap @@ -0,0 +1,70 @@ +# Size: 100x100 +# +# A mountain O cave +# m hill & ship +# ~ water * town +# , sand +# . grass +# ^ forest +# = lava +# " lava rock +# +#- start: 26,44 +# +# 1 2 3 4 5 6 7 8 9 C +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAAAA +AAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAAAA +AAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~&~~~~~~~^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^AAAAAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^AAAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^AAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~O~~~~~~~~~~~~~~~~~^^^^^^^^^^^AAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^AAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^AAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^AAAAAAAAAAAA +AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~^^^^^^^^^^^^^^^^OAAAAAAAAAA................ +AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^^^AAAAAAAAAAAO.......................... +AAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AA~~AAAAAAAAAAAAAAAAAAAAAAA~~~~~~~~~~~~~~~..................... +AAAAA^^^^^^^^AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~~AAAAAAAAAAAAAAAAAAAA~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*.............. +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~AAAAAAAAAAAAAAAAAA~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&~~~~~~~~~............ +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~~AAAAAAAAAAAA^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...... +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~AAAAAAAA^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...... +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....... +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.... +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +AAAAAAAAAAAAAAAAAA................OAAAAAAAAAAAAAAAAAAAAAA~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~ +AAAAAAAAAAAA........................AAAAAAAAAAAAAAAAAAAA...~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~ +AAAAAAAAAA..........................AAAAAAAAAAAAAAAAAAA....~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~ +AAAAAAAAAA...........................AAAAAAAAAAAAAAAAA.....~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^ +AAAAAAAA................................AAAAAAAAAAAA.........~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~ +AAAAAAAA................................AAAAAAA..............~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~ +AAAAAAAA..................................AA.................~~~^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~ +AAAAAAA.......................................................~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +AAAAAAA.......................................................~~~~~~~ +AAAAAA........................................................~~ +AAAAAA..................................===...................~~ +AAAAAA..................................===...................~~ +AAAAA..........................................................~~ +AAAA............................................................~~~ +AAAA..............................................................~~ +AAA...............................................................~~~ +AA.................................................................~~~ +AA.................................................................&~~~ +AA^^^^^..............................................................~~ +AA^^^^^^^^^..........................................................~~ +AAA^^^^^^^^^^............*...........................................~~~ +AAAA^^^^^^^^^^^^^^^...................................................~~~ +AAAAA^^^^^^^^^^^^^^^^..................................................~~~ +AAAAA^^^^^^^^^^^^^^^^^^^^^.............................................~~~~~ +AAAAAA^^^^^^^^^^^^^^^^^^^^^^^..............................................~~~~~ +AAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^...........................^^^^...............~~~~~~ +AAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^.......................^^^^^^..................~~~~~ +AAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^.............^^^^^^^^^^....................~~ +AAAAAAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...................~~ +AAAAAAAAAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...................~~~ +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA diff --git a/text-quest/src/main/resources/META-INF/tqmaps/main/0034,0024/0000,0000.tqmap b/text-quest/src/main/resources/META-INF/tqmaps/local/0034,0024/0000,0000.tqmap similarity index 100% rename from text-quest/src/main/resources/META-INF/tqmaps/main/0034,0024/0000,0000.tqmap rename to text-quest/src/main/resources/META-INF/tqmaps/local/0034,0024/0000,0000.tqmap diff --git a/text-quest/src/main/resources/META-INF/tqmaps/main/0078,0015/0000,0000.tqmap b/text-quest/src/main/resources/META-INF/tqmaps/local/0078,0015/0000,0000.tqmap similarity index 100% rename from text-quest/src/main/resources/META-INF/tqmaps/main/0078,0015/0000,0000.tqmap rename to text-quest/src/main/resources/META-INF/tqmaps/local/0078,0015/0000,0000.tqmap From 627a9d33ebeb9838d1dd43d5a73e7df8bee64d4a Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Sat, 13 Jan 2024 14:01:01 +1300 Subject: [PATCH 11/18] Replace with upstream. --- .../META-INF/tqmaps/main/0000,0000.tqmap | 79 ++++++------------- 1 file changed, 22 insertions(+), 57 deletions(-) diff --git a/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap b/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap index 18133fb..30dc2ce 100644 --- a/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap +++ b/text-quest/src/main/resources/META-INF/tqmaps/main/0000,0000.tqmap @@ -9,62 +9,27 @@ # = lava # " lava rock # -#- start: 26,44 +#- start: 9,4 # # 1 2 3 4 5 6 7 8 9 C -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAAAA -AAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAAAA -AAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAAAA -AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*^^^^^^^^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAAA -AA^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~&~~~~~~~^^^^^^^^^^^^^^^^^AAAAAAAAAAAAAAAAA -AA^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^AAAAAAAAAAAAAAA -AA^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^AAAAAAAAAAAAA -AA^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^AAAAAAAAAAAA -AA^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~O~~~~~~~~~~~~~~~~~^^^^^^^^^^^AAAAAAAAAAAA -AA^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^AAAAAAAAAAAA -AA^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^AAAAAAAAAAAA -AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^AAAAAAAAAAAA -AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~^^^^^^^^^^^^^^^^OAAAAAAAAAA................ -AA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^^^AAAAAAAAAAAO.......................... -AAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AA~~AAAAAAAAAAAAAAAAAAAAAAA~~~~~~~~~~~~~~~..................... -AAAAA^^^^^^^^AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~~AAAAAAAAAAAAAAAAAAAA~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*.............. -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~AAAAAAAAAAAAAAAAAA~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&~~~~~~~~~............ -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~~AAAAAAAAAAAA^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...... -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~AAAAAAAA^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...... -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....... -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.... -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -AAAAAAAAAAAAAAAAAA................OAAAAAAAAAAAAAAAAAAAAAA~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~ -AAAAAAAAAAAA........................AAAAAAAAAAAAAAAAAAAA...~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~ -AAAAAAAAAA..........................AAAAAAAAAAAAAAAAAAA....~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~ -AAAAAAAAAA...........................AAAAAAAAAAAAAAAAA.....~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^ -AAAAAAAA................................AAAAAAAAAAAA.........~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~ -AAAAAAAA................................AAAAAAA..............~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~ -AAAAAAAA..................................AA.................~~~^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~ -AAAAAAA.......................................................~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -AAAAAAA.......................................................~~~~~~~ -AAAAAA........................................................~~ -AAAAAA..................................===...................~~ -AAAAAA..................................===...................~~ -AAAAA..........................................................~~ -AAAA............................................................~~~ -AAAA..............................................................~~ -AAA...............................................................~~~ -AA.................................................................~~~ -AA.................................................................&~~~ -AA^^^^^..............................................................~~ -AA^^^^^^^^^..........................................................~~ -AAA^^^^^^^^^^............*...........................................~~~ -AAAA^^^^^^^^^^^^^^^...................................................~~~ -AAAAA^^^^^^^^^^^^^^^^..................................................~~~ -AAAAA^^^^^^^^^^^^^^^^^^^^^.............................................~~~~~ -AAAAAA^^^^^^^^^^^^^^^^^^^^^^^..............................................~~~~~ -AAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^...........................^^^^...............~~~~~~ -AAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^.......................^^^^^^..................~~~~~ -AAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^.............^^^^^^^^^^....................~~ -AAAAAAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...................~~ -AAAAAAAAAAAAAAAAAAA^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...................~~~ -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAA~~~~.....^^^^^AAAAAAAAAOAAAA~~~~~~~~~~^^^AAAAAAA~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +AA~~~~~~~.......^^^AAAAAA~~~~~~~~AAAAAAAAAAA~~~~~~~~~~""""""""mm^^~~~~~~~~~~~~~~~,,,,,,,,,,,,,~~~~~~ +A~~~~~~~~~~......^^AAAAA~~~~AAA~~~AAAAAAAAA"""""""""======AAA""mmm^^^^..~~~~~,,,,,,,.......O,,,~~~~~ +A~~~~~~~*........^^^AA^~~~AAAAAAA~~~~~AAAA""""""""====AAA=====""mmm^^^^..~~~~,,,,,...........,,~~~~~ +AA~~~~~~&~~~....^^^^^^^~~~AAAAAAAAAAA~~""""""""==="""AAA==AAA==""mmm^^^..~~~~~,,.....*.....,,,~~~~~~ +AAA~~~~~~~......^^^^^^~~~AAAAAAAAAAAAA~~""""""""""""""A==AAAAA"=Ommm^^....~~~~~,..........,,~~~~~~~~ +AA~~~~~,,....^^^^^^^^~~~~AAAAAAAAAAAAAA~~AAAmmmmmmmm"""AAAAAA"""mmm^^^^^.~~~~~~~......~~~~~~~~~,~~~~ +A~~~~~~,,,,,^^^^^~~~~~~AAAAAAAOAAAAAAAAA~AAAAAmmmmmmmmmmmAAmmmmmmm^^^^.....~~~~~~~~~~~~~~~~~~~~~~~~~ +A~~~~~~~~,~~~~~~~~~~AAAAAAAAAA==AAAAAAAA~AAAAAAAmmmmmmmmmmmmmmmmm^^^^....~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A~~~~~~~~~~~~~~~~~AAAAAAAAAAAAA==AAAAAAA~AAAAAmmmmmmmmmmmmmmmmm^^^^....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A~~~~~~~~~~~~~~~~AAAAAAAAAAAAAAA====AAAA~~AAmmmmmmmmmmmmmm^^^^^^^.....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +AA~~~~~~~~~~~~~.AAAAAAAAAAAAAAAAAA=======~Ammmmmmmmmm^^^^^^^^^......~~~~~~~~~~~~~~~~~~~~~~~,,,,,~~~~ +AAA~~~~~~~~~~~...mmmAAAAAAAAAAAAAAAAAAAA~~mmmmmmmm^^^^^^^^^^^^^....~~~~~~~~~~~~~~~~~~~~~~,,,,,~~~~~~ +AAAA~~~~~~.....mmmmmmmmAAAAAAAAAAAAA~~~~~~~~~~~^^^^^^^^^^^^^^^......~~~~~~~~~~~~~,,,,,,,,,,O,,~~~~~~ +AAAAAA,,,,......mmmmmmmmmmAAAAAA~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^......~~~~~~~~~,,,,,,,,,,.....,,~~~~~ +AAAAAAAOAAAAmmmmmmmmmmmmAAAAA*mmmm~~~~~~~~~~~~~^^^^^^^^^^^^^........~~~~~~~~~,,,,,,,........,,~~~~~~ +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmmm~~~~~~~~~~^^^^^^^^^^^.............~~~~~~~~~,,,,.......,,,~~~~~~~~ +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmmmmmmmm~~~~~^^^^^^^................~~~~~~~~~~~~,,,,,,,,,,~~~~~~~~~~~ +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmmmmmmmmm~^^^^^^................~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmmmmmm~~^^^^.....................~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 7cf09edcc54cf85f07c56350b65b1548656d851d Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Sat, 13 Jan 2024 14:51:17 +1300 Subject: [PATCH 12/18] i hath done taks 3 --- text-quest/README-G3.md | 17 ++++++++--------- .../tq/example/DynamicRandomRange.java | 6 ++++-- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/text-quest/README-G3.md b/text-quest/README-G3.md index afd2719..e1d8c9b 100644 --- a/text-quest/README-G3.md +++ b/text-quest/README-G3.md @@ -21,7 +21,7 @@ which the randomness can be obtained. ## Fast & cheap randomness In Java the `Math.random()` method is a **low-quality** and fast method for generating random -**double** values. It returns a pseudorandom number in the range **>= 0.0 and <1.0**. It turns out +**double** values. It returns a pseudorandom number in the range **>= 0.0 and <1.0**. It turns out having a random value beween 0 and 1 is quite useful, as you can think of this as being a **random fraction**. @@ -66,7 +66,7 @@ public class CoinToss { } else if (rand >= 0.5 && !guessTails) { System.out.println("Correct, it was heads (>= 0.5)!"); } else { - System.out.println("Oops, it was " + System.out.println("Oops, it was " + (rand < 0.5 ? "tails" : "heads") + ". Try again!"); } @@ -120,12 +120,12 @@ summoning your math teacher for assistance. Either way, bravo! You figured out y number between 0 and `chestCoinMaximum`. The result would be a decimal, but we can round the value to a nice integer to get whole integers between 0 and `chestCoinMaximum`. For example: -| Random Double | Chest Coin Maximum | Scary Math | Result | Rounded | -|:--------------|:-------------------|:-----------|:-------|:--------| -| 0.0 | 10 | `0.0 × 10` | 0.0 | 0 | -| 0.2 | 10 | `0.2 × 10` | 2.0 | 2 | -| 0.8 | 10 | `0.8 × 10` | 8.0 | 8 | -| 0.99999999 | 10 | `0.99999999 × 10` | 9.99999999 | 10 | +| Random Double | Chest Coin Maximum | Scary Math | Result | Rounded | +| :------------ | :----------------- | :---------------- | :--------- | :------ | +| 0.0 | 10 | `0.0 × 10` | 0.0 | 0 | +| 0.2 | 10 | `0.2 × 10` | 2.0 | 2 | +| 0.8 | 10 | `0.8 × 10` | 8.0 | 8 | +| 0.99999999 | 10 | `0.99999999 × 10` | 9.99999999 | 10 | In Java the `Math.random()` method can round a `double` value into a `long` value. When you only want an `int` you can **cast** a `long` into an `int` by adding `(int)` in front of the value you @@ -147,7 +147,6 @@ public class DynamicRandomRange { public static int randomIntFromZeroTo(int max) { // TODO: implement this method by generating a random integer between 0 and max - return 0; } public static void main(String[] args) throws IOException { diff --git a/text-quest/src/test/java/coding101/tq/example/DynamicRandomRange.java b/text-quest/src/test/java/coding101/tq/example/DynamicRandomRange.java index dfee527..e1394a8 100644 --- a/text-quest/src/test/java/coding101/tq/example/DynamicRandomRange.java +++ b/text-quest/src/test/java/coding101/tq/example/DynamicRandomRange.java @@ -8,8 +8,10 @@ public class DynamicRandomRange { public static int randomIntFromZeroTo(int max) { - // TODO: implement this method by generating a random integer between 0 and max - return 0; + double outPut = (Math.random() * max); + int roundedOutPut = (int) Math.round(outPut); + + return roundedOutPut; } public static void main(String[] args) throws IOException { From 62b006a9aa35de38035c24b70ec723f9d7294215 Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Sat, 13 Jan 2024 15:17:00 +1300 Subject: [PATCH 13/18] done taks 4 --- .../src/main/java/coding101/tq/TextQuest.java | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/text-quest/src/main/java/coding101/tq/TextQuest.java b/text-quest/src/main/java/coding101/tq/TextQuest.java index 5380b83..8673fb3 100644 --- a/text-quest/src/main/java/coding101/tq/TextQuest.java +++ b/text-quest/src/main/java/coding101/tq/TextQuest.java @@ -262,11 +262,27 @@ private void interactWithChest() throws IOException { final GameConfiguration config = player.config(); int coinsFound = 0; int damageTaken = 0; + boolean trap; - // TODO: open chest and deal with outcome: damage vs coins; decide first if - // the chest provides coins or deducts health. Then decide either how many - // coins to reward with, or health to deduct from, the player, updating the - // coinsFound or damageTaken variables appropriately. + double outPut = (Math.random() * 100); + int roundedOutPut = (int) Math.round(outPut); + + // Decide wheater to give coins or pain + if (roundedOutPut >= config.chestRewardFactor()) { + trap = true; + } else { + trap = false; + } + + // givineing coins + if (trap) { + outPut = (Math.random() * config.chestCoinsMaximum()); + coinsFound = (int) Math.round(outPut); + } else { + // gieving damagef + outPut = (Math.random() * config.chestHealthDamageMaximum()); + damageTaken = (int) Math.round(outPut); + } if (coinsFound > 0) { message = MessageFormat.format(bundle.getString("chest.coinsAcquired"), coinsFound); From a339317c456650de6102eff2ad07fb117f7855ff Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Mon, 15 Jan 2024 15:52:26 +1300 Subject: [PATCH 14/18] j --- text-quest/src/main/java/coding101/tq/TextQuest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/text-quest/src/main/java/coding101/tq/TextQuest.java b/text-quest/src/main/java/coding101/tq/TextQuest.java index a434f48..79390b9 100644 --- a/text-quest/src/main/java/coding101/tq/TextQuest.java +++ b/text-quest/src/main/java/coding101/tq/TextQuest.java @@ -502,6 +502,7 @@ public static void main(String[] args) { cl = null; try (Terminal terminal = createTerminal(config)) { + TerminalSize screenSize = terminal.getTerminalSize(); if (screenSize.getColumns() < 30 || screenSize.getRows() < 10) { printErrorAndExit("Terminal must be at least 30x10."); From 1b3fffd43af404250adbfa556ba8e9358f91804b Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Fri, 19 Jan 2024 18:55:52 +1300 Subject: [PATCH 15/18] working add method --- .../test/java/coding101/tq/example/LinkedLists.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/text-quest/src/test/java/coding101/tq/example/LinkedLists.java b/text-quest/src/test/java/coding101/tq/example/LinkedLists.java index af0c944..6492371 100644 --- a/text-quest/src/test/java/coding101/tq/example/LinkedLists.java +++ b/text-quest/src/test/java/coding101/tq/example/LinkedLists.java @@ -90,7 +90,17 @@ public void clear() { * @param item the item to add */ public void add(T item) { - // TODO: add item to the end of the list + var newElement = new LinkedListElement(item); + if (head != null) { + for (var element = this.head; element != null; element = element.next) { + if (element.next == null) { + element.next = newElement; + return; + } + } + } else { + head = newElement; + } } /** From c01758082198fcc75918b2f7b933637cc8af017a Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Fri, 19 Jan 2024 19:03:47 +1300 Subject: [PATCH 16/18] foreach works --- .../src/test/java/coding101/tq/example/LinkedLists.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/text-quest/src/test/java/coding101/tq/example/LinkedLists.java b/text-quest/src/test/java/coding101/tq/example/LinkedLists.java index 10ab40b..9f8f371 100644 --- a/text-quest/src/test/java/coding101/tq/example/LinkedLists.java +++ b/text-quest/src/test/java/coding101/tq/example/LinkedLists.java @@ -110,7 +110,9 @@ public void add(T item) { * @param fn the callback function to call for every item in the list */ public void forEach(Consumer fn) { - // TODO: iterate over all items in the list and invoke fn.accept() on each + for (var element = this.head; element != null; element = element.next) { + fn.accept(element.item()); + } } /** From 65231607517aee302e9e7175a5cd5296eae8560f Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Fri, 19 Jan 2024 19:05:19 +1300 Subject: [PATCH 17/18] size done --- .../src/test/java/coding101/tq/example/LinkedLists.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/text-quest/src/test/java/coding101/tq/example/LinkedLists.java b/text-quest/src/test/java/coding101/tq/example/LinkedLists.java index 9f8f371..5c02684 100644 --- a/text-quest/src/test/java/coding101/tq/example/LinkedLists.java +++ b/text-quest/src/test/java/coding101/tq/example/LinkedLists.java @@ -123,8 +123,9 @@ public void forEach(Consumer fn) { public int size() { int size = 0; - // TODO: count and return the number of elements in the list - + for (var element = this.head; element != null; element = element.next) { + size++; + } return size; } From dc0f07d562cba4ef0f52c44b8f5b363a0793eef8 Mon Sep 17 00:00:00 2001 From: Casper Hillyer Magoffin Date: Fri, 19 Jan 2024 19:29:30 +1300 Subject: [PATCH 18/18] done insert after --- .../test/java/coding101/tq/example/LinkedLists.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/text-quest/src/test/java/coding101/tq/example/LinkedLists.java b/text-quest/src/test/java/coding101/tq/example/LinkedLists.java index 5c02684..39c81e1 100644 --- a/text-quest/src/test/java/coding101/tq/example/LinkedLists.java +++ b/text-quest/src/test/java/coding101/tq/example/LinkedLists.java @@ -138,6 +138,17 @@ public int size() { */ public void insertAfter(T item, T after) { // TODO insert item behind after, or the end of the list if not found + var newElement = new LinkedListElement(item); + for (var element = this.head; element != null; element = element.next) { + if (element.item.equals(after)) { + newElement.next = element.next; + element.next = newElement; + return; + } else if (element.next == null) { + element.next = newElement; + return; + } + } } /**