2012-04-13 10 views
5

sto scrivendo un piccolo gioco java e sto memorizzare impostazioni di gioco globali in una struttura di classe come quella qui sotto:Il modo migliore per negozio di gioco variabili di configurazione in Java

public class Globals { 
    public static int tileSize = 16; 
    public static String screenshotDir = "..\\somepath\\.."; 
    public static String screenshotNameFormat = "gameNamexxx.png"; 
    public static int maxParticles = 300; 
    public static float gravity = 980f; 
    // etc 
} 

Mentre questo è molto comodo per lavorare con Mi piacerebbe sapere se questo è lo schema accettato.

risposta

10

Archiviare in un file .properties.

config.properties

tile.size=16 
screenshot.dir=..\\somepath\\.. 

Leggendolo

// Make sure this happens only the first time you start your application 
Properties properties = new Properties(); 
// You can use FileInputStream, ClassLoader.getResourceAsStream or a reader too 
properties.load(...) 

Usandolo

int tileSize = Integer.valueOf(properties.getProperty("tile.size")); 
String screenshotDir = properties.getProperty("screenshot.dir"); 

Per s implify le cose, e per mantenere le modifiche minime, si può anche fare qualcosa di simile:

public class Globals { 
    private static final Properties properties = new Properties(); 

    static { 
     // do the loading here 
    } 

    public static final int TILE_SIZE = 
     Integer.valueOf(properties.getProperty("tile.size")); 
    public static final String SCREENSHOT_DIR = 
     properties.getProperty("screenshot.dir"); 
    // etc 
} 
+1

Personalmente, preferisco archiviarli in POJO e (de) serializzarli in file XML con qualche libreria XStream. Molto più conveniente della lettura delle proprietà. Troppo pigro per scrivere la risposta separata però. – bezmax

+0

+1 per le proprietà: sono semplici, tutti li comprendono e sono modificabili dall'utente finale. –

+0

Nel caso in cui si desideri nascondere le proprietà da un malfattore, l'uso della classe con vars statico sembra più preferibile del file .properties in termini di sicurezza. La classe può ancora essere decompilata, ma è un compito più complicato. –

1

Se è davvero una piccola applicazione, lo farà. Non è l'ideale ma non ha senso introdurre troppa sofisticazione su piccola scala.

Leggere i valori da un file di proprietà.

Problemi correlati