Итак, я работаю над играми с головоломкой с 8 головоломками, и у меня возникают проблемы. Так позволяет сказать, что мое нынешнее состояние S является:Как сместить элементы в 2D-массив строк
3 7 B
, где B представляет собой пустое пространство (поэтому я делаю свой 2D массив в типе String). Поэтому я пытаюсь вызвать методы перемещения, которые в конечном итоге перемещают пространство B вверх, вниз, влево или вправо. Я уже записал положение B, поэтому в этом случае это будет [1,2]. Я использую это место B, чтобы увидеть, могу ли я сделать действительное движение вверх (не могу сделать это, если B [0] = 0), действительное движение вниз (не может быть выполнено, если B [0] = 2), действительный ход left (не может сделать это, если B [1] = 0) или действительное перемещение вправо (не может быть выполнено, если B [1] = 2). Итак, теперь, если у меня есть правильный ход, чтобы сказать, как я могу реализовать эту функцию перемещения? Я не знаю, как точно заменить местоположение B в моем S-состоянии тем, что над ним, если все в стиле String.
общественного класс EightPuzzle {
String[][] gameBoard = new String[3][3];
String[] bLocation = new String[2];
String board;
String dir;
/*public void ReadFromTxt(String file) throws FileNotFoundException, IOException {
String read;
FileReader f = new FileReader(file);
int i = 0;
int j;
BufferedReader b = new BufferedReader(f);
System.out.println("Loading puzzle from file...");
while((read = b.readLine())!=null){
if(read.length()==3){
for(j=0;j<3;j++){
board[i][j] = (int)(read.charAt(j)-48);
}
}
i++;
}
b.close();
System.out.println("Puzzle loaded!");
}*/
public String[][] setState(String board){
gameBoard[0][0] = board.substring(0,1);
gameBoard[0][1] = board.substring(1,2);
gameBoard[0][2] = board.substring(2,3);
gameBoard[1][0] = board.substring(4,5);
gameBoard[1][1] = board.substring(5,6);
gameBoard[1][2] = board.substring(6,7);
gameBoard[2][0] = board.substring(8,9);
gameBoard[2][1] = board.substring(9,10);
gameBoard[2][2] = board.substring(10,11);
System.out.println(Arrays.deepToString(gameBoard));
return gameBoard;
}
public String[][] randomizeState(){
return null;
}
public void move(String dir){
if(dir.equalsIgnoreCase("up")){
if(bLocation[0].equals("0")){
//cannot move up
}
else{
int[] temp;
}
}
if(dir.equalsIgnoreCase("down")){
if(bLocation[0].equals("2")){
//cannot move down
}
else{
}
}
if(dir.equalsIgnoreCase("left")){
if(bLocation[1].equals("0")){
//cannot move left
}
else{
}
}
if(dir.equalsIgnoreCase("right")){
if(bLocation[1].equals("2")){
//cannot move right
}
else{
}
}
}
public void bLocation(String board){
setState(board);
for(int i=0; i<gameBoard.length; i++){
for(int j=0; j<gameBoard[i].length; j++){
if(gameBoard[i][j].equals("b"))
{
bLocation[0] = Integer.toString(i);
bLocation[1] = Integer.toString(j);
}
}
}
}
public static void main (String[]args){
EightPuzzle b1=new EightPuzzle();
b1.setState("156 37b 284");
b1.bLocation("156 37b 284");
}
}
Вы можете использовать 'char' вместо' String'. – 4castle
Можете ли вы поделиться фрагментом кода, который вы пробовали до сих пор? –
Вы спрашиваете, как менять значения двух переменных? Переключение 'S [0] [2]' с 'S [1] [2]'? – 4castle