Файл настроек игры - PullRequest
       7

Файл настроек игры

1 голос
/ 21 ноября 2011

Привет, я работаю в системе загрузчика настроек, и она не хочет работать, я пробовал разные способы сделать это, и этот выглядит лучше, кроме того, что он не работает, могу ли я получить некоторую помощь, потому что янужно сделать это к концу дня.

Вот код:

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

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011

Вам нужно связать эти if с else с.

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

В противном случае, все значения if оцениваются каждый раз при запуске цикла, поэтому Unkown сообщение будет отображаться для всех строк, которые не являются комментариями, независимо от того, соответствовали ли они чему-либо ранее или нет.

0 голосов
/ 21 ноября 2011

Видимо, в вашем коде для любой строки без комментариев вы печатаете предупреждение.

Полагаю, вы действительно хотели использовать else if вместо if каждый раз, поскольку в вашем коде окончательный else относится только к if выше.

...