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
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.
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
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
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".
Jejeje, me has kitado el post de los dedos :P
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
de nada...
por favor los karmas a SplinterGU.
Gracias...
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