Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





plantilla posiciones

Iniciado por Yotes, 20 de Agosto de 2009, 04:33:12 PM

« anterior - próximo »

Yotes

A ver, el titulo no es descriptivo, pero no se me ocurre que poner para explicar lo que quiero hacer.

Estoy encarando un pequeño juego 2d, estilo puzzle en c++, y me surge una duda. Dado que vengo de hacer un par de cosas para j2ME, y alli el mayor problema era la gran variedad de tamaños de pantalla, he tomado por  costumbre definir las posiciones de los elementos del juego (como las opciones del main menu por ejemplo) en alguna clase o interfaz separada, y luego referirme a estas pocisiones donde las necesitaba. Ej:

Código (java) [Seleccionar]


public interface Refs{
   
    //tamaño de la pantalla
    public static int SCR_W=240;
    public static int SCR_H=320;
    //..
    //.
    public static int TITLE_POS_Y=10;
    public static int MENU_POS_Y=50;
    //..
    //.


y luego donde lo necesitara, simplemente usaba Refs.TITLE_POS_Y.

Bueno, esta era mi manera de hacer las cosas, y la verdad no se si es la correcta en este mundillo, pero hasta el momento me ha ido bien con esa metodología.

Resulta que ahora con este juego, no tendré el problema de los diferentes tamaños de pantalla, porque siempre correrá en un tamaño estandart. De cualquier manera me surge la duda sobre como se realiza en un proyecto este aspecto. Es decir, yo podría poner en el codigo directamente las posiciones, pero no me parece una buena alternativa... la otra manera que se me ocurre es crear una cabecera, y no definir ninguna clase, sino solo defines, por ej:

Código (cpp) [Seleccionar]

    #define SCR_W  240
    #define SCR_H  320
    //..
    //.
    #define TITLE_POS_Y 10
    #define MENU_POS_Y 50
    //..


luego importo la cabecera y listo.. pero no se si esto es correcto..

Si alguien me puede tirar alguna ayuda sobre como encarar el tema, estaria muy agradecido,,, sobre todo porque no se ni como googlear esto :(

Saludos
Yotes!

davur

No es buen estilo utilizar el preprocesador con este propósito. Utiliza constantes reales. Y, si realmente quieres tenerlas unificadas en una clase (que puede ser discutible), entonces puedes hacer:

struct Refs
{
    static const int SCR_W = 240;
    static const int SCR_H = 320;

    static const int TITLE_POS_Y = 10;
    static const int MENU_POS_Y = 50;

    // ...
};


Nótese que puedes inicializar los miembros estáticos en la propia declaración de clase únicamente porque son constantes y de tipo integral. Si no fuera así, tendrías que definirlos fuera de la declaración de clase.

Yotes

bien, me parece mas apropiado, muchas gracias!  :D

(de cualquier manera escucho mas alternativas)

Yotes!

Marci

Además de guardar los datos en una estructura, tambien puedes utilizar una clase y al declarar esas variables miembro como estáticas puedes acceder a ellas sin necesidad de crear un objeto de dicha clase (por si quieres añadir alguna funcionalidad extra aparte de inicializar variables).

Otra solución que se me ocurre es utilizar namespaces que son conjuntos que agrupan identificadores bajo un nombre común. Podria ser algo asi para declararlo:
Código (cpp) [Seleccionar]

namespace net_connect
{
  int make_connection();
  int test_connection();
  //so forth...
}


y esto para usarlo:
Código (cpp) [Seleccionar]

net_connect::make_connection();






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.