Lectura eficiente del input (entrada) en BASIC ¿cómo?

Página 2/3
1 | | 3

Por jrcp_kun

Paragon (1410)

Imagen del jrcp_kun

07-01-2015, 12:34

hombre tonteria no porque las diagonales de los cursores serian asi no??

Por mohai

Paladin (924)

Imagen del mohai

07-01-2015, 15:11

Para leer los cursores y la barra espaciadora, recomendable usar siempre las funciones STICK y STRIG.
Por ejemplo, con unos "ON STICK GOSUB" y "ON STRIG GOSUB", es fácil leer estas teclas.
INKEY$ da muchos problemas para leer varias teclas y de contínuo, por la pausa y repetición de lectura del teclado (creo que hay una variable que regula esta repetición), que cuando pulsas muchas teclas algunas se pierden, el buffer se llena...
La tabla que comenta e_sedes es muy útil. Un poco engorrosa para usar desde BASIC, pero te permite leer teclas que de otro modo no podrías, como SHIFT, GRAPH, CAPS, etc.
Algunas funciones del BIOS no te servirán de nada desde BASIC, porque no devuelven ningún parámetro a BASIC, pero sí que lo hacen con los registros del Z80.

Por AxelStone

Prophet (2963)

Imagen del AxelStone

10-01-2015, 12:04

¿Alguien me pone el código de ejemplo para usar los cursores y space con el ON GOSUB en Turbo Basic?

Por AxelStone

Prophet (2963)

Imagen del AxelStone

10-01-2015, 13:05

Ya lo tengo, no os preocupeis.

Por Dreamerm42

Hero (622)

Imagen del Dreamerm42

10-01-2015, 14:02

Axel yo no es por molestar pero ponlo por aqui cuando puedas Smile asi nos vamos empapando tambien los demas Tongue

Un saludo!

Por AxelStone

Prophet (2963)

Imagen del AxelStone

10-01-2015, 16:36

Solo lo he hecho para los cursores, el truco al final resulta que era que en el ON GOSUB debes especificar el salto para todas las teclas. Código funcionando dentro de un turbo bloque:

10 ' cursores=0, j1=1, j2=2. Vamos a elegir cursores
20 K%=0
30 ON STICK(K%) GOSUB 50,50,50,50,50,50,50,50
40 GOTO 30
50 D%=STICK(K%)
60 X%=X%-(D%=2)-(D%=3)-(D%=4)+(D%=6)+(D%=7)+(D%=8)
70 Y%=Y%-(D%=4)-(D%=5)-(D%=6)+(D%=8)+(D%=1)+(D%=2)
80 RETURN

Capturamos por interrupción las pulsaciones y se actualizan X e Y en consecuencia. Limpio y eficiente.

Por Warchild

Paragon (1280)

Imagen del Warchild

10-01-2015, 20:41

Nunca he usado saltos a subrutinas con los sticks, si quitas las lineas 30 y 40 y en la 80 pones GOTO 50 ha de funcionar igual y evitas los saltos. Siempre vas a operar con el estado de los cursores inmediatamente después de leerlos, tal como haces.
Yo uso IF THEN tal cual, tu método parece más directo. Gracias por compartir tu código! Nos ayuda al resto a aprender también Smile

Por AxelStone

Prophet (2963)

Imagen del AxelStone

10-01-2015, 22:13

Warchild wrote:

Nunca he usado saltos a subrutinas con los sticks, si quitas las lineas 30 y 40 y en la 80 pones GOTO 50 ha de funcionar igual y evitas los saltos. Siempre vas a operar con el estado de los cursores inmediatamente después de leerlos, tal como haces.
Yo uso IF THEN tal cual, tu método parece más directo. Gracias por compartir tu código! Nos ayuda al resto a aprender también Smile

Gracias a ti por compartir lo que comentas, ya me estoy ahorrando 2 líneas de código Smile . Yo pensaba en el ON GOSUB pq dicen que funciona con interrupciones y siempre será una lectura eficiente, pero vaya que como quien dice estoy aprendiendo. Lo pruebo con mi Cody a ver qué tal responde y os comento.

Por Dreamerm42

Hero (622)

Imagen del Dreamerm42

10-01-2015, 22:13

Yo con los cursores tambien he usado if then incluso con las diagonales..
Muchas gracias Smile Smile

Y ahora por ejemplo

If x$="a" then play "a"
If x$="b" then play "b"

Vale pero como seria para pulsar a+b y poder hacer un play "a","b" ????

Espero haberme explicado meridianamente la duda Smile

Un saludo.y gracias

Por Warchild

Paragon (1280)

Imagen del Warchild

11-01-2015, 00:00

Dreamerm42, para eso necesitas usar el sistema que explica e_sedes.

Página 2/3
1 | | 3