Mejorar KEY

Started by panreyes, June 29, 2010, 11:07:48 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

es cierto, no funciona, ya pongo el fix en el hilo correspondiente.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JMP

#61
Pues a mi el mío me va, pero no te aconsejo usarlo. El de SplinterGU me lo guardo para usarlo que va perfecto ;D
Por cierto karma para SplinterGU.

FreeYourMind

Si el tuyo va pero sólo el primero.
El de Splinter va ser el que use, aunque por lo poco que iba a utilizarlo en el juego tu primer código era más que suficiente, esto para no ponerlo como lo tengo en otros juegos, donde tambien controlo el presionar sin usar frame; pero me gusta variar y aprender cosas nuevas con los demás  ;D

FreeYourMind

Crashhhhhhhhhhhhhhhhhhhhhhhhhhhh

Llamar 2 veces seguidas al 'IF (_key(_space, _key_down))' en un LOOP saca un pete muy feooooo.....



Crash!!!!



...

LOOP ...

IF (LetraAEditar == 1)
 IF (_key(_space, _key_down))
     LetraAEditar++;
 END
END

IF (LetraAEditar == 2)
 IF (_key(_space, _key_down))
     LetraAEditar++;
 END
END

...

FRAME;
END

...





Fix:



...

LOOP ...

IF (LetraAEditar == 1)
 IF (_key(_space, _key_up))
     LetraAEditar++;
 END
END

IF (LetraAEditar == 2)
 IF (_key(_space, _key_down))
     LetraAEditar++;
 END
END

...

FRAME;
END

...


DjSonyk


¿Free para que quieres 2 'IF (_key(_space, _key_down)) practicamente iguales en un mismo Loop?

ademas de que puedes hacerlo asi...
IF (LetraAEditar == 1 || LetraAEditar == 2)
  IF (_key(_space, _key_down))
      LetraAEditar++;
  END
END
y te ahorras 5 lineas ^^

FreeYourMind

#65
No no no, hehehehehe, es que dentro de cada if tengo mas operaciones. Es justo lo que quiero, al darle al space, cambio de letra, o sea tengo 3 letras, cada vez que le doy al space me voy a la siguiente, donde despues la puedo cambiarla con izquierda y derecha.

El problema es que ahora en la tercera letra al darle al space quiero salir del menu, pero al cambiar a la tercera como esta en el loop me hace la tercera condicion automaticamente (salir al menu) y no me deja editar la tercera letra.
Ahora ni con down o up tengo suerte para separar el tercer caso.
Tendré que poner un temporizador en esta ultima para que el boton me deje editar la ultima letra antes de salir...

DjSonyk

Sigo pensando...esque me parece rarisimo que te de error ,ya que para que se ejecute cada IF (_key(_space, _key_down))
tiene primero que cumplir una condición ,asi que no se podria llamar 2 veces seguidas ,sin a ver cumplido la condición,porque o bien es LetraAEditar 1 o LetraAEditar 2 ....ect ,a lo que me refiero que no puede ser por un conflicto de sentencias o se ejecuta una o otra ,devido al primer IF,IF (LetraAEditar == 1),ect, otro caso seria si no existiera ese IF antes,asi que no se como te puede dar ese error,visto asi me parece casi imposible....

FreeYourMind

Ya lo he resuelto hehehehehe.


....
IF (LetraAEditar == 3 OR LetraAEditar == 4)

   // .... (Logica de cambio de letras)

    IF (_key(_space, _key_up))
       LetraAEditar++;
     END
      
END
    
IF (LetraAEditar == 4)
     IF (_key(_space, _key_down))
          BREAK;
     END
END


Hheheheh, sólo ha sido jugar con el PAR/IMPAR que en este caso es down/up :)

Sobre el error es así como te digo, si pongo alternadamente up, down el error no ocurre, pero con 2 down seguidos, voila: crashing pump :)

DjSonyk

Me alegro de que lo allas resuelto,pero ahora al ver tu ultimo post,me ha venido la luz a los ojos....Vamos que veo el fallo de porque no te funciona bien.
Te hace crahs,porque al pulsar la barra espaciadora,te suma 1 a LetraEditar con lo que te salta el siguiente IF , :P,para que no te cascase se tenia que parar en ese punto,y no comprobar la siguiente sentencia pues su condicion resulta verdadera al a ver incrementado la variable LetraAEditar en el anterior IF,¿me explico?

FreeYourMind

Hombre, eso pensaba que lo habias visto al principio :)
Por eso hace 2 key_down seguidos, pero eso no tiene que ser motivo de crash, si existe el crash ya es por algo que ocurre con esta funcion al repetirse.

De todos modos, es posible hacerlo con key_down y key_up alternado sin tener problemas ni de crash ni de funcionalidad, porque cuando haces key_up ya sabes que no vas a tener un key_down despúes, al menos que vuelvas a presionar el boton :)

DjSonyk


SplinterGU

raro el error... ahhh, ya se que puede ser... a ver...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

no, no era... tendre que esperar a terminar de actualizar el equipo porque no me funca bennu sin la libcrypto que no tengo instalada
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

lo acabo de probar y a mi no me falla...



import "mod_video";

import "mod_text";



#include "key_event.lib";



private

a,b,c;

int creditos;

LetraAEditar;
begin



    _key_init();



    write_int(0,0,0,0,&a);

    write_int(0,0,10,0,&b);

    write_int(0,0,20,0,&c);

    write_int(0,0,30,0,&creditos);



    while( !_key( _ESC, _key_pressed ) )



        a = _key( _5, _key_down );
say(_key( _5, _key_down ) );

        b = _key( _5, _key_up );

        c = _key( _5, _key_pressed );



        if ( _key( _5, _key_down ) ) creditos +=1; end

     IF (_key(_space, _key_down))
       LetraAEditar++;
     END
     
     IF (_key(_space, _key_down))
          LetraAEditar++;
     END
say(LetraAEditar);

        frame;

    end



    _key_exit();



end


como siempre, y no me voy a cansar de decirlo, ejemplo completo con el error... creo que redactare una regla en la seccion de mesa de ayuda, donde solo se resolveran consultas ahi y que si no hay ejemplo compilable:



no, en serio, si no hay ejemplo, no hay soporte... no es mala leche, pero perdemos mucho tiempo revisando cosas que pocas veces son bugs, cuando son bugs fantastico, e incluso el ejemplo ayuda a resolverlo mas rapido.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Hheehehhehhe, le estas robando el ancho de banda a los frikis.

Lo del ejemplo, pues no necesitas resolver la duda si no quieres, pero lo de la regla no estoy de acuerdo, es preferible que si lo necesitas yo lo haga, pero no voy a estar haciendo prg's de prueba cada vez que me sale un error, sólo si es necesario, sino uno se vuelve loco, ya que muchas veces no es necesario.
Tienes que entender que esto no siempre es fácil, porque uno tiene que estar adaptando lo que tiene a un prg mas sencillo.
Si fuera cantar y coser no importaria poner siempre un prg de test para simular el error, ojala la vida fuera tan maravillosa como lo pintan en las pelis  :D