2011-11-21 85 views
1

嗨我正在設置加載程序系統,它不想工作,我試過不同的方式做它,這看起來最好,除了它不工作,我可以請有一些幫助,因爲我需要在一天結束時完成。遊戲設置文件概率

下面是代碼:

public GameSettings getGameSettings() throws Exception 
{ 
    Resolution GameResolution; 
    GameSettings gs = new GameSettings(true, true, false, 50, new Resolution(800, 600)); 

    for(int k = 0; k < lines.size(); k++) 
    { 
     String[] s1 = lines.get(k).split("="); 

     if(s1[0].equals("volume")) 
     { 
      gs.setVolume(Integer.parseInt(s1[1])); 
     } 
     if(s1[0].equals("musicOn")) 
     { 
      gs.setMusicOn(Boolean.parseBoolean(s1[1])); 
     } 
     if(s1[0].equals("soundOn")) 
     { 
      gs.setSoundOn(Boolean.parseBoolean(s1[1])); 
     } 
     if(s1[0].equals("aOpenGL")) 
     { 
      gs.setAOpenGL(Boolean.parseBoolean(s1[1])); 
     } 
     if(s1[0].equals("GameRes")) 
     { 
      String[] s2 = s1[1].split("x"); 
      GameResolution = new Resolution(Integer.parseInt(s2[1]), Integer.parseInt(s2[1])); 
      gs.setGameResolution(GameResolution); 
     } 
     if(s1[0].startsWith("#")) 
     { 
      continue; 
     } 
     else 
     { 
      System.err.println("WARNING: Unknow setting in settings file ('" + s1[0] + "')"); 
      continue; 
     } 
    } 

    return gs; 
} 

,這是 'settings.dat' 文件內容:

#************************** Settings 
#Settings file version 1.5 
musicOn=false 
volume=75 
soundOn=true 
aOpenGL=false 
GameRes=1000x800 
#end of settings file 

最後的控制檯輸出:

WARNING: Unknow setting in settings file ('musicOn') 
WARNING: Unknow setting in settings file ('volume') 
WARNING: Unknow setting in settings file ('soundOn') 
WARNING: Unknow setting in settings file ('aOpenGL') 
WARNING: Unknow setting in settings file ('GameRes') 
+0

我把'*'放在遊戲名稱的方式 –

+0

將文件解析成某種類型的Map(可能是一個HashMap)可能會更有用,所以如果您需要修改任何設置您可以在飛行中這樣做的遊戲。當程序存在時,您可以將該文件取出。 –

回答

0

顯然,在您的任何非註釋行的代碼中,您會打印警告。

我猜你其實是想else if而不是if每一次使用,在你的代碼最終elseif以上版本。

+0

認爲可能工作,沒有更多的錯誤輸出,讓我只是檢查 –

+0

謝謝你這麼多,它工作 –

2

您需要鏈接那些if s與else s。每個循環運行時間

if (str.equals("a")) { 
    ... 
} else if (str.equals("b")) { 
    ... 
} else { 
    // failed to match anything 
} 

否則,所有的IFS進行評估,所以Unkown消息將顯示該不是評論,不管他們是否之前或不匹配的東西都行。