PDA

Ver la versión completa : Problema con el uso de variables privadas



Licantropo
02/10/2004, 17:16
Hola, tengo un pequeño problema. Es en el uso de las variables en fenix, que no me queda muy claro.

Tengo un proceso enemigo, que esta dividido en dos procesos: uno de movimiento y otro de disparo. (Podria unificarlos, pero supongo que asi perdere velocidad de ejecucion, porque de esta forma se hace en paralelo y si los unifico no).

El codigo es asi:



Procces enemigo(tipo,x,y)
Private
Int tipoene,vitalidad,velocidad,posicione,xe,ye;
Begin
//...... (codigo que segun el tipo de enemigo le da una velocidad
//y vitalidad disitintas
//mueve al enemigo (varia la posicione, xe, xp) el problema esta
//aki, yo lo que pretendo es cambiar las variables posicione, xe,
//ye, pero tal y como lo he puesto no se consigue ya que las
//toma de entrada pero no de salida. ¿Hay que indicarle de
// alguna forma especial que una variable es de entrada y salida?
enemigomovi(tipoene,vitalidad,velocidad,posicione, xe,ye);
//le paso las coordenadas del enemigo y la posicion, que se
//supone que estan variando en enemigomovi
multidisparoene(tipo,posicione,xe,ye);
ctype=c_scroll;
Loop
Frame;
End
End

Process enemigomovi(tipo,vitalidad,velocidad,posicione,xe, ye)
Private
Int actualizado,cambio;
Begin
ctype=c_scroll;
posicione=1;
actualizado=0;
cambio=0;
x=xe;
y=ye;
Loop
xe=x;
ye=y;
actualizado=0;
graph=tipo+posicione;
//... tada la movida del codigo para modificar x, y, poscione
End
End

El de multdisparoene no lo pongo porque usa mas subprocesos, pero que el problemas es ese que las variables creo que solo las toma como entrada y no como entrada/salida. Eso es todo.

(quiza los subprocesos se pudan declarar dentro del proceso principal y asi usar las variables privadas, puede que sea asi, pero si es asi tampoco se donde debo declarar los subprocesos (supongo que dentro del private))
La solucion de aplicar variables globales no es valida, porque se necesita por cada enemigo unas variables.
A ver si alguien puede ayudarme.Ta luego.

Puck2099
02/10/2004, 20:14
¿Estás seguro de que los procesos se ejecutan concurrentemente? Yo de Fenix no tengo ni idea, pero en los lenguajes que conozco creo que hay que usar estructuras específicas para que no las haga secuencialmente.

Quizá es por eso que te falla...

Saludos

OscarBraindeaD
02/10/2004, 21:05
Hola a todos.

Fénix sí ejecuta procesos en paralelo, sin usar estructuras especiales ni nada más.
Lo de las variables. Exactamente no sé qué es lo que quieres decir con variables de entrada salida...

En Fénix las variables pueden ser:

Global: la variable es accesible desde cualquier parte del programa, desde cualquier proceso. Sólo existe una "copia" de la variable en todo el programa.

Private: la variable sólo es visible en el proceso en que se declaró. Cada instancia del proceso, obviamente, tendrá su propia "copia" y su propio valor en esa variable. No puede ser referenciada desde fuera del proceso.

Local: las variables que se definan como locales existirán para TODOS los procesos que se creen en el programa. Por ejemplo las variables x, y, graph, size, etc de cada proceso son variables locales. Pueden ser referenciadas desde otros procesos.

Espero que, aunque no te lo haya resuelto, te haya quedado algo más claro el uso de variables en fénix.

Salud