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

Page 2/3
1 | | 3

By jrcp_kun

Paragon (1410)

jrcp_kun's picture

07-01-2015, 12:34

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

By mohai

Paladin (968)

mohai's picture

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.

By AxelStone

Prophet (3105)

AxelStone's picture

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?

By AxelStone

Prophet (3105)

AxelStone's picture

10-01-2015, 13:05

Ya lo tengo, no os preocupeis.

By Dreamerm42

Hero (623)

Dreamerm42's picture

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!

By AxelStone

Prophet (3105)

AxelStone's picture

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.

By Warchild

Paragon (1297)

Warchild's picture

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

By AxelStone

Prophet (3105)

AxelStone's picture

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.

By Dreamerm42

Hero (623)

Dreamerm42's picture

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

By Warchild

Paragon (1297)

Warchild's picture

11-01-2015, 00:00

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

Page 2/3
1 | | 3