| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
wose Byte

 Registrado: 20 May 2006 Mensajes: 64 Ubicación: Girona  
|
Publicado: Mar Sep 05, 2006 18:33 pm Asunto: Dudas haciendo mi juego |
|
|
Hola,
Despues de un tiempo si internet ("Telefonica, ¿quien si no?") y con el proyecto de mi juego bastante aparcado (no tengo mucha cosa hecha la verdad, aunque tampoco quiero hacer algo muy comlicado), ahora tengo que ir haciendo ya algo con consistencia (aun no tengo que entregarlo hasta un par o tres meses, pero tengo que hacer cosas ya).
Ahora mismo tengo lo siguiente (estoy haciendo un plataformas, recordais?):
-Scroll, durezas y gravedad y animacio del personaje ya asumido y sin problemas.
-Tengo que diseñar los niveles, pero seran mas o menos lo mismo en cuanto a funcionamiento, pero todo lo que sea dibujar lo hago asi "cutre-paint" y ya al final me lo currare mas.
-La esctructura del juego se mas o menos lo que voy a hacer, pero tengo unas dudas, ya que entre cada nivel voy a poner unas imagenes y letra a modo de "mini-intro" del nivel.
-Los enemigos lo unico que me pasa es que no se que tipo enemigos poner. De momento tengo alguno que esta ahi, yendo adelante y atras y hay que esquivarlo; otro que cae del cielo y si te toca te daña; otros que sencillamente vienen del otro lado de la pantalla corriendo y te puede "embestir"...
Bueno, no tengo mucha cosa... Los problemas que tengo mas "urgentes" serian estos:
- Las mini-intros que he dicho: no se si hacerlas un proceso mas (que creo que sera lo mejor) o hacerlo como "un nivel mas" dentro de un loop y switch principal.
-La deteccion de colisiones con enemigos, tengo que cuando choca el personaje con el enemigo pues se baja un poco la energia y ademas la variable velocidad (que controla el desplazamiento de mi personaje) hace que se pare o se eche para atras (para que al chocar no le pase por encima). Pues lo que quiero es saber que es mejor, la deteccion de colisiones y sus consecuencias, la pongo en el proceso del personaje y comprobando con todos los posibles enemigos o hago la comprobacion en los procesos de cada enemigo? si es mejor lo segundo, puedo variar desde alli la velocidad del personaje haciendo "psg.velocidad-=4" por ejemplo? (con este tipo de llamadas a veces tengo problemas...)
-Tengo un proceso de pausa que me congela a los procesos de la pantalla, pero tengo problemas con el: si tengo varios enemigos del mismo tipo solo me congela a uno de ellos (como se "llaman" igual...) y otra cosa es que, como al final tendre bastantes enemigos(con sus procesos), en este proceso pausa tendre que congelar y descongelar a TODOS los procesos que pudieran estar en pantalla (es decir, tendre que poner congelar todos los enemigos aunque no esten en este nivel, pues "pausa" sera igual en todos los niveles y no sabe en cual esta o no le importa)
En fin, creo que de momento estos son mis principales problemas, por favor aydadme en lo que podais.
Posiblemente ire poniendo mis dudas que vaya teniendo en este post, espero que no os moleste (asi tendre todas las dudas en el mismo hilo).
Tambien espero postear mas por aqui, ya lo hare, es que ultimamente cierta compañia de telefonia me ha j*did* un poquito con internet ^^
Ah, a parte del juego, para el famoso trabajo del instituto, estoy haciendo una web en la que pondre mas o menos com he hecho (o voy haciendo) el juego y tambien info del tema del juego (historia de la fisica). Cuando la tenga hecha (cuando termine el trabajo y el juego) ya os pondre el enlace y espero que sirva a alguien para algo^^
enga, ya me voy, que soy un pesado
saludos
PD: Alx, si no te importa, cuando tenga algo mas o menos decente (en cuanto al juego) a parte de colgarlo por aqui o enseñaroslo, te pediria que te miraras el codigo para ver si hay algo mejorable o por el estilo, si no es molestia claro.
Pero bueno, al paso que voy...  _________________
 |
|
 |
|
 |
Alx Boss

 Registrado: 22 Mar 2006 Mensajes: 6926 Ubicación: Barcelona
        votos: 26 Sexo:
|
Publicado: Mar Sep 05, 2006 23:43 pm Asunto: Re: Dudas haciendo mi juego |
|
|
| wose escribió: |
Hola,
Despues de un tiempo si internet ("Telefonica, ¿quien si no?") y con el proyecto de mi juego bastante aparcado (no tengo mucha cosa hecha la verdad, aunque tampoco quiero hacer algo muy comlicado), ahora tengo que ir haciendo ya algo con consistencia (aun no tengo que entregarlo hasta un par o tres meses, pero tengo que hacer cosas ya).
|
Qué pasa Wose! un tiempo ya ¿eh? es un placer lerte de nuevo y sí, timofónica o cualquier compañía de telecomunicaciones no son más que unas pedazo de
| Wose escribió: |
- Las mini-intros que he dicho: no se si hacerlas un proceso mas (que creo que sera lo mejor) o hacerlo como "un nivel mas" dentro de un loop y switch principal. |
Bueno, pues depende. Se puede hacer de varias formas.
Si lo haces como un proceso aparte, tan solo sería llamarlo y que este durmiera al proceso padre, que mostrase la intro y después al final antes de morir que lo despierte de nuevo y ya está.
O bien si los niveles los tienes en un SWITCH en plan:
| Código: |
SWITCH (nivel);
CASE 1: END
CASE 2: END
...
...
END |
Tan solo sería poner la intro al principio de los case y ponerle algún bucle para que se esperase a que acabara.
| Wose escribió: |
-La deteccion de colisiones con enemigos, tengo que cuando choca el personaje con el enemigo pues se baja un poco la energia y ademas la variable velocidad (que controla el desplazamiento de mi personaje) hace que se pare o se eche para atras (para que al chocar no le pase por encima). Pues lo que quiero es saber que es mejor, la deteccion de colisiones y sus consecuencias, la pongo en el proceso del personaje y comprobando con todos los posibles enemigos o hago la comprobacion en los procesos de cada enemigo? si es mejor lo segundo, puedo variar desde alli la velocidad del personaje haciendo "psg.velocidad-=4" por ejemplo? (con este tipo de llamadas a veces tengo problemas...) |
Si con cualquier proceso que toque se le resta energía, con un IF (collision(TYPE 0)) te restará la energía con cualquier proceso que tocara. Pero vigila, que este tipo de sentencia con el TYPE 0 es peligrosa porque si tienes algo en el marcador como un proceso también restaría.
Sino lo más normal es guardar en una variable el código identificador:
| Código: |
Choque=collision (TYPE enemigo);
IF (choque) energía--;end
Choque=collision (TYPE pincho);
IF (choque) energía--;end
Choque=collision (TYPE fuego);
IF (choque) energía--;end |
O bien:
| Código: |
choque=collision(type enemigo) OR collision(type pincho) OR collision(type fuego);
IF (choque) energía--;end
|
Y así repasando todos los tipos de enemigos posibles con los que se restara la energía.
| Wose escribió: |
-Tengo un proceso de pausa que me congela a los procesos de la pantalla, pero tengo problemas con el: si tengo varios enemigos del mismo tipo solo me congela a uno de ellos (como se "llaman" igual...) y otra cosa es que, como al final tendre bastantes enemigos(con sus procesos), en este proceso pausa tendre que congelar y descongelar a TODOS los procesos que pudieran estar en pantalla (es decir, tendre que poner congelar todos los enemigos aunque no esten en este nivel, pues "pausa" sera igual en todos los niveles y no sabe en cual esta o no le importa) |
Si durante el juego no matas al proceso principal o al que llamó a todos los demás, tan solo manda una señal de congelar a los que necesites y después para despertarlos usa la señal en árbol mismo para no tener que ir tipo por tipo. Te muestro la pausa del Scaramouche. Esto está en el programa principal que va controlando los niveles, reinicializa las variables y controla el flujo del juego.
La tecla pause está guardada en una variable porque el juego tiene redefine keys y la variable ban_pausa la uso para que cuando pulsas la tecla pausa solo funcione en una pulsación, como cuando programas un disparo que sólo a de salir en cada pulsación de tecla.
| Código: |
if(key(pause))
if(ban_pausa==0)
ban_pausa=1;
if(pausa==0)
pausa=1;
idtext=write(0,160,120,4,"pausa");
signal(idp1,s_freeze);
signal(idcom,s_freeze);
signal(type hacha,s_freeze);
else
if(pausa==1)
delete_text(idtext);
pausa=0;
signal(id,s_wakeup_tree);
end
end
end
else
ban_pausa=0;
end |
| Wose escribió: |
Ah, a parte del juego, para el famoso trabajo del instituto, estoy haciendo una web en la que pondre mas o menos com he hecho (o voy haciendo) el juego y tambien info del tema del juego (historia de la fisica). Cuando la tenga hecha (cuando termine el trabajo y el juego) ya os pondre el enlace y espero que sirva a alguien para algo^^ |
Jolín que guay !! en cuanto tengas algo muestra muestraaaa !!!!
| Wose escribió: |
enga, ya me voy, que soy un pesado |
No digas gilipipolleces tio!
| Wose escribió: |
PD: Alx, si no te importa, cuando tenga algo mas o menos decente (en cuanto al juego) a parte de colgarlo por aqui o enseñaroslo, te pediria que te miraras el codigo para ver si hay algo mejorable o por el estilo, si no es molestia claro.
Pero bueno, al paso que voy...
|
Por supuestísimo y sería un aunténtico placer Wose :wink:
Ya sabes donde estamos y no te cortes en preguntar lo que sea :wink: _________________
 |
|
 |
|
 |
Alx Boss

 Registrado: 22 Mar 2006 Mensajes: 6926 Ubicación: Barcelona
        votos: 26 Sexo:
|
Publicado: Mie Sep 06, 2006 06:44 am Asunto: |
|
|
Otra cosa que se me olvidaba...
Si quieres tener controlados uno a uno todos los procesos de un mismo tipo para actuar en consecuencia individualmente, lo que puedes hacer es guardar sus códigos identificadores en una array (tabla).
Creas una array así global:
enemigos[4]; //array donde guardaremos los 5 enemigos (del 0 al 4)
Y después en el programa cuando hagas las llamadas a los procesos enemigos lo haces así:
FROM cont=0 to 4;
enemigos[cont]=enemigo();
FRAME;
END
Así se te irán guardando los códigos identificadores en las "celdas" del array.
Hipotéticamente quedaría algo así:
enemigos[4]=1234, 4657, 3456, 2345, 6987;
Entonces si por ejemplo quieres matar al nº 5 sería:
signal( enemigos[4], s_kill);
---
El equivalente de lo que te he puesto arriba del bucle FROM pero menos optimizado sería:
enemigos[0]=enemigo();
enemigos[1]=enemigo();
enemigos[2]=enemigo();
enemigos[3]=enemigo();
enemigos[4]=enemigo();
---
ESPERO QUE TE SIRVA DE AYUDA :wink: _________________
 |
|
 |
|
 |
wose Byte

 Registrado: 20 May 2006 Mensajes: 64 Ubicación: Girona  
|
Publicado: Mie Sep 06, 2006 08:04 am Asunto: |
|
|
Hola,
Bueno, primero, muchas gracias por contestar
Lo de las intros creo que voy a hacer unos bucles en cada nivel, pero segun lo que me dices (o yo lo he entendido mal) cada nivel seria un proceso? o hay un proceso que se llama "juego" por ejemplo y ahi el "gran" switch?
Es que yo el loop-switch principal lo tengo al principio en el "program" (proceso principal), me aconsejarias que haga un proceso "juego" y lo controlase el lo de los niveles?
lo de los enemigos yo lo hacia asi:
| Código: |
| if(idaux=collision(type enemigo)) energia--; velocidad=-10; end |
por ejemplo (tambien tengo un if dentro para si el prota esta "caiendo" le mato (lo aplasto y mato a idaux). O sea que lo de choque=collision(type... es mas o menos lo mismo de idaux, no? y lo que me recomiendas es detectarlo en el proceso del prota,verdad?
lo de la pausa y que solo detecte un pulsacion ya lo hago pero como no tengo un proceso tipo "juego()" que me controle todos los niveles y tal, pues no lo puedo congelar, o sea que si hago un proceso juego (lo que he dicho mas arriba) podre congelarlo a el, no?
lo del array no lo habia pensado, pero esta muy bien. cuando declare los enemigos lo hare asi, gracias.
Una cosa (supongo que una tonteria), los enemigos se declaran antes del loop principal de cada nivel, no?
ej:
| Código: |
switch(nivel)
case 1:
limpio la pantalla y borro letras...
load_fpg(blabla..);
preparo lo que sea (fin_nivel=false...)
hago el scroll
AQUI declaro mi prota y luego los enemigos
loop
escribo los puntos
aqui pongo que con escape sale
frame
end
end |
en fin, ya esta, gracias por la ayuda, y cuando pueda aqui los primeros en ver algo^^ (lo que pasa es que voy a paso de semitortuga )
venga, hasta luego!! _________________
 |
|
 |
|
 |
Alx Boss

 Registrado: 22 Mar 2006 Mensajes: 6926 Ubicación: Barcelona
        votos: 26 Sexo:
|
Publicado: Mie Sep 06, 2006 11:17 am Asunto: |
|
|
Me refería a que fuesen procesos las intros, no los niveles. Si son así el proceso que te esté controlando el nivel tan solo debería llamar a la intro correspondiente según el nivel que sea. La intro lo dormiría y después al acabar lo despertaría.
El otro caso era que si la intro no es más que una imagen con alguna cosa símplemente que al inicio de los cases los pusiéses.
---
Lo de como detectas las colisiones ahora mismo no sé si funciona como lo pones porque estás haciendo una asignación en el IF y no una comprobación. Si a tí te funciona bien pues ya está.
---
El pause iría en el proceso que va llevando el flujo del juego y desde ahí congelar los procesos que necesites.
---
Supongo que con declarar los enemigos te estás refiriendo a las llamadas a los procesos.
Es importante que lo distingas bien porque no es lo mismo.
Declarar es reservar un espacio de la memoria para guardar un valor, o sea, que lo que se hace es declarar variables.
Y hacer una llamada a un proceso es llevar el flujo del programa a un sub-programa (que en Fénix son los PROCESS) y que lo ejecute hasta encontrar su END.
Las llamadas se hacen según te sean necesarias. Normalmente se hacen cuando preparas el nivel y lo situas todo. Después estos mismos procesos llamarán a otros y así todo el rato. _________________
 |
|
 |
|
 |
wose Byte

 Registrado: 20 May 2006 Mensajes: 64 Ubicación: Girona  
|
Publicado: Mie Sep 06, 2006 12:49 pm Asunto: |
|
|
Hola,
A ver, pues lo he entendido mal lo de las intros.
Te escribo mas o menos como tengo los niveles y eso.
| Código: |
program juego;
var globales;
var locales;
título, mode y load_fpg del menu
loop
switch(opcionMenu)// que cuando la declaro le pongo 1
case 1: //el menu
fades, put_screen,..
escribo las opciones
llamo al cursor() //que es una flecha
loop
IFs dependiendo de la eleccion en el menu le dan a "opcionMenu" un valor (y si se elige salir pues exit con fades y eso)
frame;
end
fades, limpio y borro letra
end
case 2: //el juego
switch(nivel) //que si con el cursor elegiamos jugar lo ponia a 1
case 1:
end
... (hasta 12 niveles, pero 5 son "jefes de nivel", sencillos)
end
end
end //del switch opcionMenu
limpio, letsme alones....
end
|
Mas o menos esta seria la estructura, ahora te pongo mas o menos la del prota:
| Código: |
process prota(x,y,file,graph)// depende del nivel lo llamare con un grafico u otro
var privadas
begin
c_scoll..
loop
IFs que controlan la velocidad y flags //esto
IFs y While que controlan las durezas //y esto es igual que con el castle of dr malvado
if(control and al_suelo()) saltara;end
gravedad(); //esto tambien es del malvado, controla la gravedad bastante eficazmente
segun la gravedad miro si esta cayendo; (cayendo=1 o cayendo=0)
if(idaux=collision....)
si esta cayendo
mato al enemigo(idaux) y puntos+
si no cae
baja la energia y la velocidad-
end
IF (enter and pulsando==0)pulsando=1; pausa();end
if(not key enter) pulsando=0;end
frame;
end//del loop
end
|
Y en cada nivel tendria mas o menos esto (en los de jefes de nivel sera distinto):
| Código: |
//en el nivel 1, por ejemplo
case 1:
limpio pantalla, etc...
cargo (load) las imagenes
preparo variables (puntos, energia,...)
scroll
declar...ay! LLAMO ;) a mi prota y los enemigos
idprota=prota();
aqui pondre el array de enemigos...
tambien Llamo a los bonus (unos objetos por ahi sueltos que te dan puntos y vida, las anillas del sonic, vamos^^)
repeat
escribo los puntos cada momento
y si pulso esc, pues despues de fades, vuelvo a opcionMenu=1 (al menu) y break;
frame;
until(fin_nivel)
limpio,blablabla... y aqui miraria de avanzar de nivel
|
Bueno esto es lo que tengo asi por encima. Los problemas son las intros, que no me he aclarado de como deberia ponerlas (a ver si con estos "codigos" que he escrito me ayudas ) y lo de la pausa(a quien congelo?¿ ^^)
otra cosa :
las variables energia, puntos... que es mejor, globales o locales?
Bueno, a ver si asi me entero mas de como estructurarlo todo.
repito lo de antes... siento ser tan pesado
enga, muchas gracias por todo  _________________
 |
|
 |
|
 |
Alx Boss

 Registrado: 22 Mar 2006 Mensajes: 6926 Ubicación: Barcelona
        votos: 26 Sexo:
|
Publicado: Mie Sep 06, 2006 14:28 pm Asunto: |
|
|
Las intros se pueden poner de muchas formas pero por ejemplo tal y como lo tienes lo podrías hacer en el Switch (nivel).
| Código: |
SWITCH (nivel)
CASE 1: intro1(); END
CASE 2: intro2(); END
...
...
END |
---
Tienes que congelar nada más y nada menos que los que quieras que se congelen XD!!!
Por ejemplo si sólo sería congelar al prota pues le pasas el ID del prota a la señal.
---
Globales o locales según lo que necesites.
Si es una variable que cada proceso la tiene que tener individualmente, en lugar de ponérsela privada a todos los procesos la pones local.
Si es una general que solo existe una global. _________________
 |
|
 |
|
 |
wose Byte

 Registrado: 20 May 2006 Mensajes: 64 Ubicación: Girona  
|
Publicado: Mie Sep 06, 2006 14:51 pm Asunto: |
|
|
OK
Las intros las hare con procesos dentro de los cases.
______________________
Jejejej... Lo de congelar, por supuesto que lo que quiero, pero a lo que me refiero es que si tengo, por ejemplo,nose el prota y 20 enemigos diferentes (pero solo hay 2 o 3 en cada nivel), si hago pausa (que solo hay un proceso pausa) y en el tengo que congelar a TODOS los posibles enemigos que hay en el juego pues nose, me parece muchos signals, o no?
Este era mi "problema" con la pausa. Que lo que queria era que con menos "signal" puediera congelar a todo lo que pudiera estar en la pantalla, no se si me explico.
Ej:
Estoy en el nivel 1, ahi hay 3 tipos distintos de enemigos, mas mi prota. Pero como de proceso pausa hay solo uno, pues aunque este en el nivel 1, tendre que congelar a todos los enemigos del juego (poner signals para congelarlos todos). Porque asi se puede usar el mismo "pausa()" para todos los niveles y llamarlo desde mi proceso prota().
Pero en fin, si tengo que poner un larga lista de signals, pues mira, lo hare, pero si hubiese ptra manera mas "corta"(en cuanto a escribir codigo), pues mejor.
en fin, gracias otra vez por la ayuda.
saludos _________________
 |
|
 |
|
 |
Alx Boss

 Registrado: 22 Mar 2006 Mensajes: 6926 Ubicación: Barcelona
        votos: 26 Sexo:
|
Publicado: Mie Sep 06, 2006 16:03 pm Asunto: |
|
|
No hombre no! no tienes que poner una listorra!
Si usas el TYPE tan solo serán unos pocos signals, no creo que tu juego tenga 100 tipos diferentes de enemigos XD!!!
Por ejemplo:
Fase 1 ---> cañones, helicópteros, prota, tanques, bala.
| Código: |
signal (TYPE cañones, s_freeze);
signal (TYPE helicópteros, s_freeze);
signal (TYPE prota, s_freeze);
signal (TYPE tanques, s_freeze);
signal (TYPE bala, s_freeze); |
Esto creo que también funcionaría:
| Código: |
enemigos[4]="cañones","helicópteros","prota","tanques","bala";
FROM cont=0 to 4;
signal (TYPE enemigos[cont], s_freeze);
END |
---
Para descongelar simplemente esto y lo despierta todo:
signal (TYPE 0 , s_wakeup);
---
El código del pause no puede estar en el del prota porque te lo pararía y dejaría de leer el código.
Tiene que ser un proceso externo a lo que es el juego, por ejemplo el programa principal :wink: _________________
 |
|
 |
|
 |
wose Byte

 Registrado: 20 May 2006 Mensajes: 64 Ubicación: Girona  
|
Publicado: Mie Sep 06, 2006 19:19 pm Asunto: |
|
|
Hola,
Si lo que dices de
signal (TYPE cañones, s_freeze);
signal (TYPE helicópteros, s_freeze);
signal (TYPE prota, s_freeze);
signal (TYPE tanques, s_freeze);
signal (TYPE bala, s_freeze);
es lo que tengo^^
Lo que decí ya es que claro, mas o menos en todo el juego voya tener en TOTAL unos cuantos tipos de enemigos, unos 30 tipos distintos, eso es lo que digo.
Ah, y el codigo de pausa por supuesto que lo tengo a parte ^^ desde prota lo llamo, pero es otro proceso
Volviendo al tema...
Pues lo que te digo, que tendré unos 30 tipos de enemigos diferentes y de cada tipo pues unos 3 o 4.
O sea que mis problemas vuelven a ser que en el proceso pausa tendre que congelar a los 30 tipos distintos de enemigos, me entiendes? es que no se si me explico.
el ejemplo de antes:
Si estoy en el nivel 2 y pulso pausa, este proceso debe de congelar a todos los posibles enemigos, o sea, a Todos los 30 tipos distintos que hay en el juego (aunque no esten en el nivel, porque el pausa es el mismo para todo el juego)
Perdona que te ralle tanto pero no se si me explique bien antes. Esto del array tal vez esté bien, ya probaré algo.
Ahora, para acabar de complicar el tema tendre:
un array (pincho[], por ejemplo) que tendra varios numeros, pincho[1],pincho[2] que seran procesos y encima un array con TODOS los tipos de procesos.
Puedo congelar un array entero, sin tener que congelarlos uno por uno? o sea tipo "pincho[],s_freeze"?
No se si me explico, es que he hecho un peazo lio con los congelados ^^
Resumen a ver si lo aclaro:
en el switch nivel case 1:
loads,varibales,blablabla
scroll
prota();
array con un tipo de enemigo pero varias instancias(se llama asi?)
pinchos[1]=pincho(100,200);//x e y, por ejemplo
pinchos[2]=pincho(200,200);
etc.
...
y en el pausa()
pues
signal(idpincho,s_freeze);
signal(idtioraro,s_freeze);
... y asi hasta congelarlos todos (unos 30 saldran )
y luego despertarlos
Espero haberme explicado
hasta otra^^ _________________
 |
|
 |
|
 |
Alx Boss

 Registrado: 22 Mar 2006 Mensajes: 6926 Ubicación: Barcelona
        votos: 26 Sexo:
|
Publicado: Mie Sep 06, 2006 23:04 pm Asunto: |
|
|
Jejejeje... pues sí que va de ultramarinos esto
---
A ver, por un lado, primero te diré que aunque tengas por ejemplo una array de 100 elementos donde guardarás los 100 identificadores, a la hora de congelar tan sólo con una señal congelarás a los 100, porque son TODOS DEL MISMO TIPO.
Ejemplo:
| Código: |
malo[99];
FROM cont=0 to 99;
malo[cont]=enemigo();
END |
En este momento tendrás 100 enemigos en pantalla y para congelar los 100 sería:
| Código: |
| signal(TYPE enemigo, s_freeze); |
A si de sencillo, una señal y duermes los 100.
Lo que yo te decía es que si tienes que congelar 100 TIPOS de procesos, que los guardes en una array con cadena de texto para después substituirlos.
| Código: |
tipos_de_enemigos[99]= "malo", "cañón", "pincho", "fuego", ..., ..., "misil";
Y para congelar:
FROM cont= 0 to 99;
signal ( TYPE tipos_de_enemigos[cont] , s_freeze);
END |
Con estas dos líneas lo congelarías todo :wink:
Lo único que a lo mejor te lleva un pelín de tiempo sería escribir los 100 tipos de enemigos en el array, pero ya ves, es poner solo el nombre del proceso y ya está.
Habrán otras formas de hacerlo, pero esta es la que se me ocurre  _________________
 |
|
 |
|
 |
wose Byte

 Registrado: 20 May 2006 Mensajes: 64 Ubicación: Girona  
|
Publicado: Jue Sep 07, 2006 07:23 am Asunto: |
|
|
Hola,
Veo que si que nos hemos entendido.
OK hare el array este.
Lo que me paso una vez, pero, es que el hacer, por ejemplo,
signal(idenemigo,s_freeze);
Que, como bien has dicho deberia congelar a TODOS los enemigos del tipo aunque hubieran 50 en la pantalla, pues solo me congelaba uno, no a los 4 (creo) que trenia en pantalla.
Pero en fin lo pruebo y en teoria funcionara lo que dices.
Venga, hasta otra^^
bye _________________
 |
|
 |
|
 |
Alx Boss

 Registrado: 22 Mar 2006 Mensajes: 6926 Ubicación: Barcelona
        votos: 26 Sexo:
|
Publicado: Jue Sep 07, 2006 11:29 am Asunto: |
|
|
Hombre Wose! claro que sólo te congelaba uno! el ID que le pasas a la señal!
Tienes que distinguir bien dos cosas.
si pones :
signal (idenemigo, s_freeze);
Solo dormirás al último que pusiese su código identificador en la variable idenemigo.
Imagina que solo hay un proceso prota y le has asignado el código identificador en la variable idprota. Cuando pongas signal (idprota, s_freeze); congelará a este.
Ahora imagina que con un bucle has creado 5 enemigos. Cuando después encuentre el signal sólo congelará al último creado, ¿entiendes?.
Peeeeeeero, si pones esto:
signal ( TYPE enemigo, s_freeze);
congelarás a los 5 procesos creados.
Resumiendo: Una cosa es pasarle UN CÓDIGO IDENTIFICADOR y otra cosa muy distinta es pasarle UN TIPO DE PROCESO.
Espero que no te hayas hecho un lio
---
Los códigos identificadores están precísamente para eso, para distinguirse entre sí varios procesos del mismo tipo. Es como el DNI de las personas, que todos somos unos gilipollas iguales pero tenemos que diferenciarnos
Los tipos de procesos son los que comparten un mismo código del programa pero que cada uno está creado como un objeto independiente y lee el mismo código que los demás pero ejecutandose individualmente.
Si tu llamas 5 veces a este sub-programa:
| Código: |
PROCESS bala();
BEGIN
LOOP
FRAME;
END
END |
tendrás en pantalla cinco procesos diferentes PERO DEL MISMO TIPO.
Si le añades una variable donde guarda el id:
| Código: |
PROCESS bala();
BEGIN
idprota=id;
LOOP
FRAME;
END
END |
Cada uno de los cinco procesos del mismo tipo tendrán su DNI propio que los diferenciará. Eso sí, la variable idprota tendría que ser LOCAL para que cada proceso bala tenga su propia idprota.
Por eso la función collision(TYPE bala); devuelve el código identificador con el que está chocando.
:wink: _________________
 |
|
 |
|
 |
wose Byte

 Registrado: 20 May 2006 Mensajes: 64 Ubicación: Girona  
|
Publicado: Jue Sep 07, 2006 11:44 am Asunto: |
|
|
Dish...
Hostia, pues no habia caido y lo de TYPE no lo habia visto... lo siento

Que gilipollas soy, lo siento por rallarte tanto tio, muchas gracias
bye _________________
 |
|
 |
|
 |
Alx Boss

 Registrado: 22 Mar 2006 Mensajes: 6926 Ubicación: Barcelona
        votos: 26 Sexo:
|
Publicado: Jue Sep 07, 2006 12:05 pm Asunto: |
|
|
| wose escribió: |
Que gilipollas soy, lo siento por rallarte tanto tio, muchas gracias bye |
Serás capullín! pero para que leches estamos los compis jolines!  _________________
 |
|
 |
|
 |
zemman Boss

 Registrado: 08 Ago 2006 Mensajes: 2684 Ubicación: Sevilla
        votos: 14
|
Publicado: Jue Sep 07, 2006 12:10 pm Asunto: |
|
|
| Cita: |
| Serás capullín! pero para que leches estamos los compis jolines! |
Lo de "jolines" te ha quedado muy pijo...jejejejejeje  _________________ www.zemman.wordpress.com |
|
 |
|
 |
Alx Boss

 Registrado: 22 Mar 2006 Mensajes: 6926 Ubicación: Barcelona
        votos: 26 Sexo:
|
Publicado: Jue Sep 07, 2006 12:17 pm Asunto: |
|
|
No te me metas connnmigo Ossea... _________________
 |
|
 |
|
 |
zemman Boss

 Registrado: 08 Ago 2006 Mensajes: 2684 Ubicación: Sevilla
        votos: 14
|
|
 |
|
 |
wose Byte

 Registrado: 20 May 2006 Mensajes: 64 Ubicación: Girona  
|
Publicado: Jue Sep 14, 2006 10:51 am& | |