MSXInício
Capítulo 9Disponível

Trabalhando com texto: o tipo STRING

Nem tudo no MSX é número. Nomes de jogadores, mensagens de menu e legendas de fase são texto — e o CrossScript tem um tipo dedicado para isso.

1. Por que existe um tipo STRING

Nas primeiras versões da linguagem, texto só existia entre aspas dentro de um PRINT ("literais"). Não havia como guardar uma frase digitada pelo jogador, montar uma mensagem dinâmica ou receber texto por parâmetro. O tipo STRING resolve isso: é uma variável que carrega uma sequência de caracteres com tamanho fixo (até 255 bytes) e comprimento atual.

DIM nome AS STRING
DIM titulo AS STRING = "PRESS START"

Sem valor inicial, a STRING nasce vazia. Com valor inicial, ela já vem preenchida.

2. As três operações fundamentais

O CrossScript trata STRING como um cidadão de primeira classe em três lugares:

  • PRINT — imprime o conteúdo atual.
  • INPUT — lê texto digitado pelo jogador e guarda ali.
  • Passagem para procedimentos — declare AS STRING no parâmetro.

Não existe (ainda) concatenação com + nem funções de recorte estilo LEFT$. O foco desta primeira versão é o essencial: receber, guardar e mostrar texto.

DIGITE E VEJA

Programa 9.1 — Cumprimento personalizado

USES SCREEN 1, KEYBOARD
SCREEN 1 : CLS

DIM nome AS STRING

PRINT "SEU NOME? ";
INPUT nome
PRINT "OLA, "; nome; "! BEM-VINDO."

TELA ESPERADA

Diálogo simples

A primeira linha aguarda o texto. Ao teclar RETURN, a segunda linha aparece completa com o nome inserido.

3. Ponto-e-vírgula: continuando na mesma linha

No PRINT, o ; no fim (ou entre partes) mantém o cursor na mesma coluna, exatamente como no MSX BASIC clássico. É o que permite montar frases mistas com literais e variáveis sem quebrar linha.

PRINT "PONTOS: "; pontos; "   VIDAS: "; vidas

E é o que faz o INPUT aparecer colado ao rótulo:

PRINT "IDADE: ";
INPUT idade

4. INPUT$(N) — espera bloqueante por N caracteres

INPUT$(N) é uma variante compacta que congela o programa até o jogador digitar exatamente N caracteres, sem precisar de RETURN. É a receita ideal para uma tela "aperte qualquer tecla para continuar" ou para senhas curtas.

DIGITE E VEJA

Programa 9.2 — Continue?

USES SCREEN 1, KEYBOARD
SCREEN 1 : CLS

PRINT "GAME OVER"
PRINT "APERTE UMA TECLA...";
INPUT$(1)
CLS
PRINT "REINICIANDO..."

DICA

INPUT$ substitui WHILE KEY(X)=0 : WEND

INPUT$(1) espera qualquer tecla em uma única linha e não precisa de USES KEYBOARD extra. Também pode ser escrito INPUTS(1); as duas formas são o mesmo comando.

5. Um exemplo prático: frase centralizada

Um bom exercício de projeto: escrever um procedimento que centraliza uma frase qualquer numa linha da tela. Ele recebe a frase (STRING) e a linha (BYTE), calcula quantas colunas sobram e chama LOCATE/PRINT.

DIGITE E VEJA

Programa 9.3 — Centraliza qualquer texto

USES SCREEN 1

PROCEDURE Centraliza(frase AS STRING, linha AS BYTE)
BEGIN
  DIM col AS BYTE
  col = (32 - LEN(frase)) / 2
  LOCATE col, linha
  PRINT frase
END

SCREEN 1 : CLS
COLOR 15, 4, 4
Centraliza("CROSSCRIPT MSX", 4)
Centraliza("MANUAL VOL. 1", 6)
Centraliza("APERTE UMA TECLA", 20)
INPUT$(1)

LEN(s) devolve o comprimento atual da string. Em SCREEN 1 (32 colunas), (32 - LEN(frase)) / 2 é o offset de centralização. Em SCREEN 0 substitua por 40; em SCREEN 5 use o cálculo em pixels ou trabalhe em coordenadas de tile (32).

6. Limites desta versão

  • Comprimento máximo: 255 caracteres por variável.
  • Não há concatenação com +. Para montar frases dinâmicas, use PRINT s1; s2; s3.
  • Não há LEFT$/RIGHT$/MID$ ainda. Se precisar, prefira o INPUT já formatado ou trate cada caractere via PEEK no buffer.
  • INPUT de tipo STRING aceita qualquer caractere digitável. INPUT de tipo BYTE/WORD valida a entrada e pede de novo se não for número.

7. Resumo do capítulo

  • DIM nome AS STRING cria uma variável de texto (até 255 caracteres).
  • PRINT e INPUT aceitam STRING naturalmente; o ; mantém tudo na mesma linha.
  • INPUT$(N) bloqueia até N caracteres serem digitados — ótimo para "aperte uma tecla".
  • LEN(s) devolve o comprimento atual, útil para centralização e alinhamento.
  • Passe STRING para procedimentos como qualquer outro tipo.
Comunidade

Discussão · Trabalhando com texto: o tipo STRING

Curta, marque como lido e comente o que achou deste capítulo.

0 comentários
Entre para participar
Crie uma conta ou faça login para curtir, marcar como lido e comentar.

Carregando comentários…