2012-04-13 9 views
5

Estoy escribiendo un pequeño juego java y estoy almacenar la configuración global del juego en una estructura de clases como la siguiente:La mejor forma de variables de configuración de almacenamiento de juegos en 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 
} 

Si bien esto es muy conveniente para trabajar con Me gustaría saber si este es el patrón aceptado.

Respuesta

10

Almacenar en un archivo .properties.

config.properties

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

Su lectura

// 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(...) 

Su uso

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

Para s implify cosas, y para mantener los cambios mínimos, también se puede hacer algo como esto:

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, prefiero almacenarlos en POJO y (de) serializarlos en un archivo XML con alguna biblioteca XStream. Mucho más conveniente que leer propiedades. Demasiado perezoso para escribir la respuesta por separado sin embargo. – bezmax

+0

+1 para propiedades: son completamente simples, todos las entienden y son editables por el usuario final. –

+0

En caso de que quiera ocultar propiedades de malefactor, usar clases con vars estáticos parece ser más preferible que el archivo .properties en términos de seguridad. La clase todavía se puede decompilar, pero esa es una tarea más complicada. –

1

Si realmente es una pequeña aplicación, lo hará. No es ideal, pero no tiene sentido aportar demasiada sofisticación a pequeña escala.

Pero lea esos valores de un archivo de propiedades.

Cuestiones relacionadas