caza 0.2.1

Started by Gvc2, June 28, 2009, 02:35:46 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Gvc2

es un nuevo proyecto que empece hace nada
es muy sencillo, es una escopeta que dispara a un perro que anda
pero tengo un pequeño problema
no hace la animación CARGAR, es un poco tonto pero bueno, a ver si me pueden ayudar
aquí el código del protagonista


animar(nombre,estado);
         IF ((estado!=CARGAR) AND (estado!=LATERAL))
            estado=C_QUIETO;
         END   
            IF (key(_right)AND (map_get_pixel(fpgs[ESCENARIOS],scroll[0].reserved[2],x+12,y)!=durezas.pared))
                x=x+6;
            ELSIF (key(_left)AND (map_get_pixel(fpgs[ESCENARIOS],scroll[0].reserved[2],x-12,y)!=durezas.pared))
                x=x-6;
         END
         IF ((mouse.left) AND (espera_disparo<0))
            //IF ((estado==LATERAL) OR (estado==C_QUIETO) AND (estado!=CARGAR))
               estado=CARGAR;
               espera_disparo=19;
               disparo();
            //END
         END   
         IF (graph==animaciones[ESCOPETA][CARGAR].graph_fin)
                estado=C_QUIETO;
            END   
         
         IF (mouse.x>x+100)
            estado=LATERAL;
            flags=0;
         ELSIF (mouse.x<x-100)
            estado=LATERAL;
            flags=1;         
         ELSIF ((mouse.x<x+100) AND (mouse.x>x-100) )   
            estado=C_QUIETO;
         END

si no encontráis ningún error aquí, dejo el juego entero
http://www.mediafire.com/?mmzzwlqjqyk
gracias

Prg

lo que pasa es que contradecías las órdenes, pues mandabas el disparo, pero luego mandabas que pusiera lateral, o right, o alguna otra cosa, así que la animación de cargar nunca pasaba.

[code language="bennu"]PROCESS protagonista (file,graph,x,y,size)
PRIVATE
int estado=C_QUIETO;
int espera_disparo=0;
int nombre=ESCOPETA;
//int invencible=0;
   BEGIN
       ctype=c_scroll;
       LOOP  
         IF (exists(type disparo))
            write(0,0,10,0,"existe disparo");
         END   
           
         IF ((estado!=CARGAR) AND (estado!=LATERAL))
            estado=C_QUIETO;
         END   
           IF (key(_right)AND (map_get_pixel(fpgs[ESCENARIOS],scroll[0].reserved[2],x+12,y)!=durezas.pared))
               x=x+6;
           ELSIF (key(_left)AND (map_get_pixel(fpgs[ESCENARIOS],scroll[0].reserved[2],x-12,y)!=durezas.pared))
               x=x-6;
         END

         IF (graph==animaciones[ESCOPETA][CARGAR].graph_ini)
            write(0,0,20,0,"invoco disparo");
            disparo();
           END   
         IF (graph==animaciones[ESCOPETA][CARGAR].graph_fin)
               estado=C_QUIETO;
           END
      if    (estado!=CARGAR)  //si no es cargar entonces puede hacer cualquiera de estas animaciones, si no pones esto, simplemente se verá el primer gráfico del estado cargar, pero y volverá al estado lateral o quieto.
         IF (mouse.x>x+100)
            estado=LATERAL;
            flags=0;
         ELSIF (mouse.x<x-100)
            estado=LATERAL;
            flags=1;         
         ELSIF ((mouse.x<x+100) AND (mouse.x>x-100) )   
            estado=C_QUIETO;
         END
      end
                       IF (mouse.left AND espera_disparo<0)  //muevo esto aquí porque estaba haciendo las pruebas.
            IF ((estado==LATERAL) OR (estado==C_QUIETO) AND (estado!=CARGAR))
               estado=CARGAR;
               espera_disparo=19;
            END

         END


           espera_disparo--;
         write ( 0,100,90,0,"Mi espera disparo es :" + espera_disparo);
         write ( 0,100,100,0,"Mi grafico es el :" + graph);
         write ( 0,100,110,0,"Mi x es el :" + x);
         write ( 0,100,120,0,"Mi y es el :" + y);
         write ( 0,100,130,0,"Mi estado es el :" + estado);
         write ( 0,100,140,0,"Mi nombre es el :" + nombre);
         
                       animar(nombre,estado);
           FRAME;
         delete_text(all_text);
       END
   END[/code]

saludos.

con este protagonista ahora podrás disparar, agrego comentarios de lo que hice.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Gvc2

muchas gracias, ya va
como dije seria una cosa muy tonta...
PD: ahora en gvc 0.4.4 escribiré otro problema de animaciones, echadle un vistazo xD
gracias de nuevo

Gvc2

http://www.mediafire.com/download.php?whindzt2byx
esta es la ultima version
tengo un problema, el disparo se encarga de matar al enemigo con un signal kill
lo que ocurre es que mata al que recibe la bala y a todos de su especie (por llamarlo de alguna manera)
prueben a disparar a un perro y el otro se matara solo
como puedo hacer para que solo mate al que le da la bala??
gracias

splinter_work

seguramente tenes un signal(type enemigo, s_kill)... por eso mata a todos los de la misma especie... cuando haces colision debes guardar el valor que retorna, que es el identificador del proceso que colisiono, y usar ese identificador en lugar de "type enemigo".

animanegra

Jejeje, me has kitado el post de los dedos :P
"PoCoYo es dios!!"

splinter_work


Gvc2

gracias 1 karma para cada uno ya funciona
k les parece el juego aki la ultima versión
http://www.mediafire.com/download.php?ythjnwtymzy

controles:
r___recargar
derecha e izquierda___para desplazarse
clicar___disparar
mover raton___mueve la mira

PD: cuando matas a los 4 enemigos cambia de fase  ;D

splinter_work

de nada...

por favor los karmas a SplinterGU.

Gracias...

Windgate

Otro hilo perdido temporalmente pero aquí estoy... Comento para tenerlo a mano en nuevas respuestas xD

Cierto lo de signal y aplicarlo a un ID de proceso determinado... Ay, benditos aquellos que aprendéis a usar signal con Bennu y no con un Linux de los años 80, ¿Fácil de entender eh??? Yo estuve un año sufriendo ;D ;D ;D

En cualquier caso el control de nacimientos y muertes de proceso es algo que estoy preparando con diagramas, es algo muy serio... Ya sé que es un coñazo tanta planificación, pero estamos llegando a un punto en Bennu en el que no hacemos tetris ni galaxians, y hay que tener un control serio... Estamos a años luz de DIV...

Planificar y dibujar antes de echar el código es algo que me cuesta incluso a mí pero es lo que tenemos que hacer, sigo trabajando para mejorar el reparto de tareas...

Gvc, sois la joven promesa del foro, keep on the good work :P
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es