Voy lento pero seguro. Ya hemos hecho limpieza en las librerías y arrays del juego. El código en esa parte ha quedado mucho más limpio y comprensible.
Ahora hay que seguir con las clases para los textos. Es más complicado de lo que parece, ya que hay un montón de propiedades a tener en cuenta para presentar los textos adecuadamente. Y la cosa se complica mucho más si quiero hacer animaciones chulas con el texto. Más sobre este tema pronto.
miércoles, 19 de marzo de 2008
miércoles, 12 de marzo de 2008
Array como argumento de función.
Un array pasado a una función como argumento, se convierte en puntero para la función.
Lo explican muy bien aqui: http://www.eskimo.com/~scs/cclass/notes/sx10f.html
Qué cosas tiene el C... hay que quererlo tal y como es :)
Lo explican muy bien aqui: http://www.eskimo.com/~scs/cclass/notes/sx10f.html
Qué cosas tiene el C... hay que quererlo tal y como es :)
lunes, 10 de marzo de 2008
¿Arrays de enteros o array de struct?
Me he dado cuenta de que la forma de almacenar los datos del juego, como los eventos por escena, los nombres de los ficheros y demás, que estoy utilizando es, sinceramente, una chapuza.
Casi todos los datos son listas de enteros y enums. Los meto en arrays de esta forma:
Luego, en los constructores de los objetos, por ejemplo claseEscena, utilizo funciones que me sacan los datos y construyo las propiedades privadas que necesito en ese momento.
El problema que tiene esta forma de trabajar es que sólo puedo meter enteros en los arrays. Los literales de texto van a parte en funciones específicas. He ahí la chapuza.
Estoy pensando en utilizar structs. Así, podría meter un literal char * junto con los int para cada elemento del array. Podría mantener las llamadas a las funciones y la librería de datos quedaría mucho más clara.
Ya veremos qué hago. Lo dejamos en la lista de "estaría bien si...".
Casi todos los datos son listas de enteros y enums. Los meto en arrays de esta forma:
int datosTextos[]= {
12, 0, 0, NORMAL_PEQ, 128, 128, 128, 50, 50,
12, 0, 1, NORMAL_PEQ, 128, 128, 128, 50, 50,
12, 1, 2, ABERRED_GRA,255, 0, 0, 200,300
};
Luego, en los constructores de los objetos, por ejemplo claseEscena, utilizo funciones que me sacan los datos y construyo las propiedades privadas que necesito en ese momento.
El problema que tiene esta forma de trabajar es que sólo puedo meter enteros en los arrays. Los literales de texto van a parte en funciones específicas. He ahí la chapuza.
Estoy pensando en utilizar structs. Así, podría meter un literal char * junto con los int para cada elemento del array. Podría mantener las llamadas a las funciones y la librería de datos quedaría mucho más clara.
Ya veremos qué hago. Lo dejamos en la lista de "estaría bien si...".
lunes, 25 de febrero de 2008
Textos Multilínea
Me he encontrado con un pequeño problema. La librería SDL_ttf, que voy a utilizar para generar los textos, sólo es capaz de crear superficies SDL con textos en una sola línea. Un sprite, una línea. Podría utilizar la generación de "glifos", pero sinceramente, no me apetece. Así que me toca añadir una capa más de abstracción a la clase que se encarga de los textos, creando otra clase capaz de albergar más de un sprite cada línea del texto.
Es un poco pesado de programar, pero qué le vamos a hacer. La clase será "claseParrafoTexto".
También estoy pensando en añadir soporte para varios tipos de letra, tamaño, color, fondo... Si lo hago bien, utilizaré estas mismas clases para la generación de los menús. Si es que algún día los hago :)
Es un poco pesado de programar, pero qué le vamos a hacer. La clase será "claseParrafoTexto".
También estoy pensando en añadir soporte para varios tipos de letra, tamaño, color, fondo... Si lo hago bien, utilizaré estas mismas clases para la generación de los menús. Si es que algún día los hago :)
viernes, 22 de febrero de 2008
Niños, recordad siempre que...
Hay que inicializar todas las propiedades privadas de una clase en C++. Siempre. Siempre. Siempre. Siempre.
Siempre.
Siempre.
Por que si no, recolectas basura de la memoria. Y empiezas a llamar a métodos y funciones con basura en sus argumentos. Y de repente tu programa casca. Sin errores aparentes. De forma aparentemente aleatoria. Y encontrar lo que falla se vuelve un infierno.
Y eso no puede ser. Por que la salud mental sufre. Y nosotros queremos mantener la salud mental. ¿Verdad? Sí... Sí...
domingo, 17 de febrero de 2008
Representación de textos en escena interactiva
Una parte importante de juego son los textos. Por eso, voy a crear una clase sólo para gestionarlos. La clase se llamará claseTextos. Los textos en realidad serán sprites generados al principio de la escena. Los constructores de la escena llamarán a los métodos de la nueva clase para generar todos los textos. Cada texto será un sprite de una lista como propiedad privada de la clase.
En la ejecución de la escena interactiva se mostrará sólo un texto a la vez. Aprovecharé esto para que la clase haga aparecer y desaparecer los textos de forma suave.
Para las escenas en las que se hable con un personaje del juego, crearé otro tipo de escena, ya que la representación de los textos será distinta.
lunes, 28 de enero de 2008
ping?
Es cierto, he dejado descuidado el blog y por lo tanto, el desarrollo. Pero tengo buenas escusas. Mudanza, falta de conexión, estudio para certificarme como administrador de sistemas...
Pero hay planes de desarrollo muy interesantes. Si hay suerte, voy a ayudar a un amigo a realizar su proyecto de fin de carrera. Más noticias pronto.
Pero hay planes de desarrollo muy interesantes. Si hay suerte, voy a ayudar a un amigo a realizar su proyecto de fin de carrera. Más noticias pronto.
Suscribirse a:
Entradas (Atom)