Я пытаюсь построить игру по поиску сокровищ, используя предоставленные мне тестовые файлы. Эти текстовые файлы имеют символы S, W, E, N и T, которые соответствуют направлениям, за исключением T, который является сокровищем. Все работает нормально, пока не сместит длину строк / столбцов. Я подозреваю, что это как-то связано с циклами for, но я не уверен. Есть ли способ сделать это без циклов for или у кого-нибудь есть какие-либо советы, чтобы вернуть это в нужное русло?
Вот мой Обновленный код до сих пор:
import java.util.*;
public class NewGridGame
{
public static final int FALL_OFF = -1;
public static final int GOING_IN_CIRCLES = -2;
private int row;
private int col;
private char[][] gameBoard;
NewGridGame(int conRow, int conCol, char[][] conGameBoard)
{
row = conRow;
col = conCol;
gameBoard = new char[row][col];
for (int i = 0; i < gameBoard.length; i++)
{
for (int j = 0; j < gameBoard[i].length; j++)
{
gameBoard[i][j] = conGameBoard[i][j];
}
}
System.out.println(Arrays.deepToString(gameBoard));
}
public int playGame()
{
boolean[][] beenHereBefore = new boolean[row][col];
int turns = 0;
int i = 0;
int j = 0;
while (true)
{
if(beenHereBefore[i][j] == true)
{
return GOING_IN_CIRCLES;
}
else
{
beenHereBefore[i][j] = true;
}
if (gameBoard[i][j] == 'N')
{
if(i-1 >= 0)
{
i--;
turns++;
System.out.println(turns);
System.out.println(gameBoard[i][j]);
}
else
{
return FALL_OFF;
}
}
else if(gameBoard[i][j] == 'S')
{
if(i+1 < row)
{
i++;
turns++;
System.out.println(turns);
System.out.println(gameBoard[i][j]);
}
else
{
return FALL_OFF;
}
}
else if (gameBoard[i][j] == 'E')
{
if (j+1 < col)
{
j++;
turns++;
System.out.println(turns);
System.out.println(gameBoard[i][j]);
}
else
{
return FALL_OFF;
}
}
else if(gameBoard[i][j] == 'W')
{
if (j-1 >= 0)
{
j--;
turns++;
System.out.println(turns);
System.out.println(gameBoard[i][j]);
}
else
{
return FALL_OFF;
}
}
else if(gameBoard[i][j] == 'T')
{
return turns;
}
}
}
}
Вот также пример тестового файла.
ES
TW
этот должен возвращать 3, что является числом ходов (поворотов, в моем коде), но вместо этого он достигает W (что занимает 2 хода) и возвращает -2, что только для случаев, когда он был в положении более одного раза. Кроме того, не все массивы являются квадратами, некоторые для примера 1x200 или 4x5. Буду очень признателен за любую помощь!