2013-01-31 41 views
1

我正在製作這款遊戲​​叫做高峯時間(在那裏你移動紅色的車)。JAVA:從二維數組中創建對象

到目前爲止,我做了一個二維數組,它從文本文件中讀取關卡。接下來,我想將文本文件中的值轉換爲對象,以便我可以開始使用座標來移動它們。

下面解釋一下我的代碼:首先我製作一個二維數組6x6,用戶可以選擇難度級別,並根據他們選擇的內容來加載4個levels.txt(初學者,中級,高級或專家)。

當你選擇了關卡後,它將加載二維數組中的關卡(我將在代碼下面提供一個關卡,以便你有一個想法)。當關卡加載時,它會給所有內容添加一個「0」(它在我眼中看起來更友好),並用|標誌。

所以現在我想我需要從我剛纔在二維數組中讀取的值中創建對象,以便移動它們(糾正我,如果我錯了),我需要檢查數字周圍的值是否匹配或不匹配,如果匹配,我需要將它們結合起來。

我該如何處理?在此先感謝

到目前爲止我的代碼:

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| | 

回答

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. 
} 

一個問題,你爲什麼要在第三行放一個「=」?

然後,如果你更好地解釋我你想做的事以後我會盡量也寫一些代碼什麼..

+0

我很抱歉,我想我搞砸了的東西,當我粘貼從控制檯輸出。它在右側打印=標誌,它表示玩家必須將紅色轎車(編號1或01)移動到哪裏。 我想要做的是從我剛剛在文本文件中放入bordArray的值中創建對象。正如你可以看到的例子theres | 02 | 02 |,我需要將它們配對,並將它們移出它們以移動它們(我認爲這是正確的方式) – user2029238