Objetos
são elementos manipuláveis, dentro de uma narrativa.
Possuem uma referência textual ou mesmo gráfica. Por
exemplo na frase "Você está num imenso salão
de armas, com uma armadura de cavaleiro servindo de guarda na porta
principal.". Vale também uma imagem retratando essa
situação.
A
armadura mencionada pode ser um objeto manipulável, ainda
que não necessariamente "carregável". Portanto,
podemos definir objetos como elementos dinâmicos dentro de
uma narrativa, que podem tanto conter outros objetos dentro de sí
mesmos, como ser contidos por outros objetos.

Todo
objeto possui dois conjuntos de parâmetros praticamente idênticos.
Um deles contém das definições inciais do objeto,
ou seja, seu estado quando a aventura é iniciada ou reiniciada.
O outro conjunto retrata as condições do objeto no
exato momento em que o jogador está se aventurando pela partida.
Basicamente
esses parâmetros são Nome: é o nome (sempre
em caixa baixa) pelo qual o objeto é reconhecido dentro da
programação; Descrição: string simples
e básica que define o objeto, geralmente para compor uma
frase de listagem de objetos; Local: posição onde
o objeto se encontra - a palavra jog indica que o objeto está
com o jogador e se a palavra for um outro objeto, então significa
que está dentro dele; Shape: é a imagem do objeto
(opcional); Tags 1, 2 e 3: são marcadores ou variáveis
alfanuméricas específicas de cada objeto, para uso
genérico (como o programador desejar).
É
possível, na edição da aventura (ferramentas
/ objetos), definir todos os objetos que farão
parte da narrativa, ou então deixar para criá-los
durante a partida. O parâmetro Local, se for uma string vazia,
indica que o objeto, para todos os efeitos, (ainda) não existe
no jogo. Isto é usado normalmente quando dois um mais objetos
usados para construir um terceiro objeto, que passa a existir assim
que o parâmetro Local receba um valor.
Vamos
pegar o exemplo da lanterna, visto na página anterior. Na
verdade, são 3 objetos distintos: a lantarna, a lâmpada
e as pilhas (para efeito de exemplificação vamos tratar
as duas pilhas como apenas uma).

As
configurações dos parâmetros seriam mais ou
menos como se segue, na figura abaixo.

Nesta
configuração, tanto a lámpada quanto as pilhas
estão dentro da lanterna e podemos usar a Tag1 da lâmpada
para indicar se ela está apagada (-), acesa (*) ou queimada
(#). A Tag1 das pilhas indicará a quantidade de carga que
elas contém ou mesmo a quantidade de vezes que a lanterna
pode ser acesa, antes de queimar a lâmpada. O autor decide
como usar esses parâmetros.
Na
programação propriamente dita existem várias
instruções que nos permitem manipular os objetos.
Seguem abaixo as mais importantes:
pegaobj
obj
Pega
o objeto obj pelo
jogador. Atenção: esta instrução apenas
coloca o objeto na posse do jogador, sem fazer nenhum tipo de avaliação,
tipo: se o objeto está por perto, se ele pode ser carregado,
se o jogador pode possuí-lo ou se o jogador já tem
esse objeto. Tudo isso deve ser feito, na programação,
antes da instrução ser executada.
soltaobj
obj
Solta
o objeto obj que está
(em teoria) com o jogador, na posição atual dele.
Atenção: esta instrução apenas coloca
o objeto na posição do jogador, sem fazer nenhum tipo
de avaliação, tipo: se o objeto está realmente
com, se ele pode ser solto naquele local, se o jogador pode de desfazer
dele. Tudo isso deve ser feito, na programação, antes
da instrução ser executada.
poeobj
obj,ond
Coloca
o objeto obj no local
ond, sendo que este
local tanto pode ser o jogador, um local ou página da aventura,
dentro de outro objeto ou simplesmente mandar o objeto para o vácuo
(deixa de existir formalmente no jogo).
Atenção: esta instrução apenas coloca
o objeto no local indicado, sem fazer nenhuma avaliação,
do tipo: se o objeto existe, se pode ir para o local indicado e
assim por diante.
criaobj
obj,ond
Cria
o objeto obj no local
ond, sendo que este
local tanto pode ser o jogador, um local ou página da aventura,
dentro de outro objeto ou simplesmente mandar o objeto para o vácuo
(deixa de existir formalmente no jogo). Atenção: esta
instrução funciona exatamente como a instrução
poeobj porém, caso o objeto não tenha sido definido
na criação da aventura, ele será inserido nela
naquele momento.
É preciso ter cuidado com essa instrução e
principalmente no ponto da programação onde ela é
usada porque alguns parâmetros do objeto precisarão
ser declarados logo em sequida, tipo sua imagem, valor das tags,
etc.
temos?
obj,label
Faz
um teste rápido se o jogador possui o objeto obj.
Se estiver com ele, salta para o label
indicado.
getobj=
reg,obj,prm
Coloca
no registrador indicado pelo parâmetro reg,
valor do parâmetro prm
do objeto obj. Os
parâmetros são nom, dsc, loc, shp, tag1, tag2 e tag3.
Os parâmetros dos objetos podem ser carregados para um registrador
para então sofrer todo tipo de processamento possível,
inclusive testes para desvios.
setobj=
obj,prm,vlr
Coloca
no parâmetro prm
do objeto obj o valor
indicado pelo parâmetro vlr.
Os parâmetros são nom, dsc, loc, shp, tag1, tag2 e
tag3. Os parâmetros dos objetos podem ser carregados por um
valor direto ou referenciados pelo conteúdo de um registrador.
tiratudo
ond,loc
Tira
todos os objetos que estão no local ond
e os transfere para o local loc.
Lembrando que tanto o local origem quanto o local destino podem
ser os locais propriamente ditos da aventura, o jogador ou simplesmente
outro objeto. Esta instrução tem a seguinte sintaxe
equivalente: poetudo.
ifobj=
obj,ond,label
Se
o objeto obj estiver
no local ond salta
para o label indicado.
Lembrando que o parâmetro ond
pode indicar um local, outro objeto ou o jogador.
ifobj#
obj,ond,label
Se
o objeto obj não
estiver no local ond
salta para o label
indicado. Lembrando que o parâmetro ond
pode indicar um local, outro objeto ou o jogador.
iftag1=
obj,vlr,label - se igual
iftag2= obj,vlr,label
iftag3= obj,vlr,label
iftag1#
obj,vlr,label - se diferente
iftag2# obj,vlr,label
iftag3# obj,vlr,label
iftag1>
obj,vlr,label - se maior
iftag2> obj,vlr,label
iftag3> obj,vlr,label
iftag1<
obj,vlr,label - se menor
iftag2< obj,vlr,label
iftag3< obj,vlr,label
As
tags dos objetos (tag1,
tag2 e tag3)
podem ser testadas diretamente e as instruções seguem
basicamente o mesmo procedimento: obj
é o nome do objeto, vlr
é o valor a ser testado e label
o desvio caso o teste resulte em verdadeiro.
cont
ond,reg
Conta a quantidade de objetos que estão num determinado local
(ond), no local do
jogador, com ele ou dentro de outro objeto e coloca o resultado
no registrador indicado reg.
Se
listobj
reg,ond
Monta, no registrador reg,
uma lista em texto dos objetos que estão no local, com o
jogador ou dentro de outro objeto.
listobjlink
reg,ond
Monta uma lista de objetos no mesmo formato que a instrução
listobj porém
os nomes dos objetos na lista passam a ter links que os levam aos
seus respectivos scripts.
dispobj
obj,ond,px,py,wd,ht,qt
Monta um quadro gráfico com o canto superior esquerdo na
posição px,py,
com lagura wd e altura
ht, usando os shapes
dos objetos que estão (obj)
no local do jogador loc,
com o jogador jog
ou dentro de um determinado objeto. O parâmetro qt
indica quantos objetos serão mostrados na horizontal do quadro
e o parâmetro ond
indica onde o quadro será mostrado tel
na tela, pan no painel
ou fnc na área
de funções especiais.
|