Argghh, nunca me gusto el Pong. Yo esperaba el juego aereo ...
Con respecto al codigo del Pong, les paso los bug que encontre.
Primero:
En el archivo csprite.cpp; en el metodo CFrame::load() hay un bug muy comun en los programas que usan SDL (yo mismo lo he cometido varias veces) y en un error que no se suele detectar en el SO Windows. La sentencia
- Código: Seleccionar todo
img = SDL_DisplayFormat( img );
La documentacion de SDL advierte que NO es posible usa la misma superficie como parametro y como retorno. La solucion es usar una variable auxiliar:
- Código: Seleccionar todo
SDL_Surface *aux = SDL_DisplayFormat( img );
img = aux;
Otro error, en el mismo archivo, se encuentra en los constructores de la clase CSprite. El constructor no inicializa correctamente los atributos de la clase, en particular el atributo "estado" que aparece no inicializado. Personalmente inicialice dicha variable estado=0, pero no estoy seguro si es ESE un valor correcto. A mi me funciona.
Otro error se produce en los archivos events.cpp y .h:
Aqui el error es un poco mas raro. Al parecer, SDL define un nombre llamado "SDL_Events", cuyo nombre es el mismo de la clase que se define en esos archivos. Lo que sucede aqui es una colision de nombres y, en principio, una solucion es renombrar la clase "SDL_Events" con otro nombre, como "SDL_EventsX".
Otro error se produce en el archivo main.cpp, dentro de la funcion main():
Aqui, hay una instanciacion de objetos pero aparece la palabra "class" en donde no deberia aparecer:
- Código: Seleccionar todo
class Intro Intr; //Error
Intro Intr; //Ok
class Phong NO(Levs); //Nop
Phong NO(Levs); //Ok
Las lineas a corregir son: 48; 50; 54 a 56. Tambien aqui aparece la clase "SDL_Events" que yo renombre con "SDL_EventsX"
Los dos ultimos errores son errores en tiempo de compilacion. Fijate si podes aumentar la exigencia sintactica de tu compilador para que este detecte todos los errores y warnings.
Para el compilador g++, podes usar las siguientes opciones:
- Código: Seleccionar todo
g++ -Wall -pedantic archivo.cpp
Por ultimo, el error trivial, el archivo "PER.TTF" que se encuentra en la carpet "fonts" debe ser renombrado por "PER.ttf" para que tu codigo sea compatible con linux.
Puffff, creo que con eso deberia andar, o por lo menos a mi me funciona.
Espero que te sea util y ten en cuenta que todos los errores cometidos pudieron ser evitados al aumentar la "exigencia" del compilador (excepto el primer y ultimo error). Es una herramienta muy poderosa.
Saludos