- 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!