JAVA:从二维数组中创建对象

时间:2013-01-31 13:48:36

标签: java arrays

我正在制作一款名为“尖峰时刻”的游戏(你可以移动红色汽车)。

到目前为止,我制作了一个2D数组,用于从文本文件中读取级别。接下来,我想将文本文件中的值转换为对象,以便我可以开始使用坐标来移动它们。

稍微解释我的代码:首先我制作一个2D数组6x6,用户可以选择一个难度级别,根据他们选择的内容,它将加载4个level.txt中的一个(初学者,中级) ,高级或专家)。

选择关卡后,它会加载2D数组中的关卡(我会提供一个低于代码的关卡,这样你就有了一个想法)。当加载关卡时,它会向所有内容添加一个“0”(在我眼中看起来更加用户友好)并将值与|登录。

所以现在我想我需要从我刚刚在2D数组中读取的值中创建对象以便移动它们(如果我错了就纠正我),我需要检查数字周围的值是否匹配或者不要不匹配,如果匹配,我需要将它们组合起来。

我该如何处理?提前致谢

到目前为止我的代码:

public class Bord {
private static String[][] bordArray = new String[6][6];

public static void kiesLevel() {
    System.out.println("\nKies moeilijkheidsgraad\n1) Beginner\n2) Intermediate\n3) Advanced\n4) Expert");
    Scanner keyboardScanner = new Scanner(System.in);
    int keuze = keyboardScanner.nextInt();
    switch (keuze) {
        case 1:
            beginner();
            break;
        case 2:
            intermediate();
            break;
        case 3:
            advanced();
            break;
        case 4:
            expert();
            break;
        default:
            throw new NumberFormatException("Geef een geldige invoer");
    }
}

public static void beginner() {
    leesBordIn("c:/users/Glenn/desktop/beginner.txt");

}

public static void intermediate() {
    leesBordIn("d:/intermediate.txt");

}

public static void advanced() {
    leesBordIn("d:/advanced.txt");

}

public static void expert() {
    leesBordIn("d:/expert.txt");

}

private static void leesBordIn(String filename) {
    try {
        BufferedReader br = new BufferedReader(new FileReader(filename));
        String line = null;
        int r = 0;
        while ((line = br.readLine()) != null) {
            for (int c = 0; c < bordArray[r].length; c++) {
                if (line.toCharArray()[c] == '0') {
                    bordArray[r][c] = "  ";
                } else {
                    String characterstring = Character.toString(line.toCharArray()[c]);
                    if (characterstring.length() != 2) {
                        characterstring = "0" + characterstring;
                    }
                    bordArray[r][c] = characterstring;
                }
                System.out.print("|" + bordArray[r][c]);
            }
            if (r == 2) {
                System.out.println("=");
            } else {
                System.out.println("|");
            }
            r++;
        }


    } catch (FileNotFoundException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    } catch (IOException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    }
}

}

等级的例子:

220007
300807
311807
300800
400066
405550

输出示例:

|02|02|  |  |  |07|
|03|  |  |08|  |07|
|03|01|01|08|  |07=
|03|  |  |08|  |  |
|04|  |  |  |06|06|
|04|  |05|05|05|  |

1 个答案:

答案 0 :(得分:0)

在创建bordArray对象之后,我还没有理解你想要做什么,但是我已经看到你可以以更好的方式编写leesBordin方法(如果你想要的话)(尝试不把你的所有方法写成静态) :

private void leesBordIn(String filename)
{
    try
    {
        File file = new File(filename);
        Scanner scanner = new Scanner(file);
        int r = 0;
        while (scanner.hasNextLine())
        {
            String line = scanner.nextLine();
            String[] fields = line.split("");
            for (int c = 0; c < bordArray[r].length; c++)
            {
                if (fields[c+1].equals("0"))
                {
                    bordArray[r][c] = "  ";
                } 
                else 
                {
                    bordArray[r][c] = ("0" + fields[c+1]);
                }
                System.out.print("|" + bordArray[r][c]);
            }
            if (r == 2) 
            {
               System.out.println("=");
            } 
            else
            {
                System.out.println("|");
            }
            r++;
        }
    catch (FileNotFoundException e) 
    {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
}

有一个问题,你为什么在第三行加上“=”?

然后,如果你在我尝试为此编写一些代码之后你更好地向我解释你想要做什么......