Ver la versión completa : ¿Animaciones que desaparecen o con parkinson? y de postre duda idiota
jean la montard
26/03/2008, 12:13
Dejo las respuestas y preguntas porque podria ayudar a alguien las siguientes iran mas adelante
______________
Buenas
Pues tras mucho tardar sigo con mi proyectillo del joust y bueno , los tutos que encuentro o no me son de mucha ayuda o no me entero de nada , la cuestion; con el codigo que pongo aqui las animaciones se realizan en el sitio y despues se desplaza el personaje los pixeles que el pongas
if(key(_left))
x=x-5;
flags=1;
for(cont=3;cont>=1;cont=cont-1)
graph=cont;
frame;
end
end
como no sabia que hacer tire por el camino de en medio para probar si mis animaciones estaban mal o lo que fuera con este codigo
if (key(_left))
x=x-5;///disminuir posicion de x
flags=1;///idem
graph=graph+1;
Evidentemente no vale porque cuando se acaban los 4 frames desaparece , pero me vale para ver claramente que durante esos 4 frames se desplaza tal y como yo queria...
Ahora la duda , ¿Como lo hago?
Duda de regalo , ¿es posible determinar en el BEGIN del comienzo una condicion de salida que permanezca durante todo el codigo ?actualmente lo estoy haciendo con un If (key(_esc)) exit() etc etc... pero como tengo un par de breaks he de ir especificandola en cada proceso lo cual son mas lineas y mas recursos ...
Saludos y gracias por las respuestas
pues creo que lo mas correcto es tu segunda opcion, pero poniendo "rodeandolo" un while. Todo proceso lleva un while "grande" que hace que se repita infinitamente.
Aiken
Recuerda que lo ideal es que solo haya una llamada a frame en todo el bucle. La idea es que el tipillo entre en el estado 'moviendose' cuando se detecte la pulsación de la tecla _left, y haga todo el bucle en ese estado mientras _left esté pulsada.
Además vamos a independizar grah de cont, para que puedas tener distintas animaciones en un solo fpg. inicio_anim apunta al primer gráfico, y max_anim al número de gráficos de la animación. En tu caso, inicio_anim=1; max_anim=3;
if(key(_left)) // inicia y mantiene el estado 'moviendose'
moviendose = true;
if cont == 0 // así dejamos que siga la animación si ya está en marcha
graph = inicio_anim; // solo cambia el gráfico si no había anmación en marcha
end
cont = 3;
flags = 1;
end
if moviendose // estado moviéndose
cont -= 1;
if cont < 1 // salida del estado moviendose
moviendose = false;
graph = graph_quieto;
flags = 0;
else // seguimos dentro del estado
graph = (graph + 1) % max_anim + inicio_anim;
end
end
/* resto del código del tipo, que se ejecutará incluso cuando se está moviendo */
frame; // solo una llamada a frame en todo el bucle
También puedes mover solo un pixel por animación, pero mientras se mueva no responderá al resto de eventos y por eso esta opción aunque más sencilla probablemente no te valdrá:
if(key(_left))
flags=1;
for(cont=3;cont>=1;cont=cont-1)
graph=cont;
x -= 1;
frame;
end
end
/* resto de código del tipo, que no se ejecuta mientras se está moviendo */
Recuerda que hace años que no programo en Fenix, así que quizá el código que propongo está fatal :D
En cuanto a la "condición de salida" que buscas, quizá te valga con un let_me_alone(): en el bucle principal pones
if(key(_esc))
let_me_alone(); // matas a todos los demás procesos y te quedas tú solo
frame; // creo recordar que necesitas una llamada a frame para que se envíe la señal de muerte
/* te despides del jugador */
exit();
end
y ya está, no necesitas capturar la tecla _esc en los demás procesos proque estarán muertos antes de poder hacerlo :D
Bueno, pues mira, yo haría lo siguiente:
if (key(_left))
x-=lo_que_sea;
graph++; //es lo mismo que graph=graph+1;
if (graph>ultimo_grafico) graph=primer_grafico; end
(...)
end
frame;
Con el if comprobamos si nos hemos salido del rango de gráficos de la animación, si nos hemos pasado del último, simplemente volvemos al primero, y listo. Además, como dice juanvvc, si primer_grafico y ultimo_grafico las defines como variables podrás cambiar la animacion en tiempo real si está en el mismo fpg.
Respecto a salir del proceso, es lo que dicen: debes tener un bucle principal, puedes usar un while, puedes usar un loop+break... pero a las malas, puedes hacer que el proceso se autodestruya con las signals:
signal(id,s_kill);
Es esto LITERALMENTE, ya que id es una variable local predefinida en la que se guarda la ID del propio proceso, así le mandamos una señal de eliminar a sí mismo. No es muy elegante, pero te puede servir si quieres huir del bucle principal. Además, recuerda que break solo afecta a bucles, no a ifs ni a switchs.
Y por si acaso, en las últimas versiones de Fenix se añadió la clausula ONEXIT, es una seccion del código que sólo se ejecuta al matar al proceso, muy util para descargar recursos, y poner a cero variables que dependan del propio proceso, pero por eso mismo se recomienda usar un bucle principal, porque al salir de él, se puede hacer lo mismo.
Espero que se entienda con suficiente claridad :)
la solución de Drumpi también vale, claro, y es mucho más corta que la mía. ¿En qué estoy pensando? Solo cambiaría que el cambio de gráfico fuese con aritmética modular, y así ganas unos milisegundillos: en vez de graph++; if(graph>max_graph)...
graph=(graph+1)%num_graphs+first_graph;
De todas maneras, mi solución permite moverse con inercia, cosa que la de Drumpi no hace :)
jean la montard
26/03/2008, 23:55
ya me funciona con el metodo de Drumpi...
Juanvvc podrias detallar tu formula no tengo ni idea de como iria :loco: , una de las ideas era que al parar o girar derraparan un poquito asi que para un poquito mas adelante me interesaria que tuviera un pelin de inercia :P
ahora a pelearse con el vuelo , en el original en funcion de que pulsaras el salto se elevaba un poco mas con la inercia que llevara de la carrera y ademas rebotaba con todas las plataformas en plan bola de billar (angulo de salida= angulo de entrada) y la gravedad y el que salga por un lado y aparezca por otro y los enemigos y los impactos...y y y y y
Dios cuanto curro pendiente :loco:
Vaya! he llegado tarde XDDDD. Pero bueno, podría ser peor.
jean la montard
27/03/2008, 00:31
Tranqui chipan no tienes mas que ver en el mensaje anterior , que estoy repleto de dudas alguna te tocara XD
NOTICION DE ÚLTIMA HORA , ya desaparece por un extremo y aparece por el otro XD algo que he arreglado sin ayuda :wei1: fiesta :brindis: birras para todo
Juanvvc podrias detallar tu formula (...) para un poquito mas adelante me interesaria que tuviera un pelin de inercia :P
Pues exactamente como pongo arriba :): manejando un estado 'moviéndose'. Aunque veas mucha literatura la mayoría son comentarios. Cuanto más alto pongas el contador 'cont' al entrar en el estado, más inercia tendrá a mantenerlo (más tiempo estará moviéndose después de dejar de pulsar _esc).
Si lo que te pierde es la aritmética del módulo, déjalo correr y utiliza graph+=1; if graph>graph_max) graph=graph_min; y ya está.
Una vez más, se me adelantan con la respuesta XD
De todas formas, esto hay muchas formas de hacerlo, no te voy a decir cual es mejor ao no, porque eso sólo lo sabes tú, yo sólo te diré cómo lo haría yo (que no quiere decir, ni mucho menos, que sea la mejor).
En un juego de submarinos hace tiempo (que por cierto, espero portar algún día) utilicé para la inercia un sistema similar al de la gravedad del "Castle of Dr Malvado": básicamente era declarar una variable llamada "velocidad", que al pulsar derecha se incrementase en 1 unidad, y si no pulsas nada, se decrementase solo.
Esta variable, una vez calculada, se la sumas a la posición. Así, cuando pulsas derecha, el primer frame el personaje se moverá 1 pixel, en el segundo 2, en el tercero 3, dando la sensacion de que acelera, y cuando sueltas, primero tres, luego dos, luego uno, y finalmente cero.
Obviamente debes controlar los límites de esta variable para que no vaya muy rápido o que al no pulsar nada se mueva hacia atrás. Tambien puedes usar valores negativos para la tecla izquierda, pero te adelanto que tendrás que comprobar:
a) que se pulsa derecha.
b) que se pulsa izquierda.
c) que no se pulsa ninguna (para que se vaya frenando solo)
Y eso contando con que sería imposible pulsar ambas a la vez (que sería un caso a tener en cuenta en a y b)
Puede parecer un poco complicado, pero sabiendo hacerlo y con los valores adecuados se pueden lograr cosas muy curiosas. Ya digo que así simulé el movimiento del submarino y aun me gusta verlo en movimiento.
Lo único que me impide hacer el port ya es que no consigo hacer funcionar mi nuevo motor de scroll tileado :P
jean la montard
30/03/2008, 21:51
Gracias a todos por vuestras ayudas sigo aqui porque el tema es el mismo , para la gravedad ya creare otro :P
if (key(_right))
velocidad+=5;
flags=0;
x=x+velocidad;
If (x>320) x=pospantx_1;end
End
if (key(_left))
velocidad+=5;
flags=1;
x=x-velocidad;
If (x<0) x=pospantx_2;end
End
If (velocidad<0)
velocidad-=1;
End
If (velocidad>0)
velocidad+=1;
End
If (velocidad<>0)
graph++;
graph=(graph+1)%num_graphs+graph_1;//idem
End
If (velocidad=0)
graph=4;
End
Si no entiendo mal , con este codigo deberia de tener un poquito de inercia y al detenerse aparecer la posicion inicial (graph=4) , pero ni lo uno ni lo otro aunque lo curioso es que funciona bien todo lo demas (desplazamiento y desaparicion por un lado y aparecer por otro) ... esta basado en lo que entendi del codigo del doctor malvado respecto al movimiento
Tienes que sacar el cálculo de las x fuera de los ifs, para que se sigan calculando al dejar de pulsar el botón. Mi propuesta (nota que cambio algunos signos):
if (key(_right) && abs(velocidad)<MAX_VELOCIDAD)
velocidad+=5;
flags=0;
end
if (key(_left) && abs(velocidad)<MAX_VELOCIDAD)
velocidad-=5;
flags=1;
End
If (velocidad<>0)
x=x+velocidad;
If (x>320) x=pospantx_1; end
If (x<0) x=pospantx_2; end
If (velocidad<0)
velocidad+=1;
End
If (velocidad>0)
velocidad-=1;
End
graph++; // ¿Por qué aumentas dos veces el gráfico?
graph=(graph+1)%num_graphs+graph_1;//idem
else
graph=4;
End
jean la montard
31/03/2008, 01:23
Ok Juanvvc , solo dos cuestiones
-¿Los &&, el abs y el % son operadores o algo asi y concretamente para que valen ? mas que nada para saberlo y ahorrarme el tener que preguntar estas cosas y poder hacer el codigo yo :P no me gusta depender de las respuestas
- Respecto a :
graph++; // ¿Por qué aumentas dos veces el gráfico?
graph=(graph+1)%num_graphs+graph_1;//idem
si quito alguna linea de estas dos el grafico no avanza y no se porque ... :s
Voy con un poquillo de prisa, así que contesto lo que puedo sin mirar el código:
&& es lo mismo que AND.
abs devuelve el valor absoluto de un número.
% es el operador resto: devuelve el resto de dividir el número de la izquierda por el de la derecha.
Y respecto a los dos grpahs, creo que lo que quería hacer era quitar el graph++ nada más, debería funcionar... creo.
Completando lo que dice Drumpi:
&& es totalmente equivalente a AND. Los que estamos acostumbrados a otros lenguajes utilizamos && por costumbre y porque nunca sabemos si AND es una palabra del lenguaje :D
abs() devuelve el valor absoluto sin signo. Así, abs(-5) es 5 y abs(5) también.
Si MAX_VELOCIDAD=15, la expresión if(key(_left) && abs(velocidad)<MAX_VELOCIDAD) quiere decir "si se está pulsando la tecla izquierda y la velocidad está entre -15 y 15" Aquí la operación abs() sirve para no aumentar indefinidamente la velocidad. Ten en cuenta que si la velocidad es negativa te mueves a la izquierda y si es positiva a la derecha.
% es la operación módulo. Como lo de AND, en algunos lenguajes es equivalente a MOD pero no recuerdo si Fenix tiene la palabra MOD. El módulo es el resto de una división: 5%4 vale 1 porque 5 entre 4 son 1 y de resto 1. 6%4 son 2, 8%4 son cero y 9%4 vuelve a ser 1. Es muy útil cuando necesitas contadores que dan la vuelta, como graph que va desde graph_1 hasta graph_1+num_graphs y de allí vuelve a graph_1
Que sumes dos veces uno a graph en esas dos líneas parece un error, a menos que tus gráficos estén separados por dos unidades. Por ejemplo 2, 4, 6 y 8. Si los gráficos son 2, 3, 4 y 5, efectivamente sobra graph++ (porque es "el que no da la vuelta")
Si, MOD es una palabra del lenguaje y equivale a % (módulo) :)
jean la montard
31/03/2008, 12:54
Muchisimas gracias por vuestras sabias explicaciones , ya tiene inercia y se frena , en seguida me metere con "la gravedad" pero sigo sin conseguir hacer funcionar lo de los graphs si no pongo los dos la animacion no se mueve pero va de dos en dos frames y si pongo los dos va a trompicones , intente poner la primera idea de Drumpi pero cuelga el programa , asi que ni idea :loco: os pongo el codigo completo del juego haber si veis el problema
// --------------------------------------------------------------------------
// Ultimate Fenix Joust by jeanmontarde
// Created on 18:25 - 27/02/08
// --------------------------------------------------------------------------
Program Joust;
Global
Puntos=0;
Vidas=3;
BEGIN
Full_screen=false; ///pantalla completa si o no
set_mode(320,240,16);///modo de pantalla y color
set_fps (30,0);///Establecer frameado
load_fpg("graficos.fpg");//carga el archivo de graficos
put_screen(0,001);///pone grafico en pantalla
From z=0 to 49;frame; End///retrasa la desaparicion en pantalla
fade(0,0,0,2);///fundido en negro
While(fading) frame; End///fundido en negro
fade_on();///encender pantalla
clear_screen();///limpiar pantalla
Menu();///llamada proceso menu
END
Process menu()///Regula el menu y lo pone en pantalla
Begin
write (0, 160, 10, 1, "Joust-Prueba de control") ;///escribir "" con coordenadas
write (0, 160, 30, 1, "Original por Williams en 1982");///escribir "" con coordenadas
write (0, 160, 40, 1, "Remake por Lokura Entertaiment");///escribir "" con coordenadas
write (0, 160, 50, 1, "Codigo y graficos por");///escribir "" con coordenadas
write (0, 160, 60, 1, "Jean La Montard");///escribir "" con coordenadas
write (0, 160, 140, 1, "Pulsa A para salir") ;///escribir "" con coordenadas
write (0, 160, 150, 1, "Pulsa B para prueba de movimiento");///escribir "" con coordenadas
write (0, 160, 200, 1, "29-2-2008");///escribir "" con coordenadas
Loop///inicia bucle
If (key(_control)) ///Si pulsa control...
fade(0,0,0,2);///fundido en negro
while (fading) frame; end///fundido en negro
exit() ; end///condicion de ruptura
If (key(_space))///si pulsa espacio...
fade(0,0,0,2);///fundido en negro
While(fading) frame; End///fundido en negro
fade_on();///encender pantalla
clear_screen();///limpiar pantalla
prueba();break;end///llamada al proceso prueba e interrupcion de los demas procesos
Frame;///poner en pantalla
END
END
Process Prueba()///regula la carga y arranque del escenario
Begin
delete_text(ALL_TEXT);///elimina todo lo de la pantalla
Put_screen(0,3);///pone el fondo
write (0,160,10,1, "Joust-Prueba de control");
Prota();///llama al prota
End
Process Prota()///protagonista, movimiento, salto,etc...
Private
graph_1=4;
pospantx_1=0;
pospantx_2=320;
num_graphs=5;
velocidad=0;
max_vel=10;
Begin
x=160;///situacion respecto de x
y=120;///situacion respecto de y
graph=004;///grafico usado
loop///bucle
If (key(_esc))
fade(0,0,0,2);///fundido en negro
While(fading) frame; End///fundido en negro
fade_on();
exit();
end
if (key(_right) && abs (velocidad)<max_vel);
velocidad+=5;
flags=0;
End
if (key(_left) && abs (velocidad)<max_vel);
velocidad-=5;
flags=1;
End
If(velocidad<>0)
x=x+velocidad;
if(x>320)
x=pospantx_1;
end
if(x<0)
x=pospantx_2;
end
if(velocidad<0)
velocidad+=1;
End
If(velocidad>0)
velocidad-=1;
End
Graph++
Graph=(graph+1)%num_graphs+graph_1;
else
graph=4;
end
frame;
End
End
Lo de Drumpi no debería colgar el programa. En tu caso con tus variables:
graph++;
if(graph>=graph_1+num_graphs) graph=graph_1; end
Que es en todo equivalente a graph=(graph+1)%num_graphs+graph_1;
jean la montard
31/03/2008, 15:11
pues asi si va , supongo que me colaria con algun signo o alguna variable mal puesta , gracias juanvvc , aunque sigo sin saber porque no iba solo con tu propuesta sin el Graph++ , es muy raro :loco: de todos modos gracias y mas gracias por seguir ayudando con lo pesado que soy :P
PharaOnyx
31/03/2008, 15:15
&& es totalmente equivalente a AND. Los que estamos acostumbrados a otros lenguajes utilizamos && por costumbre y porque nunca sabemos si AND es una palabra del lenguaje :D
En Fenix no tengo ni idea (:D), pero en otro lenguajes no son totalmente equivalentes:
falso || verdadero = verdadero
falso or verdadero = falso
verdadero && falso = falso
verdadero and falso = verdadero
Saludos, Alex
PharaOnix, no consigo imaginar qué mente enferma habrá ideado un lenguaje en el que "verdadero and falso = verdadero". ¿De cuál hablas?
Lo que no es realmente igual en C es "5 && 5" y "5 & 5", pero la diferencia en la condición de un if es tan sutil...
PharaOnyx
31/03/2008, 15:46
PharaOnix, no consigo imaginar qué mente enferma habrá ideado un lenguaje en el que "verdadero and falso = verdadero". ¿De cuál hablas?
Realmente es que tiene truco... :D, pero no quería dejarlo pasar porque lo mismo se encuentra con problemas más adelante
Los operadores como tal y de forma aislada sí son equivalentes (es decir, dan el mismo resultado), pero a la hora de mezclarse con otros la cosa cambia. Al tener diferente precedencia empiezan a aparecer resultados 'raros':
$a = true && false ($a vale false)
$b = true and false ($b vale true)
El 'misterio' está en que la precedencia del '=' está justamente entre la precedencia del '&&' y la precedencia del 'and', con lo cual los resultados no son los que deberían ser a simple vista :)
Saludos, Alex
pd: hablo de php. Lo mismo en Fenix no es así, pero más vale prevenir...
:S
Desde luego, ni en fenix, ni en C, incluso ni en matlab había visto semejante cosa. Solo voy a decir una cosa al respecto: dios bendiga a los paréntesis :S:S:S
jean la montard
01/04/2008, 22:01
Haber chicos , vuelta a las dudas XD
La gravedad va con valor 5 prefijada
If(gravedad<>0)
Repeat
y=y+gravedad;
frame;
until(map_get_pixel(0,3,x,y+16)==rgb(255,0,0))
gravedad=0;
frame;
End
Con este codigo consigo un efecto de gravedad , es decir , que caiga el muñeco hasta la plataforma dibujada como dureza
Pero tengo dos problemicas:
- No me deja moverme en el aire , es decir cuando cae es una piedra no me deja desplazarme mientras cae
-Al llegar a la plataforma digamos que es como si desactivara ya que no se cae más , aunque no halla suelo
¿Alguna idea?
no sé a qué te refieres con lo de la plataforma. Para el resto, puedes hacer lo mismo que ya has hecho con la inercia pero con una velocidad_y. Esta vez te lo pongo en pseudocódigo:
MAX_VEL_Y=-10;
GRAVEDAD=2;
/* aquí todo el código que hemos hablado hasta ahora */
if(key(_left)
...
end
if(velocidad)
...
end
if(velocidad_y<>0)
/* el muñeco está cayendo */
/* si hay plataforma, deja de caer */
if(map_get_pixel(0,3,x,y+16)==rgb(255,0,0))
velocidad_y=0;
else
/* no hay plataforma: continua cayendo */
/* velocidad terminal: suele ser útil ponerla */
if(velocidad_y>MAX_VEL_Y)
velocidad_y-=gravedad;
end
/* movemos el muñecajo */
y+=velocidad_y;
end
else
/* el muñeco no está cayendo */
/* Un salto */
if(key(_spc))
velocidad_y=10;
else
/* no hay salto. Si tampoco hay plataforma, cae */
if(map_get_pixel(0,3,x,y+16)<>rgb(255,0,0))
velocidad_y=-GRAVEDAD;
end
end
end
/* el resto del código del muñecajo */
frame;
jean la montard
02/04/2008, 13:16
Buenas juanvvc , al final tu pseudocodigo ha sido de ayuda aunque no me salia , asi que tome cosas de aqui y de alla y de momento me da lo que queria , tal vez no sea la manera mas ortodoxa pero da resultados aqui te lo pongo por si te interesa hecharle un vistazo
este es el bucle del protagonista , falta añadir animaciones para el salto , el rebote con las plataformas y los toques con los enemigos espero no necesitar muchas mas ayuda y gracias por todo (otra vez :P)
loop
If (key(_esc))
fade(0,0,0,2);///fundido en negro
While(fading) frame; End///fundido en negro
fade_on();
exit();
end
if(map_get_pixel(0,3,x,y+18)<>rgb(255,0,0));
velocidad_y=5;
end
if (key(_right) && abs (velocidad_x)<max_vel);
velocidad_x+=5;
flags=0;
End
if (key(_left) && abs (velocidad_x)<max_vel);
velocidad_x-=5;
flags=1;
End
if(key(_space)&& abs(velocidad_y)<max_vel);
velocidad_y-=10;
End
if(map_get_pixel(0,3,x,y+18)==rgb(255,0,0));
velocidad_y=0;
if(key(_space)&& abs(velocidad_y)<max_vel);
velocidad_y-=10;
end
End
if(velocidad_y<>0)
y=y+velocidad_y;
if(velocidad_y<0)
velocidad_y+=1;
end
end
If(velocidad_x<>0)
x=x+velocidad_x;
if(x>320)
x=pospantx_1;
end
if(x<0)
x=pospantx_2;
end
if(velocidad_x<0)
velocidad_x+=1;
End
If(velocidad_x>0)
velocidad_x-=1;
End
graph++;
if(graph>=graph_1+num_graphs) graph=graph_1; end
else
graph=4;
end
frame;
End
Por cierto ¿Alguien sabe como hay que especificar el pulsado de una tecla para que su funcion no se active manteniendola pulsada, sino por cada pulsacion (desactivar el autofire, vamos :P)?
lo del "autofire" es simple... creas una variable que cuando pulses la tecla en cuestión aumente de uno en uno y cuando la dejes de pulsar se ponga a 0.
int pitruski;
...
if(key(_control)) pitruski+=1; else pitruski=0; end
y en lugar de tomar como evento la pulsación de la tecla toca como evento un valor de la variable en cuestion.
En lugar de:
if(key(_control)) disparo(x,y); end
hacer algo como:
nt pitruski;
...
if(key(_control)) pitruski+=1; else pitruski=0; end
if(pitruski==1) disparo(x,y); end
Creo que se entiende el concepto.
En vez de usar pitruski como contador, yo lo haría así con lógica booleana que queda muy elegante y te evitas saltos condicionales:
pitruski=false; /* al inicio del juego, no dentro del bucle */
...
pitruski=not pitruski and key(_control);
if(pitruski) disparo(x,y); end
Jean, tu código lo veo bien y has corregido el signo negativo de las y que tenía mal puesto :)
no entiendo ese código.
No lo entiendes porque está mal :D Jean no me hagas caso, haz lo que dice Chipan.
LOL, ya me extrañaba, pero bueno, nunca se sabe
jean la montard
02/04/2008, 15:30
tengo un problema , el contador dura demasiado poco , asi que pense estirarlo con una variable que lo reseteara con valor 0 cuando alcanzara un determinado valor pero , no me va :S
salto=0;
cont_salto=0;
Aqui la pulsacion
if(key(_space)&& abs(velocidad_y)<max_vel);
salto+=1;
if(salto=10)
salto=cont_salto;
end
end
Aqui el contador
if(salto=10)
velocidad_y-=10;
end
el salto es como si no funcionara :loco:
¿Cuando dices
if (salto=10)
no querrias decir
if (salto==10)
?
jean la montard
02/04/2008, 19:32
da igual cual ponga no me va indistintamente :loco:
Bueno, mirando más tranquilamente el código que has puesto (y suponiendo que no hay nada más que afecte a esa parte) cuando haces el primer if (el de key(_space)) asignas a salto el valor de cont_salto que, supuestamente, vale cero, así que, cuando llegas al segundo if, salto no vale 10... a menos que en alguna parte del código hayas puesto que cont_salto valga 10 (directamente o incrementando su valor, algo que no te puedo decir sin ver más código)
Pero insisto en lo del ==, = es una asignación y == una comparación. No recuerdo bien en esta versión, pero en las primeras de Fenix, cualquier valor par se toma como FALSE y los impares como TRUE. En las últimas versiones sólo el 0 se toma como false, y los demás valores como true, pero no se a partir de qué version.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.