O básico pegar ou soltar


Já vimos que os objetos podem ser pegos ou soltos (ou ainda podem ser colocados dentro de outros objetos). Resta agora saber como fazer isso, de uma forma genérica, para que sirva para todos os objetos do jogo.

Em primeiro lugar, vamos estabelecer que um dos registradores (3) irá conter o nome do objeto a ser solto ou ser pego pelo jogador. Lá no script start.scp garantimos que ele sempre comece o jogo sem nenhum conteúdo.

//=== Script inicial ========================
  setmode= 4,900,420

  //- Indica o dia atual da partida
  reg= 1,1
  //- Duração de um dia
  reg= 2,10
  //- Objeto para pegar ou soltar
  reg= 3,

  script intro

O local mais adequado para colocar as ações de pegar ou soltar é no próprio script do objeto, que conterá inclusive uma descrição mais detalhada do mesmo (i.e. mais informação para o jogador lidar).

//=== Objeto: lobo =================
  setmode= 4,900,420
  cortxt= FF0000
  cleartela
  cleartxt
  gosub comum
  shape= lobo.png,100,0,358,358,

  'O Lobo da Floresta
  §§Estatueta de um lobo uivando, esculpida em
  madeira. Segundo algumas tradições antigas essas
  peças possuem um poder místico e geralmente são
  atribuidas a elas toda sorte de maldições.'

  reg= 3,lobo
  temos? lobo,VoceTem
  ' §§Você pode @pegar|pegar| a estatueta.'
  goto Cont1

:VoceTem
  ' §§Você pode @soltar|soltar| a estatueta.'

:Cont1
  printx $,460,10,240,400
  shape= tic.gif,100,390,20,30
  shape= ret.gif,130,390,140,30,xvlt
  fim

Os procedimentos iniciais são os básicos, afinal estaremos montando o script de forma parecida com o que fizemos com as posições. Note que colocamos uma imagem grande do lobo à esquerda e à direita dela faremos uma melhor apresentação do objeto.

Num determinado ponto o texto é interrompido para definir se vai ser possível pegar ou soltar o objeto e quem faz isso é a instrução temos?. Antes porém colocamos o nome do objeto no registrador 3, como foi combinado anteriormente.

O salto na programação é o básico do básico: se temos o objeto, então é possível soltá-lo. Se ele está na posição do jogador, então podemos pegá-lo. Restrições, tanto para pegar quanto para soltar, ficam para outro momento, mas o local para fazê-las vem logo a seguir.

Note que dois scripts foram mencionados para compor links clicáveis no meio do texto: pegar.scp e soltar.scp. Vejamos como seria o primeiro.

//=== Script para pegar objeto no reg 3 ===========
  pegaobj= #3
  script #3

A primeira instrução pega o objeto, ou seja, coloca a palavra "jog" no campo local do objeto, cujo nome está no registrador 3. Tudo como combinamos anteriormente. A segunda instrução executa o script indicado e que no caso aqui será o mesmo script do objeto, do qual "viemos". É só isso aí mesmo.

//=== Script para soltar objeto no reg 3 ===========
  soltaobj= #3
  script #3

O processo aqui é reveso, ou seja, a instrução soltaobj= coloca no campo local, do objeto, o nome da posição onde está o jogador.

Como foi dito antes, esses dois scripts podem conter restrições a determinados objetos e para saber se estamos "tratando" de um deles, podemos usar uma instrução bem simples, tipo ifreg= 3,lobo,label ou seja, se o objeto mencionado é o "lobo", então salta para o label definido.

É nesses scripts também que podemos restingir a quantidade de objetos que o jogador pode carregar ou que podem estar no mesmo local do jogador. Podemos inclusive produzir alguma ação se o jogador soltar um objeto em um determinado local.