Escuadrones de naves en mi juego!!

Started by Goku jr, November 02, 2010, 10:16:48 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Goku jr

Buenas a todos!
Llevo con esto desde div2,pero nunca he completado un juego completo,y siempre se me aparecen errores muy tontos,pero que no consigo solucionar sin ayuda! jeje

A ver si me podeis ayudar!

Resulta que estoy haciendo una especie de matamarcianos(si el tipico juego) y quiero poner unos pequeños escuadrones de enemigos,pues bien
tengo algo de que cuando se matan a por ejemplo 4 enemigos en pantalla,aparecen los siguientes y asi,pero no se que pasa que llega un momento que no aparecen.

El codigo que ejecuta esa fase es este :
[code language="bennu"]process Nivel1();
begin
nivel=1;
vidas=3;
puntos=0;
play_song(musnivel,1);
file=fnivel1;
write(0,590,10,0,"Puntos:");
write_int(0,700,10,0,&puntos);
write(0,10,10,0,"Vidas:");
write_int(0,50,10,0,&vidas);
start_scroll(0,fnivel1,1,1,0,2);
prota();
//escuadron 1
numenemigo=4;
cuqui_level1(155,140);
cuqui_level1(345,110);
cuqui_level1(545,290);
cuqui_level1(445,90);
loop
scroll[0].y0=scroll[0].y0-7;
//escuadron 2
if(numenemigo==8);
cuqui_level1(55,140);
cuqui_level1(245,100);
cuqui_level1(545,190);
cuqui_level1(745,90);
end                              //A partir de este escuadron no me aparecen mas!
//escuadron 3
if(numenemigo==12);
cuqui_level1(155,140);
cuqui_level1(345,110);
cuqui_level1(545,290);
cuqui_level1(445,90);
end
//escuadron 4
if(numenemigo==16);
cuqui_level1(155,140);
cuqui_level1(145,210);
cuqui_level1(545,290);
cuqui_level1(445,290);
cuqui_level1(255,240);
cuqui_level1(345,110);
cuqui_level1(545,290);
cuqui_level1(445,190);
end
if(numenemigo==16);signal(type cuqui_level1,s_kill); break;
end
frame;
end
end[/code]

A partir del 3 escuadron no me aparecen mas escuadrones! decir que numenemigo, es una variable que cada vez que eliminas a un enemigos suma +1.

de todas maneras aqui os dejo el juego compilado para que lo probeis! junto con el codigo fuente!

http://www.megaupload.com/?d=IEX9NDXG

Gracias de antemano!


SplinterGU

sera por esto?

//escuadron 4
if(numenemigo==16);
cuqui_level1(155,140);
cuqui_level1(145,210);
cuqui_level1(545,290);
cuqui_level1(445,290);
cuqui_level1(255,240);
cuqui_level1(345,110);
cuqui_level1(545,290);
cuqui_level1(445,190);
end
if(numenemigo==16);signal(type cuqui_level1,s_kill); break;

o sea, cuando es 16, lanzas 5, para acto seguido matarlos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Goku jr

nop,por eso no es,sigue sin funcionar! gracias de todas maneras!

SplinterGU

#3
el problema esta en que tenes cantidad de cucarachas exponencialmente, primero porque lanzas el menu 5 veces, y cuando pulsas enter estas lanzando 5 veces el juego, y luego se va incrementando e incrementando e incrementando porque no tenes ningun flag que diga que ya lanzaste, o sea, cuando numemigo es 8, lanzas 4, al siguiente frame, sigue siendo 8, lanzas otros 4 enemigos y asi infinitamente.

compila con -g, agregar el mod_debug y luego en el juego hace alt+c y pone show numenemigo

pulsa nuevamente alt+c y anda viendo como incrementa

tambien podes pulsar f2 para ver la cantidad de procesos que estan corriendo.

saludos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2


Goku jr

Gracias! eso solucionado, lo malo esque ahora no desaparecen las cucas al morir,si que salen los escuadrones,pero no desaparecen xDD ya digo soy muy noob.seguire investigando y si no volvere a pedir ayuda! gracias!!!

Goku jr

#6
Vale,solucionado tambien,ya desaparecen las cucas,y y numenemigo cuenta bien,hasta que aparece el siguiente escuadron y wala! numenemigo se vuelve loco,y la verdad esque no encuentro la razon,sospecho que tiene que ver algo parecido a lo anterior o algun loop o algo,veremos!

Subo el codigo fuente a ver :

SplinterGU

usa la consola de debug y con F2 ves las cantidad de procesos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Goku jr

Quote from: SplinterGU on November 03, 2010, 11:14:34 PM
usa la consola de debug y con F2 ves las cantidad de procesos.

Jejeje si,lo que pasa que pulso F2 y en mi portatil se desactiva el wifi y en la consola no me aparece nada!

SplinterGU

f2 solo desactiva el wifi? o en combinacion con otra tecla?

yo digo, que en la consola pulses solo f2, sin combinacion con nada.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Goku jr

Solo pulsando f2 sin combinacion ni nada!
Para muestra una imagen :


Windgate

Lo del modo debug apenas lo he usado, algún día tendría que echarle un vistazo... Imagino que el manual de Osk tendrá apuntados todos sus secretos :D
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

SplinterGU

Quote from: Goku jr on November 03, 2010, 11:35:36 PM
Solo pulsando f2 sin combinacion ni nada!
Para muestra una imagen :



con la ventana asi como la tienes, pulsa F2, si te fijas abajo esta el help, si pulsas shift aparecen otras opciones, si pulsas alt otras y si pulsas control otras. eso significa que en conjuncion con las teclas que presiones las de funcionn tienen efecto diferente, pero con F2 solamente aprece la lista de procesos que estan corriendo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Escribiendo help+(intro) salen indicadas las funciones básicas.
Esta consola es imprescindible para debug, pues con F2 (o escribiendo "instances" muestra el árbol de procesos con su ID y estado, y luego podemos ver las variables (globales, locales o privadas) escribiendo su nombre (precedido del ID o nombre del proceso en el caso de privadas o públicas), usar show para ver la variable en tiempo real al cerrar la consola, modificar los valores de las variables, etc...
Para lo único que no sirve es para cuando el programa se cierra sin más (para eso está SAY) o cuando tenemos un array largo, una struct grandecita, o se usan punteros :P
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Goku jr

Vale,ya solucione si usar la consola!!

Jeje,resulta que donde tengo :

[code language="bennu"]if(numenemigo==numeroenemigo)
signal(type cuqui_level1,s_kill); // faltaba esto al principio de cada escuadron!
cuqui_level1(55,140);
cuqui_level1(245,100);
cuqui_level1(545,190);
cuqui_level1(745,90);
end[/code]

//tenia que matar al los procesos anteriores,si no aunque desaparecieran de pantalla seguian  activos!! como veis un error muy muy tonto!

Gracias por la ayuda de todas maneras!