From 510b2ed752b1927ffca88390692a503f765a7359 Mon Sep 17 00:00:00 2001 From: Illia Soloviov <74905269+wav3solo@users.noreply.github.com> Date: Thu, 1 Feb 2024 16:02:41 +0100 Subject: [PATCH] added obstacles recognition --- src/SnakeBot.java | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/SnakeBot.java b/src/SnakeBot.java index 90a1f87..747a2d5 100644 --- a/src/SnakeBot.java +++ b/src/SnakeBot.java @@ -52,10 +52,13 @@ public class SnakeBot extends Bot{ int leftIndex = centerIndex - 1; int rightIndex = centerIndex + 1; - frontIsBlocked = view.data.charAt(frontIndex) == '*'; - backIsBlocked = view.data.charAt(backIndex) == '*'; - leftIsBlocked = view.data.charAt(leftIndex) == '*'; - rightIsBlocked = view.data.charAt(rightIndex) == '*'; + char[] obstacles = {'#', '~', 'X', '*'}; + + frontIsBlocked = containsChar(obstacles, view.data.charAt(frontIndex)); + backIsBlocked = containsChar(obstacles, view.data.charAt(backIndex)); + leftIsBlocked = containsChar(obstacles, view.data.charAt(leftIndex)); + rightIsBlocked = containsChar(obstacles, view.data.charAt(rightIndex)); + trapped = frontIsBlocked && backIsBlocked && leftIsBlocked && rightIsBlocked; if (trapped) { @@ -65,6 +68,15 @@ public class SnakeBot extends Bot{ } } + private boolean containsChar(char[] array, char target) { + for (char c : array) { + if (c == target) { + return true; + } + } + return false; + } + private char checkMove(char move) throws Exception { if (frontIsBlocked) { resetMovesSequence();