zeravlam
03/06/2006, 20:36
Saludos
Estoy programando en Fenix un juego y he tenido un problemilla con las colisiones y terminaciones de procesos.
Veamos:
tengo una función llamada asteroides a la que se le pasan dos coordenadas y coloca el gráfico en pantalla:
process asteroides(int coor_x, int coor_y)
begin
ctype=c_m7;
file=novafpg;x=coor_x; y=coor_y;graph=4;
loop
frame;
end
end
a esta función la llamo de esta forma:
id_asteroides[0]=asteroides(100,150);
id_asteroides[1]=asteroides(200,100);
que me coloca dos objetos asteroides en pantalla.
Cuando el usuario choca con uno de los objetos, se produce la colisión:
col_asteroide=collision(type asteroides);
if (col_asteroide<>0)objeto_activo="Asteroides";
Y entonces se le da la oportunidad de producir una acción, en el caso de los asteroides quiero que se elimine el asteroide con el que ha colisionado, pero no sé como diferenciar uno de otro. Escribí este código que es una solución bastante chapucera y que se realiza cuando el usuario pulsa el botón de acción:
if(objeto=="Asteroides")
for(a=0;a<=8;a+=1)
if(estrella_activa.x==id_asteroides[a].x or estrella_activa.y==id_asteroides[a].y)
signal(id_asteroides[a],s_kill);
end
end
end
Pero cuando lo ejecuto, al pulsar acción con el asteroide colisionado se ve que el asteroide correcto se elimina pero el programa se para con este error:
Error de ejecución en proceso 65559; Procedimiento 0 no activo
¿Puede alguien ayudarme? Me serviría cualquier forma, si arreglando este código o con alguna forma mejor de diferenciar los objetos...
Gracias de antemano y siento el tocho =P
PD: ¿Hay alguna posibilidad de reactivar las páginas de Nazca o de La Biblia de GP32? Sería muy útil poder volver a visitarlas, especialmente por los códigos fuente de los juegos de Nazca =)
ZRV
Estoy programando en Fenix un juego y he tenido un problemilla con las colisiones y terminaciones de procesos.
Veamos:
tengo una función llamada asteroides a la que se le pasan dos coordenadas y coloca el gráfico en pantalla:
process asteroides(int coor_x, int coor_y)
begin
ctype=c_m7;
file=novafpg;x=coor_x; y=coor_y;graph=4;
loop
frame;
end
end
a esta función la llamo de esta forma:
id_asteroides[0]=asteroides(100,150);
id_asteroides[1]=asteroides(200,100);
que me coloca dos objetos asteroides en pantalla.
Cuando el usuario choca con uno de los objetos, se produce la colisión:
col_asteroide=collision(type asteroides);
if (col_asteroide<>0)objeto_activo="Asteroides";
Y entonces se le da la oportunidad de producir una acción, en el caso de los asteroides quiero que se elimine el asteroide con el que ha colisionado, pero no sé como diferenciar uno de otro. Escribí este código que es una solución bastante chapucera y que se realiza cuando el usuario pulsa el botón de acción:
if(objeto=="Asteroides")
for(a=0;a<=8;a+=1)
if(estrella_activa.x==id_asteroides[a].x or estrella_activa.y==id_asteroides[a].y)
signal(id_asteroides[a],s_kill);
end
end
end
Pero cuando lo ejecuto, al pulsar acción con el asteroide colisionado se ve que el asteroide correcto se elimina pero el programa se para con este error:
Error de ejecución en proceso 65559; Procedimiento 0 no activo
¿Puede alguien ayudarme? Me serviría cualquier forma, si arreglando este código o con alguna forma mejor de diferenciar los objetos...
Gracias de antemano y siento el tocho =P
PD: ¿Hay alguna posibilidad de reactivar las páginas de Nazca o de La Biblia de GP32? Sería muy útil poder volver a visitarlas, especialmente por los códigos fuente de los juegos de Nazca =)
ZRV