lectura de Java en una matriz 2D de un archivo

Estoy escribiendo un programa de juego de laberinto que se ve así:

import java.util.*;
import java.io.*;


public class MazeGame {

    public static void main(String[] args) throws Exception{

        //Display the maze
        char treasureMaze[][] = {{'P','.','X','X','.'},{'.','X','.','.','.'},{'.','.','.','X','.'},{'X','X','T','.','.'},{'.','.','X','.','.'}}; 
        display(treasureMaze);
        int vertical = 0;
        int horizontal = 0;


        //Give Move Options
        options();

        //Setup a while loop that continues until the user has gotten to the treasure, or 'P'
        while(treasureMaze[vertical][horizontal] != 'T'){
        //Get Users Decision
        Scanner moveChoice = new Scanner(System.in);
        int choice = moveChoice.nextInt();


        if(choice == 1){
            System.out.println("You chose to Move up");
        }
        else if(choice == 2){
            System.out.println("You chose to Move down");
        }
        else if(choice == 3){
            System.out.println("You chose to Move left");
        }
        else if(choice == 4){
            System.out.println("you chose to Move right");
        }
        else{
            return;
        }


        //Move the Player: Each choice will move the player according to their choice and then re-display the map and options
        //so that they can move through the maze
        //Move Up
        if(choice == 1){
            if(vertical - 1 < 0){
                System.out.println("\nCannot move there! Try something else\n");
                display(treasureMaze);
                options();
            }
            else if(treasureMaze[vertical - 1][horizontal] == '.'){
                treasureMaze[vertical - 1][horizontal] = 'P';
                treasureMaze[vertical][horizontal] = '.';
                vertical -= 1;
                display(treasureMaze);
                options();
            }
            else if(treasureMaze[vertical - 1][horizontal] == 'T'){
                System.out.println("\nCongratulations you won!");
                treasureMaze[vertical][horizontal] = 'T';
            }
            else{
                System.out.println("\nCannot move there! Try something else\n");
                display(treasureMaze);
                options();
            }
        }

        //Move Down
        else if(choice == 2){
            if(vertical + 1 < 0){
                System.out.println("\nCannot move there! Try something else\n");
                display(treasureMaze);
                options();
            }
            else if(treasureMaze[vertical + 1][horizontal] == '.'){
                treasureMaze[vertical + 1][horizontal] = 'P';
                treasureMaze[vertical][horizontal] = '.';
                vertical += 1;
                display(treasureMaze);
                options();
            }               
            else if(treasureMaze[vertical + 1][horizontal] == 'T'){
                System.out.println("\nCongratulations you won!");
                treasureMaze[vertical][horizontal] = 'T';
            }
            else{                   
                System.out.println("\nCannot move there! Try something else\n");
                display(treasureMaze);
                options();
                }
            }

        //Move Left
        else if(choice == 3){
            if(horizontal - 1 < 0){
                System.out.println("\nCannot move there! Try something else\n");
                display(treasureMaze);
                options();
            }
            else if(treasureMaze[vertical][horizontal - 1] == '.'){
                treasureMaze[vertical][horizontal - 1] = 'P';
                treasureMaze[vertical][horizontal] = '.';
                horizontal -= 1;
                display(treasureMaze);
                options();
            }
            else if(treasureMaze[vertical][horizontal - 1] == 'T'){
                System.out.println("\nCongratulations you won!");
                treasureMaze[vertical][horizontal] = 'T';
            }
            else{
                System.out.println("\nCannot move there! Try something else\n");
                display(treasureMaze);
                options();
            }
        }

        //Move Right
        else if(choice == 4){
            if(horizontal + 1 < 0){
                System.out.println("\nCannot move there! Try something else\n");
                display(treasureMaze);
                options();
            }
            else if(treasureMaze[vertical][horizontal + 1] == '.'){
                treasureMaze[vertical][horizontal + 1] = 'P';
                treasureMaze[vertical][horizontal] = '.';
                horizontal += 1;
                display(treasureMaze);
                options();
            }
            else if(treasureMaze[vertical][horizontal + 1] == 'T'){
                System.out.println("\nCongratulations you won!");
                treasureMaze[vertical][horizontal] = 'T';
            }
            else{
                System.out.println("\nCannot move there! Try something else\n");
                display(treasureMaze);
                options();
            }
        }
        else{
            return;
        }

    }
    }




    //Display Object: prints out the maze for the user
    public static void display(char x[][]){
        for(int row = 0; row < x.length; row++){
            for(int column = 0; column < x[row].length; column++){
                System.out.print(x[row][column] + "\t");
            }
            System.out.println();
        }
    }

    //Options Object: gives the options menu to the user
     static void options(){
         System.out.println("You may:");
            System.out.println("\t1) Move up");
            System.out.println("\t2) Move down");
            System.out.println("\t3) Move left");
            System.out.println("\t4) Move right");
            System.out.println("\t0) Quit");

    }
}

Este programa funciona bien cuando le doy la matriz para el TreasureMaze, pero me gustaría poder leer en diferentes laberintos de un archivo de texto y estoy perplejo de cómo hacerlo. ¿Necesito usar un escáner para leer en la matriz una variable o algo así? Gracias de antemano por el consejo.

Respuesta 1

Estoy trabajando en una aplicación que puede cambiar entre el modo nocturno y el día. Hice un archivo attrs con los valores <? Xml version = "1.0" encoding = "utf-8"?> <resources> <declare-styleable ...

Estoy generando archivos orc usando la siguiente importación org.apache.hadoop.io.Text; import org.apache.hadoop.hive.ql.io.orc._; val orcLine: OrcStruct = OrcUtils.createOrcStruct (...

He escrito una DLL en C que usa printf. Estoy usando este dll para un contenedor en Java, con JNA. El problema es que los datos de printf solo aparecen al final de la aplicación Java. Así que traté de usar el sistema ...

Estoy automatizando la descarga de un archivo con SilkTest. En IE8, aparece una barra de información que dice "Para ayudar a proteger su seguridad, Internet Explorer bloqueó ... Haga clic aquí para ver las opciones ...". Quiero poder ...