"Quem com ferro fere, fere com um objeto"

Chegamos naquele ponto crucial onde de fato separamos as narrativas interativas das demais produções intelectuais, como por exemplo livro, revista, cinema, etc. Afinal, apenas os contos interativos e os adventures conseguem lidar, para o bem ou para o mal, com objetos.


O Micro Aventuras permite (além do uso dos scripts representando locais, páginas ou posições) o uso de objetos independentes, ou seja, eles não estão vinculados exclusivamente aos locais. Podem ser carregados, levados a outros lugares e claro usados para alguma finalidade.

Ao criar um objeto para ser usado em sua narrativa, ele será definido por 3 variáveis internas: uma frase simples que o descreve (tipo "um livro" ou "uma pistola"), um shape (imagem) caso queira trabalhar com gráficos e a posição, local ou página onde ele se encontra quando o jogo ou a leitura começam.

Além disso, todo objeto precisa ter um script a ele relacionado, com o mesmo nome que lhe foi dado na sua criação. Esse script irá conter tudo aquilo que o objeto faz ou o que pode ser feito com ele, em forma de programação, além de ter uma descrição mais detalhada do que ele é.

É importante salientar que todas as instruções que serão abordadas agora devem ser usavas fora do bloco boxon ... boxoff.

A instrução mais importante é a que "cria" ou apenas "coloca" o objeto em algum lugar.


O parâmetro "nome" indica o nome do objeto que se deseja manipular e "onde" é o parâmetro que indica onde ele será colocado. Lembre-se que esse local será obrigatoriamente o nome de um script que representa um local ou página.

Se o local destino for o script cujo nome seja um outro objeto, o sistema entenderá que o objeto foi colocado "dentro" do segundo. Não é preciso "tirar" os objetos ou "pegar". Basta informar como parâmetro "onde" a palavra "jog" que o sistema entenderá que o objeto foi pego pelo leitor ou jogador.

Se informar "loc", então o sistema saberá que é para colocar o objeto na mesma posição ou página onde o leitor está, o que equivale a dizer que o objeto foi "solto" pelo seu usuário.


Embora a instrução poeobj= possa ser usada para "soltar" os objetos, há uma variação dela específica para isso. A vantagem dessa sintaxe é que ela permite usar as palavras "tudo" ou "todos", no parâmetro "nome" para indicar que todos os objetos do leitor ou jogador devem ser soltos no local atual dele.

Da mesma forma que com os registradores visto anteriormente, com os objetos também é possível provocar desvios condicionais.


A instrução acima testa se o objeto "nome" está no local "onde" e se estiver, salta para local, na programação, chamado "label".

Vale ressaltar que aqui também o parâmetro "onde" pode ser a palavra "jog", quando a instrução estará testando se o leitor ou jogador está com um determinado objeto, ou "loc", quando a instrução estará testando se o objeto está no mesmo local que o leitor ou jogador.


A instrução acima é uma sintaxe reduzida para testar se o objeto "nome" está com o jogador. A diferença neste caso é que além de verificar se o leitor ou jogador tem o objeto ela ainda testa se este objeto está dentro de um outro objeto qualquer que o leitor ou jogador também tenha.

O exemplo de script a seguir é uma espécie de programação genérica para objetos, ou seja, ao ser acionado ele verifica inicialmente se o objeto está com o jogador ou se está no mesmo local. Nesses dois casos ele tanto pode ser solto quanto pego.

Apenas como uma espécie de segurança, fica a programação para o caso do objeto não estar por perto.


Note que deverá haver mais dois scripts, um para pegar objetos e outro para soltar objetos. Desta forma concentramos em apenas dois scripts os testes que verificam se o leitor pode carregar mais um objeto, se ele pode soltar onde ele está e se pegando ou soltando tal objeto alguma coisa especial acontece.

Outra consideração a ser feita é que o texto descritivo do objeto pode ser diferente de quando ele está no local e de quando o jogador o tem em mãos. Isso enriquece a imersão do leitor ou jogador.

Deixei neste script genérico duas pegadinhas para você leitor resolver: uma delas é como os scripts PegaObj e SoltaObj irão "saber" de qual objetos estamos tratando para pegar ou soltar?

A segunda é onde e como eu aciono esse script genérico? Estou assumindo que você entendeu que genérico aqui significa que cada objeto do livro ou jogo terá um script muito parecido com esse, cujo nome é o próprio nome do objeto.


Os 3 estados de um objeto

Ok, entendi

Índice das páginas