Ayuda en la funcion cargarAnimacion en Automatas

Losersjuegos cuenta con una secciones de ejemplos en su web. Utilice esta sección para consultar o proponer ideas acerca de ellos.

Ayuda en la funcion cargarAnimacion en Automatas

Notapor keldrox » Vie May 02, 2008 1:39 am

Hola amigos, no entiendo bien lo que hace esta parte del programa:

Código: Seleccionar todo
actor_cargar_animacion (obj, INICIA, "37,37,37,37,37,38,39,40,41,42");


void actor_cargar_animacion (actor * obj, enum estado estado, char * cuadros)
{
   char buffer[1024];
   char * p;
   int i = 0;

   strcpy (buffer, cuadros);

   p = (char *) strtok (buffer, " ,");

   while (p)
   {
      obj->animaciones[estado][i] = atoi (p);
      p = (char *) strtok (NULL, " ,");
      i ++;
   }

   obj->animaciones[estado][i] = FIN_DE_ANIMACION;
}


¿Por que envia tantos números?, ¿para que sirven?, ¿como lo procesa la funcion?,

Gracias y buenas noches >.<!
keldrox
 
Mensajes: 7
Registrado: Dom Abr 20, 2008 9:30 pm

Notapor hugoruscitti » Vie May 02, 2008 11:08 pm

Saludos, la función tiene como objetivo cargar los índices de cuadros
de una animación en un vector.

Cuando se realiza una animación es mucho mas simple enumerar cada una de
las imágenes que conforman la animación y luego reproducirla. Es este caso
hay varios números porque se quiere mostrar el cuadro 37 varias veces, luego
el 38, 39 ... etc.

Seguramente otra rutina del juego lee uno a uno estos números de izquierda
a derecha y muestra la animación.

Creo que lo mas difícil de ver al principio es la conversión: la función
recibe un 'actor' (donde guarda la animación), un identificador de la
animación y una cadena con todos los números. La función carga la animación
"convirtiendo" esa cadena de números a celdas del vector.

Espero haber ayudado, cualquier cosa nos avisas nuevamente.

Un saludo.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor keldrox » Lun May 05, 2008 8:33 pm

Otra cosa que te quiero comentar y creo que es la última:

Código: Seleccionar todo
     SDL_Rect rect [2] = {0};

     actor_imprimir( &actor, sdlVentana, rect + 1 );
     SDL_UpdateRects (sdlVentana, 1, rect);


No entiendo bien por que creas un vector de rect y el primero lo pones a 0, y luego se lo envias a "actor_imprimir" y actualizas...

¿Segun el numero de personajes tengo que ir incrementando ese vector?

¿Si quiero mas jugadores que tendria que hacer? ¿incrementar ese rect?

¿Por decirlo de alguna manera que hay que hacer sin entrar en profunidad para crear varios personajes en pantalla?

Bueno espero que me haya explicado bien.

Saludos y muchisimas gracias.
keldrox
 
Mensajes: 7
Registrado: Dom Abr 20, 2008 9:30 pm

Notapor hugoruscitti » Jue May 08, 2008 2:59 am

En este momento no tengo ese código aquí en mi equipo
para hacer una búsqueda. ¿Podrías indicarme el nombre del
archivo y la linea de código que tienes?.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor keldrox » Jue May 08, 2008 6:37 am

Hola de nuevo hugo, gracias por tu tiempo de momento estoy siguiendo el articulo: http://www.losersjuegos.com.ar/referenc ... a_paso.php

Que creo que explica perfectamente lo que estoy buscando, si tengo alguna duda te volvere a preguntar y esta vez te cuelgo el codigo :P.

Un saludo compañero!
keldrox
 
Mensajes: 7
Registrado: Dom Abr 20, 2008 9:30 pm


Volver a Ejemplos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado