cuelgue al usar dos teclas a la vez

Started by Soviet, January 07, 2014, 03:41:30 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Soviet

Hola a todos
la verdad es que estoy haciendo un rpg, y la verdad es que me ha salido todo bien hasta el momento en que he tenido que dotar de movimiento al personaje, hice una animacion pora 8 dircciones en las que se moveria el personaje como de 20 frames por animacion y otras 20 para representar al personaje respirando cuando esta de pie
el problema es que cuando me quiero mover en direccion diagonal y presiono la tecla arriba y derecha al mismo tiempo, el programa se cuelga...
dejare el ejemplo del codigo para q me entiendan mejor

process personaje(x,y)
int stand_E;//variable que hace que el personaje se oriente de pie mirando hacia el este
begin
loop
if(stand_E==1 and not key(_right) and not key(_up) and not key(_down) and not key(_left))
from graph=1 to 20; frame; end
end
if (key(_right) and not key(_up) and not key(_down)and not key(_left))
x=x+10;
if (graph<=169 or graph>=189) graph=169; end;
graph=graph+1;
frame(200);
stand_E=1; stand_N=0; stand_S=0; stand_O=0; stand_NE=0; stand_NO=0; stand_SE=0; stand_SO=0;
end
end
end


bueno, eso es lo que sucede presiono dos teclas al mismo tiempo y el programa se cuelga para siempre, si alguien me pudiese hechar una mano le estaria mas que agradecido

Yawin

A ese código le falta el comando frame en un sitio. Si stand!=1 y no pulsas ninguna tecla, no hay frame puesto.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Soviet

eso ya lo he cambiado, Yawin, sin embargo se efectua el mismo problema, a mi entender es porque al presionar dos teclas a la vez hago correr dos instancias de animacion para un mismo proceso. por otra parte, estas incurren a una animacion de respirar, lo cual significa q si corres en una direccion -suroeste por ejemplo- el personaje se quede mirando hacia el suroeste junto a una animacion para que no se vea estatico, es por eso las variables stand, ademas me he reventado la cabeza en crear un sistema eficiente, que me permita usar combinacion de teclas para lograr que el personaje se mueva en diagonal sin colgar el juego...

Drumpi

El mejor sistema que conozco es que... observa el teclado numérico. Crea una variable "direccion" e inicializala a 5, que está en el centro del teclado numérico.
Haz que si se pulsa izquierda, se reste 1, y si se pulsa derecha se sume 1. Eso hará que "dirección" valga 4 (que está a la izquierda del teclado numérico) o 6 (que está a la derecha); si se pulsan ambos volverá a valer 5, se contrarresta una dirección con otra.
Haz que si se pulsa arriba se sume 3, y si se pulsa abajo se reste 3. Eso hará que "dirección" valga 8 (que está arriba del teclado numérico) o 2 (que está abajo); si se pulsan ambos volverá a valer 5, se contrarresta una dirección con otra.

¿Y qué pasa si se pulsa arriba y a la izquierda? 5 + 3 - 1 = 7. Si te fijas en el teclado numñerico, el 7 está en la esquina superior izquierda, tal como quieres. O sea, que las 9 posibles direcciones del personajes se ven con los valores del teclado numérico, y te da igual cuántos botones de dirección tengas pulsados a la vez.

Aparte de eso, con ese fragmento de código no te podemos decir gran cosa del cuelgue porque Yawin ya te ha encontrado un fallo por falta de frame, y porque en ese código no hay nada que explique qué debe hacer en caso de pulsar dos botones a la vez. ¿Dónde se llaman a las dos instancias de animación?
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)

Soviet

Eso es justo lo q necesitaba drumpi!! muchas gracias =), lo del frame en el lugar incorrecto ya se lo explique a Yawin
de todas formas muchas gracias por su ayuda!!
tratare de implementarlo y luego les cuento que tal