Hola. Me gustaría saber si se puede escribir un texto que vaya apareciendo letra a letra en código BASIC Spectrum.
Gracias. Un saludo.
Escribir letra a letra en BASIC Spectrum
Moderador: CEZ
-
- 16 bits
- Mensajes: 55
- Registrado: 12 Mar 2006 22:53
- na_th_an
- 256 bits
- Mensajes: 11874
- Registrado: 22 Abr 2005 13:25
- Contactar:
Sí:
Explicación (que si no, no sirve pa ná): Si A$ es una cadena, A$(I) imprime el carácter Iésimo (empezando en 1) de esa cadena. Lo que tenemos ahí es un bucle que recorre desde 1 hasta la longitud de la cadena (LEN A$). En cada iteración del bucle, se imprime el carácter correspondiente cuidándonos de poner un ";" al final para que el siguiente se imprima a continuación.
El PAUSE 10 introduce una pequeña pausa de aproximadamente 1/5 de segundo. Se puede cambiar por BEEP o por lo que más te guste
Al final del bucle ponemos "PRINT" para avanzar a la linea siguiente.
Código: Seleccionar todo
10 GOTO 1000
20 REM las rutinas que llames mucho van más rápido si las pones al principio
30 FOR I = 1 TO LEN(A$):PRINT A$(I);:PAUSE 10:NEXT I:PRINT:RETURN
1000 LET A$="ESTE MENSAJE APARECERA LETRA POR LETRA":GOSUB 30
1010 LET A$="ESTE MENSAJE TAMBIEN APARECERA LETRA POR LETRA":GOSUB 30
1020 LET A$="HOLA MAMAAAA":GOSUB 30
El PAUSE 10 introduce una pequeña pausa de aproximadamente 1/5 de segundo. Se puede cambiar por BEEP o por lo que más te guste
Al final del bucle ponemos "PRINT" para avanzar a la linea siguiente.
- Terrorquack
- 32 bits
- Mensajes: 397
- Registrado: 26 May 2005 14:19
- Contactar:
- na_th_an
- 256 bits
- Mensajes: 11874
- Registrado: 22 Abr 2005 13:25
- Contactar:
En Amstrad no funcionaría, habría que poner algo así:
A$(I) es específico de Sinclair BASIC. Hay que usar el MID$(A$,I,1) que hace lo mismo y es de BASIC estándar.
PAUSE 10 es específico de Sinclair BASIC. De memoria no me acuerdo como poner retardos en el CPC, así que he hecho la cutrez de meter el típico bucle que no hace otra cosa que perder el tiempo.
Código: Seleccionar todo
10 GOTO 1000
20 REM las rutinas que llames mucho van más rápido si las pones al principio
30 FOR I = 1 TO LEN(A$):PRINT MID$(A$,I,1);:FOR J=1 TO 2000: NEXT J:NEXT I:PRINT:RETURN
1000 LET A$="ESTE MENSAJE APARECERA LETRA POR LETRA":GOSUB 30
1010 LET A$="ESTE MENSAJE TAMBIEN APARECERA LETRA POR LETRA":GOSUB 30
1020 LET A$="HOLA MAMAAAA":GOSUB 30
PAUSE 10 es específico de Sinclair BASIC. De memoria no me acuerdo como poner retardos en el CPC, así que he hecho la cutrez de meter el típico bucle que no hace otra cosa que perder el tiempo.