Autor Tema: manejar el tiempo de la salida de naves enemigas  (Leído 82 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado hokuto40

  • Newbie
  • *
  • Mensajes: 37
  • Karma: 0
    • Ver Perfil
manejar el tiempo de la salida de naves enemigas
« en: Agosto 04, 2017, 12:14:32 am »
Hola a todos,lo primero pongo el enlace a este video
https://www.youtube.com/watch?v=LhzlUter3j0

Bueno la pregunta es si os fijais en el juego del video la salida de las naves enemigas lo hace cada sierto tiempo pero no se como hacerlo igual,yo he intentado con contadores y con random pero no queda igual.

Si veis el juego del video parece que controla el tiempo de salida de las naves de manera manual,como que salgan en el segundo 5 para despues salir en el segundop 20,pero no tadas hacen eso,y bueno agradeceria que me comentarais como hacen esta rutina para que mi juego de naves quede medio bien.

Por ultimo decir a drumpi que vi tu ejemplo pero como ya he comentado otras veces si me pones mas de diez lineas de codigo me pierdo,ademas estuve buscando el process main para orientarme y no habia ninguno.Bueno hasta pronto

Desconectado l1nk3rn3l

  • Hero Member
  • *****
  • Mensajes: 1845
  • Karma: 247
  • Sexo: Masculino
    • Ver Perfil
Re:manejar el tiempo de la salida de naves enemigas
« Respuesta #1 en: Agosto 04, 2017, 12:11:15 pm »
usar una estructura  de tiempo.. o un array de tiempo .. o ambos
 
array_tiempo[0] = 2 secs aparece
array_naves[0] = 1,2,3

array_tiempo[1] = 6 secs aparece
array_naves[1] = 3,5 


o consultar de vez en cuando la posicion del scroll para realizar la aparicion de nuevos objetos/naves...


Desconectado Drumpi

  • Hero Member
  • *****
  • Mensajes: 6073
  • Karma: 156
  • Sexo: Masculino
  • Odio el periodo "entre proyectos"
    • Ver Perfil
    • La web de Drumpi
Re:manejar el tiempo de la salida de naves enemigas
« Respuesta #2 en: Agosto 06, 2017, 08:34:02 am »
Generalmente, en los juegos de naves (y esto es especulación, porque nunca he visto el código de un juego de naves) hay un contador que sincroniza todo el juego, en concreto, la salida de los escuadrones enemigos.
Se supone que cuando el contador llega a un tiempo determinado (por ejemplo, a los 5000 milisegundos), se lanza el primer escuadrón, y cuando llega al siguiente tiempo (a los 7000 milisegunods, es decir, dos segundos más tarde que el primero) se lanza un segundo escuadrón.
Ojo que digo "escuadrón", no "nave". Un escuadrón es un proceso que crea una nave cada x milisegundos y les dice la ruta que deben seguir.

La idea es que tengas un proceso que incrementa un contador global desde el inicio del nivel, y aparte tengas otro proceso consultando su valor, de forma que si coincide con alguno de los tiempos que tú has decidido, lance el escuadrón adecuado.

Hace tiempo, diseñé algo parecido, pero en lugar de eso, los tiempos se basaban en que un determinado escuadrón hubiera muerto, porque el juego se basaba es destruir lo más rápido posible. Un escuadrón moría cuando sus naves morían o se salían de pantalla. su código era algo así:

Código: [Seleccionar]
//escuadron 1 tarda: 400/2 + 50*n frames en desaparecer
    cont=0;
   
    //método de espera por tiempo******************************************************
    for (cont=0;cont<300;cont++) frame; end
    //*********************************************************************************
   
    l2v_escuadron1(75*100,0,file,1,1, 4, 4,4,3,6);
    for (cont=0;cont<400;cont++) frame; end
    l2v_escuadron1(200*100,0,file,1,1, 4, 4,4,3,6);
    for (cont=0;cont<400;cont++) frame; end
   
    //método de espera por escuadrón (hasta que no sea eliminado, no sale el siguiente)
    temp1=l2v_escuadron1(136*100,0,file,1,1, 4, 4,4,3,6);
    while (exists(temp1)) frame; end
    //*********************************************************************************
    for (cont=0;cont<100;cont++) frame; end
   
    temp1=l2v_escuadron1(75*100,0,file,1,1, 4, 4,4,3,6);
    while (exists(temp1)) frame; end
    temp1=l2v_escuadron1(200*100,0,file,1,1, 4, 4,4,3,6);
    while (exists(temp1)) frame; end
    temp1=l2v_escuadron1(136*100,0,file,1,1, 4, 4,4,3,6);
    while (exists(temp1)) frame; end

Como ves, hay dos comportamientos diferentes: un bucle con un contador, para hacer una pausa entre el lanzamiento de un escuadrón y otro (que te puede servir a ti), y un WHILE-EXISTS, que hace una pausa mientras el proceso escuadrón sigue vivo.


En mis códigos no busques un "process main" porque no los hay. En el PRG (sólo escribo uno por cada proyecto) hay un BEGIN. Ese es el proceso MAIN.

Como ya dije, ando un poco out últimamente, así que lo siento, pero no puedo ser más explícito ahora, porque es que no tengo tiempo ni para mis proyectos. Yo te lanzo ideas, y tu debes leerlas, entenderlas y MODIFICARLAS para ver si te dan ideas nuevas a ti.
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)

Desconectado hokuto40

  • Newbie
  • *
  • Mensajes: 37
  • Karma: 0
    • Ver Perfil
Re:manejar el tiempo de la salida de naves enemigas
« Respuesta #3 en: Agosto 07, 2017, 12:18:20 am »
Gracias a los dos por responderme,intentare hacer lo que me comentais a ver que me sale :D