projeto ZEUS
 
 

Registradores

O uso e definição dos registradores do jogo


 

Todos os jogos no sistema Zeus possuem um conjunto de 251 registradores, numerados de 0 a 250. Desses, os primeiros 50 são de uso pré definido pelo sistema e portanto o primeiro registrador vago, que o autor do jogo pode definir no seu jogo é o de número 50.

Os registradores são, na verdade, variáveis inteiras sinalizadas, de 32 bits (variando de –2147483648 a 2147483647) cuja função é permitir o registro de estados diversos.

Eles contém informações sobre as condições de determinados objetos ou estão associados a alguma circunstância relativa a uma posição ou ação do jogo. Servem principalmente para realizar cálculos e definir coordenadas da tela ou visor da posição do jogo.

Eles podem servir também como contadores ou temporizadores e se assemelham, na sua aplicação, às variáveis de um programa. São manipulados por um conjunto específico de instruções de programação, que fazem referância a eles como reg.

Por exemplo: reg 5,7 - indica que o registrador 5 deverá receber o valor 7.

Para facilitar o desenvolvimento da programação do jogo, todos os registradores podem receber um nome e, a partir daí, ser referenciado por ele.

Por exemplo: regdef 5,Contador ou apenas def 5,Contador - dá o nome "Contador" ao registrador número 5.

Ao ser iniciada uma partida, os registradores são automaticamente zerados e devem receber valores iniciais (se for o caso) através do script inicial do jogo. Durante a edição do jogo os registradores podem ser acessados para consulta.

Todos os registradores podem ter uma frase explicativa, sobre sua função no jogo, definido pelo programador. Isso ajuda na compreensão do jogo. Esta frase aparece no rodapé da listagem dos registradores e pode ser alterada à vontade.


Registradores especiais pré definidos:

Os primeiros 50 registradores são de uso especial do sistema e já possuem funções pré definidas. Ainda assim, eles não possuem nomes defaults, ficando a cargo do autor do jogo nomeá-los ou não. São eles:

 1: Posição atual do jogador.
 2: Quantidade máxima de objetos que podem ser carregados.
 3: Quantidade de objetos que estão com o personagem atual.
 4: Fome do personagem.
 5: Sede do personagem.
 6: Contador de passos no escuro.
 7: Contador incrementado a cada frase processada.
 8: Contador decrementado a cada frase processada.
 9: Flag de iluminação do local onde se encontra o jogador.
10: Direção seguida pelo jogador (0 = norte, 1 = leste...).
11: Contador de minutos do relógio do jogo.
12: Contador de horas do relógio do jogo.
13: Contador de dias do relógio do jogo.
14: Contador negativo de segundos do relógio (se <> 0)
15: Zerado sempre que o jogador entra em um novo local.
16: Zerado a cada novo local e incrementado a cada frase.
17: Contador do looping das instruções.
18: Personagem atual do jogo (de 0 a 7).
19: Contador de jogadas.
20: Máximo de passos no escuro
21: Contador de segundos do relógio.
22: Reservado para uso interno do sistema.
23: Indexador para mensagens dos objetos.
24: Px do clic dentro do link
25: Py do clic dentro do link
26: Px do clic na tela
27: Py do clic na tela
28: Px do clic no objeto
29: Py do clic no objeto
30: Índice do objeto em uso
31 a 38: código das palavras processadas
39: Valor para delay dos efeitos
40: Px do clic no painel
41: Py do clic no painel
42: retorno para Lk
43: Px para texto animado
44: Py para texto animado
45: Largura do pixel para lineto
46: Tempo delay para o texto animado
47: 0= reconhecimento total do verbo, <> 0 parcial
48: 1= botão especial pra cima, 2= botão especial pra baixo
49: reservado

Alguns desses registradores foram mantidos apenas para compatibilidade com o sistema Editor, que deu base ao desenvolvimento do Zeus.


Alguns usos para os registradores especiais:

O registrador 1, que indica numericamente a posição do jogador, é um caso de manutenção por compatibilidade uma vez que no Zeus, os locais possuem nomes e não números. No entanto ele ainda pode ser usado não apenas para numerar as posições, o que facilita algumas operações na programação, como definir grupos de locais com determinadas características.

Por exemplo, no Amazônia, as posições de 12 a 19 são as posições onde pode aparecer o cristal ou as posições de 41 a 45 são as posições onde a cobra pode aparecer, ou ainda as posições de 2 a 8 representam a mata onde a onça vive.

Uma vez que a numeração das posições não é feita mais automaticamente, na criação de cada uma, os valores do registrador 1 devem ser atribuidos manualmente, em cada script de posição.

O registrador 8 funciona como uma espécie de "bomba relógio" automática, ou seja, se o seu valor for zero, nada acontece. Se for maior que zero, então ele é decrementado a cada nova frase processada e quando atingir zero, um determinado script é executado. O nome desse script é definido na função 2 (veja mais sobre as funções especias clicando aqui).

Os registradores 15 e 16 são zerados sempre que o jogador entra em uma nova posição, porém o 16 continua sendo incrementado a cada frase. Este sistema permite diferenciar a primeira vez que o script é executado (quando o jogador chega na posição) das outras vezes que ele é acionado (quando o jogador apenas pressiona a tecla Enter, para ver novamente a descrição do local). Permite também quantos comandos o jogador executou dentro de uma posição.