"Sofisticando a programação"
Obviamente que a função "abreporta" não se resume
unicamente a incrementar um registrador. Antes disso
precisamos estabelecer o estado dela e tomar uma decisão
em função disso. A essa decisão damos o nome de "desvio
condicional".
Antes porém de entrarmos nesta questão é preciso tratar de
um importante instrumento de programação no Micro Aventuras,
o "label". Como o nome diz, um "label" ou "rótulo" é o nome
dado a um pedaço do código do script, de forma que podemos
"desviar" a execução das instruções para esses locais, em
função de alguma condição. Por exemplo, no código a
seguir...
O nome do label é ":Salto1" e foi colocado imediatamente
antes da instrução que coloca o valor 10 no registrador
número 5. É importante que o label comece sempre pelo
caracter ":" e esteja no começo da linha.
A instrução "goto" fará um desvio incondicional para a
posição do label, de tal forma que a instrução seguinte
(colocar o valor 300 no registrador 2) nunca será de fato
executada.
Voltando aos desvios condicionais, as principais
instruções que tratam com registradores são:
ifreg= reg,dado,label - se o conteúdo do registrador
número "reg" for igual a "dado" (valendo aqui tanto valores
numéricos quanto alfanuméricos), desvia a execução para o
ponto "label";
ifreg# reg,dado,label - se o conteúdo do registrador
número "reg" for diferente de "dado" (valendo aqui tanto
valores numéricos quanto alfanuméricos), desvia a execução
para o ponto "label";
ifreg> reg,valor,label - se o conteúdo do registrador
número "reg" for maior que "dado", desvia a execução
para o ponto "label";
ifreg< reg,valor,label - se o conteúdo do registrador
número "reg" for menor que "dado", desvia a execução
para o ponto "label";
ifreg reg,valor1,valor2,label - se o conteúdo do
registrador número "reg" estiver entre os valored "valor1"
e "valor2", desvia a execução para o ponto "label";
No caso da porta do exemplo, vamos primeiro verificar qual
é o estado dela e a partir daí apresentar ao leitor as
alternativas (lembrando apenas que o leitor está executando
esta função a partir do link "você pode tentar abri-la").
Se a porta está aberta, então ele tanto pode descrever
o que vem após ela ou pode ainda já levar o leitor para
uma nova posição. Vale lembrar que no caso da porta
aberta faria mais sentido verificar essa condição no
próprio script que descreve a posição, dando ao leitor
a opção de atravessá-la.
No caso da porta estar apenas fechada, então realmente há
a necessidade de um script adicional para abri-la e para
isso basta trocar o status do registrador 3.
Para a porta trancada a situação é um pouco mais complexa
porque irá exigir a posse de um objeto (veremos isso mais
adiante). Note também que apenas nesse caso incrementamos
o registrador 4, que conta quantas vezes o leitor tentou
abrir a porta e não tinha a chave.
Ok, entendi
Recapitulando...
Índice das páginas