Hola a todos,
Escribo ya aquí en modo desesperado por que no conseguimos hacer que el personaje se mueva.A ver os cuento tengo esta clase animación:
#ifndef _ANIMACION_
#define _ANIMACION_
#include <Gosu/Gosu.hpp>
#include <vector>
using namespace std;
class Animacion {
public:
Animacion(Gosu::Graphics& graphics){
coorX_=100;
coorY_=50;
animacion_= new Gosu::Image (graphics,Gosu::sharedResourcePrefix()+
L"../Imagenes/definitivos/granjero/derecha1");
Granjero[0] = animacion_;
animacion_= new Gosu::Image (graphics,Gosu::sharedResourcePrefix()+
L"../Imagenes/definitivos/granjero/derecha2");
Granjero[1] = animacion_;
animacion_= new Gosu::Image (graphics,Gosu::sharedResourcePrefix()+
L"../Imagenes/definitivos/granjero/derecha3");
Granjero[2] = animacion_;
}
void mostrar_granjero();
void draw(int i)
{
this->mostrar_granjero();
}
private:
//int i_;
int coorX_, coorY_;
Gosu::Image * animacion_;
Gosu::Image * Granjero[3];
};
#endif
y el .cpp está aqui:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
#include "Animacion.h"
void Animacion::mostrar_granjero(){
Granjero[0]->draw(coorX_,10,10);
// Granjero[1]->draw(coorX_,coorY_,10);
// Granjero[2]->draw(coorX_,coorY_,10);
}
El problema que me da es que por lo visto no me reconoce el método graphics, dentro de mi clase Ventana tengo en la parte privada:
Animacion * animacion;
Y en el constructor de Ventana:
Ventana::Ventana(): Gosu::Window(800, 600, false){//Constructor de Ventana, llama al constructor de Window con el ancho y el alto
InicializarImagenes(); //reservamos memoria para todas las imagenes que vamos a necesitar
songFondo -> play(true);
principal_ =1; //ponemos el menu principal a 1 porque es la primera ventana que se muestra
nivel_ ="0"; //ponemos el menu a o porque inicialemente no queremos tener ningun nivel visible
menu_=0; //ponemos el menu a 1 para que al mostrar la ventana lo primero que salga sea el menu
animacion = new Animacion (graphics());
}
Yo creo que está bien inicializado vaya no se, a lo mejor tanto tiempo mirando el mismo código no veo lo más simple.
Los errores que me salen son estos:
Compiling... ventana.cpp
In file included from ../gosu/Gosu/Gosu.hpp:13:0,
from ventana.cpp:1:
../gosu/Gosu/Fwd.hpp:10:11: aviso: se descarta el atributo en la declaración de ‘struct Gosu::Audio’ [activado por defecto]
../gosu/Gosu/Fwd.hpp:10:11: aviso: el atributo para ‘struct Gosu::Audio’ debe estar a continuación de la palabra clave ‘struct’ [activado por defecto]
ventana.cpp: En el constructor ‘Ventana::Ventana()’:
ventana.cpp:7:49: error: no se encontró una función coincidente para la llamada a ‘Animacion::Animacion()’
ventana.cpp:7:49: nota: los candidatos son:
./Animacion.h:10:3: nota: Animacion::Animacion(Gosu::Graphics&)
./Animacion.h:10:3: nota: el candidato espera 1 argumento, se proporcionaron 0
./Animacion.h:8:7: nota: Animacion::Animacion(const Animacion&)
./Animacion.h:8:7: nota: el candidato espera 1 argumento, se proporcionaron 0
ventana.cpp: En la función miembro ‘void Ventana::BotonesNivel(Gosu::Button)’:
ventana.cpp:79:13: error: solicitud por el miembro ‘mostrar_granjero’ en ‘((Ventana*)this)->Ventana::animacion’, el cual es del tipo ‘Animacion*’ que no es clase
../gosu/Gosu/GraphicsBase.hpp: En el ámbito global:
../gosu/Gosu/GraphicsBase.hpp:61:34: aviso: se define ‘Gosu::zImmediate’ pero no se usa [-Wunused-variable]
make: *** [ventana.o] Error 1
Yo interpreto de esto que no me detecta la función graphics, pero como podeís ver se la paso como parámetro al constructor.
¿Alguna sugerencia?
U_U Si alguien me echase un cable lo agradecería mucho.
Un saludo.
El svn del proyecto es: