- Código: Seleccionar todo
- g++ -o naves naves.c csprite.o
Me suelta por respuesta lo siguiente:
- Código: Seleccionar todo
- naves.c: In function ‘int init_sprites()’:
 naves.c:64: aviso: conversión obsoleta de una constante de cadena a ‘char*’
 naves.c:67: aviso: conversión obsoleta de una constante de cadena a ‘char*’
 naves.c: In function ‘int main(int, char**)’:
 naves.c:108: error: ISO C++ prohíbe la comparación entre puntero y entero
Y si intento compilarlo con gcc con el comando:
- Código: Seleccionar todo
- gcc -o naves naves.c csprite.o
La respuesta es la siguiente:
- Código: Seleccionar todo
- In file included from naves.c:4:
 csprite.h:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘CFrame’
 csprite.h:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘CSprite’
 naves.c:11: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘fnave’
 naves.c:12: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘fmalo’
 naves.c:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘nave’
 naves.c:14: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘malo’
 naves.c: En la función ‘draw_scene’:
 naves.c:28: error: ‘nave’ no se declaró aquí (primer uso en esta función)
 naves.c:28: error: (Cada identificador no declarado solamente se reporta una vez
 naves.c:28: error: para cada funcion en la que aparece.)
 naves.c:40: error: ‘malo’ no se declaró aquí (primer uso en esta función)
 naves.c: En la función ‘finalize’:
 naves.c:59: error: ‘nave’ no se declaró aquí (primer uso en esta función)
 naves.c:60: error: ‘malo’ no se declaró aquí (primer uso en esta función)
 naves.c: En la función ‘init_sprites’:
 naves.c:64: error: ‘fnave’ no se declaró aquí (primer uso en esta función)
 naves.c:65: error: ‘nave’ no se declaró aquí (primer uso en esta función)
 naves.c:67: error: ‘fmalo’ no se declaró aquí (primer uso en esta función)
 naves.c:68: error: ‘malo’ no se declaró aquí (primer uso en esta función)
 naves.c: En la función ‘main’:
 naves.c:108: aviso: comparación entre puntero y entero
El archivo de cabecera es como sigue:
- Código: Seleccionar todo
- #ifndef CSPRITE_H_
 #define CSPRITE_H_
 #define TRUE 1
 #define FALSE 0
 // CFrame representa un frame independiente de un sprite.
 class CFrame {
 public:
 SDL_Surface *img;
 void load(char *path);
 void unload();
 };
 // La clase CSprite está formada por un array de frames;
 class CSprite {
 private:
 int posx,posy;
 int state;
 int nframes;
 int cont;
 public:
 CFrame *sprite;
 CSprite(int nf);
 CSprite();
 void finalize();
 void addframe(CFrame frame);
 void selframe(int nf);
 int frames() {return cont;}
 void setx(int x) {posx=x;}
 void sety(int y) {posy=y;}
 void addx(int c) {posx+=c;}
 void addy(int c) {posy+=c;}
 int getx() {return posx;}
 int gety() {return posy;}
 int getw() {return sprite[state].img->w;}
 int geth() {return sprite[state].img->h;}
 void draw(SDL_Surface *superficie);
 int colision(CSprite sp);
 };
 #endif /* CSPRITE_H_ */
Os dejo también en pastebin la implementación:
http://pastebin.org/428195
Y el propio archivo de la aplicación:
http://pastebin.org/428197
(Los pongo en pastebin para que este post no sea inmenso.)
Muchas gracias por anticipado por cualquier pista o ayuda. Saludos!





