Error animación

26 views
Skip to first unread message

Lucía Batista

unread,
May 22, 2012, 10:47:42 AM5/22/12
to adv...@googlegroups.com
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:


svn checkout https://forja.rediris.es/svn/keepork


Si sustituis los ficheros del directorio juego por los de animación y compilais vereis los errores.


Un saludo y gracias.

Munt Gagu

unread,
May 22, 2012, 11:33:34 AM5/22/12
to adv...@googlegroups.com

Si graphics es un metodo de un clase o una funcion su sintaxis es graphics().

Un saludo.


Date: Tue, 22 May 2012 07:47:42 -0700
From: luc...@gmail.com
To: adv...@googlegroups.com
Subject: [ADVUCA] Error animación
--
Has recibido este mensaje porque estás suscrito al grupo "ADVUCA" de Grupos de Google.
Para ver este debate en la Web, visita https://groups.google.com/d/msg/advuca/-/Y6iy7r5DRVcJ.
Para publicar una entrada en este grupo, envía un correo electrónico a adv...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a advuca+un...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/advuca?hl=es.

Lucía Batista

unread,
May 22, 2012, 11:48:49 AM5/22/12
to adv...@googlegroups.com
Hola Keko,

Al fin parece ser que compila pero ahora al ejecutar me lanza una excepcion el programa.El otro error era de que tenia declarada por lo visto varias animaciones distintas y además una imagen que me estaba dando la lata... Muchas gracias por responder=)

No se que será peor si esto  o lo de antes...

AL lib: pulseaudio.c:331: PulseAudio returned minreq > tlength/2; expect break up
terminate called after throwing an instance of 'std::runtime_error'
  what():  Unknown error
Abortado

Manuel Palomo Duarte

unread,
May 22, 2012, 6:08:58 PM5/22/12
to adv...@googlegroups.com
Seguro que era peor lo de antes, Lucía, era una herida sobre otra
herida (ahora tenemos una herida limpia).

Dos cosas:
* ¿Cuándo te da el error exactamente?

* Parece que es un error del audio. Puedes comentar todo lo referente
al audio a ver si el resto del juego va bien (y así vamos aislando el
problema).

Saludos y keep porking!!!
> --
> Has recibido este mensaje porque estás suscrito al grupo "ADVUCA" de Grupos
> de Google.
> Para ver este debate en la Web, visita
> https://groups.google.com/d/msg/advuca/-/8FXV1n5ukE8J.
>
> Para publicar una entrada en este grupo, envía un correo electrónico a
> adv...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> advuca+un...@googlegroups.com
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/advuca?hl=es.



--
Por favor, si reenvías este correo usa BCC:
http://ciberderechos.barrapunto.com/article.pl?sid=10/07/10/215229
Reply all
Reply to author
Forward
0 new messages