Um
script nada mais é do que um texto contendo instruções
de programação (que fazem o seu jogo funcionar do
jeito que você quer) e alguns comentários. Todas as
linhas desse texto que começarem com os caracteres "//"
não são processadas. Além disso, o sistema
permite apenas uma instrução por linha e sempre executa
na sequência, uma de cada vêz.
Texto
e imagem em todas as áreas
Existem
três instruções que permitem o uso de texto,
imagem ou apenas demarcar um retêngulo clicável. São
elas: linktel= produz
o link na tela gráfica, linkpan=
produz o link no painel do jogo e linkfnc=
produz o link na área de funções.
linktel=
txt/img,scp/htm,px,py,tw,th,cr
linkpan= txt/img,scp/htm,px,py,tw,th,cr
linkfnc= txt/img,scp/htm,px,py,tw,th,cr
Em
todas elas, o primeiro parâmetro indica um texto ou imagem
nos padrões gif, jpg, ou
pgn. Se este parâmetro estiver em branco,
nada é mostrado mas a área clicável permanece
ativa. O parâmetro seguinte permite selecionar entre um script
ou uma página html normal. Os quatro parâmetros seguintes
indicam a posição (canto supeior esquerdo) e as dimensões
da área clicável.
O
parâmero cr
indica o tipo de cursor do mouse que será mostrado sobre
a imagem ou texto, segundo a lista ao lado. Todas elas possuem sintaxes
alternativas tais como: linktela=,
lnktel=,
linkpainel=, lnkpan=,
linkfunc= e lnkfnc=.
Agora
você tem mais elementos para se divertir mudando parâmetros,
experimentando todas essas instruções etc. Brinque
um pouco com as possibilidades e depois volte aqui.
Registradores:
pau pra toda obra
Tudo
o que acontece na partida está relacionada aos registradores.
Entenda-os como variáveis numéricas ou alfanuméricas,
para uso como indicadores de estado, operações aritiméticas
entre valores, frases complexas, palavras, nomes, etc. Existem 250
deles, numerados de 0 a 249. Eles
podem receber nomes ou variar a quantidade total, mas isso fica
para outro momento.
As
mais importantes instruções de uso dos registradores
são as de atribuição de conteúdo. São
elas:
reg=
rg,vlr
O
registrador rg passa
a ter o conteúdo vlr,
que pode ser um número ou letras (frases ou strings). Todas
as instruções que lidam com conteúdo podem
referenciar um determinado registrador, usando antes do seu índice
o caracter "#". Por exemplo.
reg=
5,Olá Mundo! - o
registrador 5 passa a ter como conteúdo
a frase "Olá Mundo!";
print
#5 - coloca
na tela o conteúdo do registrador 5.
Na
verdade este é um dos recursos mais valiosos do sistema,
pois permite flexibilizar praticamente todas as instruções
de programação.
copy
rg1,rg2,vzs
Copia
(ou duplica) o conteúdo do registrador rg2
no registrado rg1
tantas vezes quantas forem indicadas no parâmetro vzs.
Caso não seja declarado um valor para vzs,
a cópia ocorrerá apenas uma vez. Se o valor for maior
que 1, então os apontadores rg1
e rg2 são incrementados e a
cópia continua até zerar vzs.
Esta instrução é muito usada para mover blocos
de registradores de um lugar ao outro. Esta instrução
possui uma sintaxe alternativa: dup.
swap
rg1,rg2
Troca,
alterna ou inverte os conteúdos dos registradores rg1
e rg2. Sintaxe alternativa:
trocar.
reg$
rg,vlr
Concatena
o valor presente no parâmetro vlr
com o conteúdo do registrador rg.
Sintaxe alternativa: concat.
Acompanhe no exemplo:
reg=
5,Olá - o
registrador 5 passa a ter como conteúdo
a palavra "Olá";
reg$
5,Mundo! - agora
o registrador 5 passa a ter o conteúdo "OláMundo".
Note a falta de espaço entre as palavras "Olá"
e "Mundo!". Isso acontece porque durante o processamento
das linhas de instruções, os espaços iniciais
e finais da linha são eliminados, para otimizar o trabalho.
Nestes casos, é preciso forçar a presença de
um espaço entre as palavras e isso pode ser feito com o uso
do caracter "~" (o til). Veja como:
reg=
5,Olá - o
registrador 5 passa a ter como conteúdo
a palavra "Olá";
reg$
5,~Mundo! - agora
o registrador 5 passa a ter o conteúdo "Olá Mundo".
Este
caracter de espaço impositivo pode ser usado em qualquer
ponto da string a ser concatenada e quantas vezes ele for necessário.
trim
rg
Elimina
todos os espaços no início e no final do conteúdo
do registrador rg.
regtxt=
rg,'string'
Coloca
no
registrador rg o conteúdo
da string apresentada,
delimitada por aspas simples e sem restrição de linhas.
Por exemplo:
regtxt=
5,'Olá Mundo, hoje eu acordei
de
bom humor, pensando em assistir
a
um filme bem legal.'
Essa
instrução permite a definição de frases
longas, colocadas nos registradores, de forma a ficarem mais compreensíveis
na edição do jogo. Pode ser necessário o uso
do caracter "~"
para forçar espaços em algumas situações.
regtxt$
rg,'string'
Concatena
com o conteúdo do
registrador rg o conteúdo
da string apresentada,
delimitada por aspas simples e sem restrição de linhas.
Esta instrução possui uma sintaxe alternativa: regtxt+.
A
seguir temos a lista das instruções que permitem operações
aritiméticas com os registradores. São elas:
reg+
rg,vlr
Soma
ao conteúdo do registrador rg
o valor vlr. Certifique-se
que ambos contenham valores numéricos.
inc
rg
Incrementa
em 1 o conteúdo do registrador rg.
reg-
rg,vlr
Subtrai
do conteúdo do registrador rg
o valor vlr. Certifique-se
que ambos contenham valores numéricos.
dec
rg
Decrementa
em 1 o conteúdo do registrador rg.
reg*
rg,vlr
Multiplica
o conteúdo do registrador rg
pelo o valor vlr.
Certifique-se que ambos contenham valores numéricos.
reg:
rg,vlr
Divide
o conteúdo do registrador rg
pelo o valor vlr.
O resultado apresentado será em ponto flutuante, ou seja,
com casas decimais.
reg/
rg,vlr
Divide
o conteúdo do registrador rg
pelo o valor vlr.
O resultado será um inteiro arredondado.
reg?
rg,max
Soma
ao
conteúdo do registrador rg
com um valor aleatório entre 0 e
max. O registrador rg
deve ser inicailizado com um valor base. Por exemplo:
reg=
5,0 -
o registrador 5 é inicializado com o valor 0;
reg? 5,6 -
o registrador 5 terá um valor entre 0 e 6.
reg=
5,3 -
o registrador 5 é inicializado com o valor 3;
reg? 5,6 -
o registrador 5 terá um valor entre 3 e 9.
Os
registradores também podem ser usados em instruções
de desvio de execução. Para marcar um ponto (ou linha)
de destino, use um label, que começa sempre com o caracter
":". As
principais são:
ifreg=
rg,vlr,label
Se
o valor contido
no registrador rg
for igual a vlr então
desvia a execução para o label
indicado. Caso contrário prossiga para a próxima instrução.
Por exemplo:
ifreg=
5,0,Zerado -
se o registrado 5 for igual a 0, salta para o label Zerado;
...
...
:Zerado
inc
5 - prossegue
com o processamento das instruções
O
salto para o label
independe de se ele está à frente ou anterior à
instrução de salto condicional.
ifreg>
rg,vlr,label
Se
o valor contido
no registrador rg
for maior que vlr
então desvia a execução para o label
indicado. Caso contrário prossiga para a próxima instrução.
ifreg<
rg,vlr,label
Se
o valor contido
no registrador rg
for menor que vlr
então desvia a execução para o label
indicado. Caso contrário prossiga para a próxima instrução.
ifreg#
rg,vlr,label
Se
o valor contido
no registrador rg
for diferente de vlr
então desvia a execução para o label
indicado. Caso contrário prossiga para a próxima instrução.
ifreg~
rg,vl1,vl2,label
Se
o valor contido
no registrador rg
estiver entre os valores vl1
e vl2 (inclusive esses
valores) então desvia a execução para o label
indicado. Caso contrário prossiga para a próxima instrução.
Mais
instruções de desvio condicional
Toda
posição do jogo tem um nome, que é declarado
logo no começo do script, com o uso da instrução
posic=. Desvios condicionais podem ser programados de duas formas:
ifpos=
nome,label
Se
o nome da posição for igual a nome,
salta para o label
indicado. Esta instrução tem a seguinte sintaxe alternativa:
ifloc=.
ifpos#
nome,label
Se
o nome da posição for diferente de nome,
salta para o label
indicado. Esta instrução tem a seguinte sintaxe alternativa:
ifloc#.
Existe
também um conjunto básico de desvio condicional que,
se verdadeiro, executa a sequência de parâmetros a seguir
como se fosse uma linha normal de instrução. Lembrando
apenas que entre o menmônico e seus parâmetros, o delimitador
de campo passa a ser uma vírgula e não espaço.
if=
reg,vlr,instr,1,2,3,4,5,6
Se
o valor do registrador indicado em reg
for igual a vlr, então
o que vem a seguir é uma linha de comando a ser executada,
com a instrulção instr
e até seis parâmetros seguintes.
if#
reg,vlr,instr,1,2,3,4,5,6
Se
o valor do registrador indicado em reg
for diferente de vlr,
então o que vem a seguir é uma linha de comando a
ser executada, com a instrulção instr
e até seis parâmetros seguintes.
if>
reg,vlr,instr,1,2,3,4,5,6
Se
o valor do registrador indicado em reg
for maior do que e vlr,
então o que vem a seguir é uma linha de comando a
ser executada, com a instrulção instr
e até seis parâmetros seguintes.
if<
reg,vlr,instr,1,2,3,4,5,6
Se
o valor do registrador indicado em reg
for menor do que e vlr,
então o que vem a seguir é uma linha de comando a
ser executada, com a instrulção instr
e até seis parâmetros seguintes.
if~
reg,vl1,vl2,instr,1,2,3,4,5
Se
o valor do registrador indicado em reg
estiver dentro do internalo vl1
e vl2, então
o que vem a seguir é uma linha de comando a ser executada,
com a instrulção instr
e até cinco parâmetros seguintes.
Instruções
genéricas (mas que são uma mão na roda)
Existem
instruções para uso geral e que não se enquadram
em nenhuma categoria específica, mas o seu conhecimento e
compreensão são fundamentais.
end
É
sabido que o script é executado até a sua última
linhas porém essa finalização pode ocorrer
em qualquer outra linha do fonte, bastando para isso uma instrução
end. Sintaxe alternativa
fim.
posic=
scp
Indica
o nome da posição atual do jogador. Geralmente é
o mesmo nome do script que a descreve.
telpos=
arq
Apresenta
a imagem, no visor principal, da posição definida
pelo script.
retscp=
scp
Indica
o nome do script que será usado para "retorno"
a um local anteriormente visitado, após ter sido executado
um script genérico (menu de opções por exemplo).
script
scp
Encerra
a execução do script atual e passa a executar o script
scp. Sintaxe alternativa
script=.
delay
vlr,on/off
Suspende
o processamento do script por vlr
milissegundos. O complemento on
indica que o applicativo continua operante e respondendo às
funções básicas como teclao e mouse. O complemento
off indica que ele
só retorna à operação normal no final
dp ciclo. Obviamente que esta instrução é a
base para pequenas animações dentro do jogo.
fonte
nome,size,cor,bold,italic,underline
Redefine
a fonte default para a indicada pelo nome,
corpo size, cor
de impressão e os atributos bold,
italic e undeline
(basta qualquer caracter nesses três campos para indicar o
estilo a ser usado). Vale ressaltar que essas alterações
permanecem apenas dentro da execução do script atual.
No próximo a ser executado, os valores originais desses atributos
são recuperados. Sintaxe equivalente fonte=.
corfnd
cor
Redefine
a cor de fundo default para a nova cor.
Vale ressaltar que essa alteração permanece apenas
dentro da execução do script atual. No próximo
a ser executado, o valor original dessa cor é recuperado.
O valor da cor é definido por 6 dígitos hexadecimais,
represento as 3 compinentes básicas RGB.
Por exempo 00000 é a cor preta
e FFFFFF é a cor branca. Sintaxe
equivalente corfnd=.
cortxt
cor
Redefine
a cor de texto default para a nova cor.
Vale ressaltar que essa alteração permanece apenas
dentro da execução do script atual. No próximo
a ser executado, o valor original dessa cor é recuperado.
O valor da cor é definido por 6 dígitos hexadecimais,
represento as 3 compinentes básicas RGB.
Por exempo 00000 é a cor preta
e FFFFFF é a cor branca. Sintaxe
equivalente corfnd=.
gosub
scp
Interrompe
a execução do script atual e passa a executar o script
scp como uma subrotina
dele. Ao terminar essa execussão, retorna o processamento
no ponto de chamada do script anterior.
return
Interrompe
a execução do script subrotina e retorna o processamento
no ponto de chamada do script anterior. Sintaxe alternativa: ret.
cleartela
cor,px,py,tw,th
Limpa
a área gráfica principal (tela) com a cor default.
Se existir o parâmetro cor,
ele será usado para a limpeza e se os parâmetros px,py,tw,th
existirem, eles delimitarão a área a ser limpa.
clearfunc
cor,px,py,tw,th
Limpa
a área de funções com a cor default. Se existir
o parâmetro cor,
ele será usado para a limpeza e se os parâmetros px,py,tw,th
existirem, eles delimitarão a área a ser limpa.
clearpainel
cor,px,py,tw,th
Limpa
a área do painel do jogo com a cor default. Se existir o
parâmetro cor,
ele será usado para a limpeza e se os parâmetros px,py,tw,th
existirem, eles delimitarão a área a ser limpa.
encerrar
tmp
Encerra
a aventura imediatamente e para a execução total do
aplicativo. Se o parâmetro tmp,
for declarado então haverá uma pausa de alguns segundos
antes do encerramento ocorrer. Sintaxe equivalente terminate.
|