|
Todo
sistema complexo possui recursos não documentados.
Eles são incluidos por vários motivos: segurança,
testes especiais, soluções específicas,
etc. Porém a mais importante razão de termos
recursos não documentados é a herança.
No
caso do Zeus, o sistema de controle de
jogo e o editor propriamente dito vem sendo desenvolvido
desde o início da década de 80,
quando ainda rodava em computadores compatíveis com
o TRS 80. Ao longo dos anos ele foi sofrendo
aperfeiçoamentos tais que o tornaram tão flexível
como é hoje.
No
caso específico do Zeus, ele surgiu
como uma versão mais enxuta do Sistema
Editor de Adventures, combinando seus recursos
com as implementações do Editor
de Adventures Interativos, ambos da TILT.
Ao invés de simplesmente retirar os recursos ainda
não efetivamente validados, a opção
de todo desenvolvedor é mantê-los no sistema,
porém sem dar publicidade a eles. Com o tempo eles
vão sendo liberados.
No
entanto, o Zeus é um projeto aberto
e portanto nada mais coerente do que listar as principais
funções e instruções que ainda
não estão elencadas como oficiais. Até
porque, em nossos jogos algumas delas já estão
sendo usadas.
No entanto, o autor ou programador que desejar usar esses
recursos deve atentar para o fato de que nem todas foram
exaustivamente testadas nesse novo ambiente colaborativo
do Zeus. Use-as com cuidado e moderação
e caso alguma coisa pareça não estar funcionando
como deveria, mande-nos um report.
Da
nossa parte, podemos garantir que daremos atenção
especial a algum caso reportado de não funcionando
e mesmo que alguma delas não se torne "oficial",
não alteraremos a sua sintaxe ou funcionalidade,
para que não haja repercussão em seu uso nos
jogos.
Uma
dessas instruções (ou procedimentos) iremos
abordar de forma independente, pois é um recurso
de grande importância: o funcionamento (ou modos)
do visor do jogo, tratado na matéria Os
modos de operação do visor principal.
Os demais veremos aqui mesmo.
|
|
|
Plano
Z: trata-se de um recurso visual para ser
usado nos jogos. Por default, tudo que acontece no jogo deve
estar restrito e dimensionado dentro do painel principal.
No entanto é possível extraploar esse painel
e usar uma imagem especial para ilustrar todo o fundo do monitor.
|
//Instrução: planoz img ou planoz= img
//
// onde img = nome de uma imagem jpeg ou bmp
...
planoz image1.jpg
// ou
planoz
... |
Esta
instrução faz com que a image1.jpg
seja colocada como pano de fundo do painel do jogo. Se a instrução
for usada sem parâmetro algum, o plano Z
é desligado.
Carregue
o script planoz (no Jogo
Teste Inicial) e execute-o para ter uma idéia
do funcionando da instrução. |
|
|
Scroll
no visor: este é um tipo especial de
efeito gráfico, que desloca uma imagem qualquer para
cima, abrindo espaço na parte inferior da mesma. Foi
implementado no Zeus para facilitar a simulação
do scroll que ocorre nos programas e sistemas
operacionais antigos, quando toda a tela deslocava-se para
cima, dando espaço para mais informações
e/ou comandos.
|
//Instrução: scrolltel ou scrollbuf X,Y,W,H,Z,Cor
//
//onde X = coordenada X do canto superior esquerdo
// Y = coordenada Y do canto superior esquerdo
// W = largura da área a ser scrollada
// H = altura da área a ser scrollada
// Z = altura ou tamano do "salto" do scroll
// cor = cor de preenchimento da área vaga
...
scrolltel 0,0,510,250,10,FFFFFF
... |
O efeito pode ser aplicado diretamente sob a imagem do visor
(tela / scrolltel) ou no buffer de tela (scrollbuf).
O parâmetro Z determina o espaço
liberado na parte de baixo da imagem ou seja, a altura do
salto.
Para
evitar erros no deslocamento da área, calcule o parâmetro
Z a partir da altura da imagem. Por exemplo,
se H for igual a 250,
então podemos usar um Z igual a 10,
passando a ter então 25
"linhas" de 10
pixels na área. Ou Z igual a 25,
tendo então 10
"linhas" de 25
pixels cada.
Carregue
o script oldmonit (no Jogo
Teste Inicial) e execute-o para ter uma idéia
do funcionando do scroll. |
|
|
Desenho
ponto a ponto: o sistema permite algumas operações
simples para desenho e maipulação de pixels,
na tela do visor ou no buffer. As instruções
são:
|
//Instrução: pixel X,Y,Cor ou putpix X,Y,Cor
//
//onde X = coordenada X do pixel
// Y = coordenada Y do pixel
// cor = cor do pixel
...
pixel 10,10,FFFFFF
... |
Esta
instrução permite colocar um ponto (pixel) em
qualquer coordenada da imagem que aparece no visor do jogo.
Pode ser diretamente na tela ou no buffer.
|
//Instrução: buftelpix X,Y ou telbufpix X,Y
//
//onde X = coordenada X do pixel
// Y = coordenada Y do pixel
...
buftelpix 10,10
... |
Esta
instrução transfere, ou melhor copia, um ponto
(pixel) na coordenada especificada da tela para o buffer ou
vice versa. Por default, o pixel possui 1
de espessura, que pode ser alterada mudando o valor do registrador
45.
|
//Instrução: moveto X,Y ou bfmvto X,Y
//
//onde X = coordenada X do pixel
// Y = coordenada Y do pixel
...
moveto 10,10
... |
Esta
instrução "move"
a posição de plotagem para as coordenadas especificadas.
Isso equivale a algo como "mover uma caneta de desenho,
sem deixar traço algum sob o papel". Tanto na
tela quanto no buffer.
|
//Instrução: lineto X,Y,cor ou bflnto X,Y,cor
//
//onde X = coordenada X do pixel
// Y = coordenada Y do pixel
// cor = cor do pixel
...
lineto 100,100,000000
... |
Esta
instrução traça uma linha reta entre
a coordenada anteriormente definida pelas instruções
pixel ou moveto, até a coordenada
definida pelos parâmetros.
|
//Instrução: telaret bufrect ou panrect X,Y,W,H,cor
//
//onde X = coord X do canto sup esquerdo
// Y = coord Y do canto sup esquerdo
// W = largura do retângulo
// H = altura do retângulos
// cor = cor do pixel
...
telarect 10,10,100,100,000000
... |
Esta
instrução traça um retângulo vazado
a partir da posição X,Y com
W de largura e H de altura,
na cor especificada. Pode ser desenhado diretamente na tela
do visor (telarect), no buffer (bufrect)
ou no painel do jogo (panrect).
|
//Instrução: telabox bufbox ou panbox X,Y,W,H,cor
//
//onde X = coord X do canto sup esquerdo
// Y = coord Y do canto sup esquerdo
// W = largura do retângulo
// H = altura do retângulos
// cor = cor do pixel
...
telabox 10,10,100,100,000000
... |
Esta
instrução traça um retângulo sólido
a partir da posição X,Y com
W de largura e H de altura,
na cor especificada. Pode ser desenhado diretamente na tela
do visor (telabox), no buffer (bufbox)
ou no painel do jogo (panbox).
Carregue
o script desenho (no Jogo
Teste Inicial) e execute-o para ter uma idéia
do funcionando do scroll. |
|
|
Transferir
imagem : Normalmente, na programação
do jogo, usamos o buffer para as manipulações
gráficas e no final o conteúdo é transferido
para a tela (ou visor). No entanto, ao desenhar ou escrever
diretamente na tela, ficamos sem uma "cópia"
do que foi feito.
|
//Instrução: captela
...
captela
... |
Esta
instrução faz o inverso da instrução
refresh, ou seja, copia o conteúdo
atual da tela do visor para o buffer. |
|
|
Teste
de posição: Na programação,
quando usamos coordenadas X,Y, pode ser necessário
verificar de uma deternimada coordenada está dentro
de um "retângulo" virtual. Por exemplo, se
o jogador clicou dentro de uma área da tela.
|
//Instrução: xytest X,Y,X1,Y1,W1,H1,label
//
//onde X = coordenada X do ponto a ser testado
// Y = coordenada Y do ponto a ser testado
// X1 = coord X do canto superior esquerdo da área
// Y1 = coord Y do canto superior esquerdo da área
// W1 = largura da área
// H1 = altura da área
// label = para onde será desviado se estiver dentro
|
Um
dos usos dessa instrução pode ser o teste para
verificar se um determinado pixel aleatório "acertou"
um alvo ou não. |
|
|
Salvando
partidas: No modo tradicional de funcionamento
do Zeus, o jogador sempre retorna ao ponto
de saida, quando dá um load no jogo. No entanto, com
a implantação do modo independente e do jogador
"anonimo" passou a ser necessário o recurso
de "gravar" ou "carregar" uma determinada
partida do jogo.
|
//Instrução: savegame ou loadgame nome
//
//onde nome = nome da partida
...
savegame meujogo
... |
Com
o uso dessa instrução é possivel também
criar "pontos" de retorno para
o jogador, afim de que ele não tenha que retornar sempre
ao início, quando morre. O nome . |
|
|
Botões
especiais: o Zeus permite
a definição, ativação e uso de
até cinco botões especiais,
que podem aparecer dentro do painel do jogo. Uma única
instrução dá conta de operacionalizar
toda a sistemática desses botões.
|
//Instrução: btndef bt,cr,x,y,imgup,imgdw,scpt
//
//onde bt = número (1 a 5) do botão
cr = cursor utilizado pelo botão
x = coord X do canto sup esquerdo do botão
y = coord Y do canto sup esquerdo do botão
imgup = arquivo .bmp do botão posição normal
imgdw = arquivo .bmp do botão posição clicado
scpt = nome do script que será executado
...
btndef 1,1,540,60,saidaup,saidadw,ClicouSaida ... |
Os
botões são numerados de 1 a
5 e por defalut ficam desativados ou invisíveis
ao jogador. Ao definir um botão, ele torna-se automaticamente
ativo/visivel. Quando o jogador clica nesse botão,
o script definido para ele é automaticamente executado.
A
definição do cursor segue o mesmo padrão
de numeração do cursor nos links clicáveis.
As imagens do botão são sempre em formato .bmp,
sem a necessidade de colocar a extensão na definição
do botão.
Como
complementação da instrução, após
o número do botão (parâmetro bt)
pode-se usar outras funcionalidades, bastando para isso informá-la
junto com a instrução:
Torna
o botão X ativado e funcional.
Torna
o botão X inoperante (porém
o botão permanece visível).
Torna
o botão X visível.
Torna
o botão X invisível.
Coloca
o botão X na posição
normal (up) e passa a usar um click pra baixar
e um click para levantar o botão. O estado atual do
botão pode ser acompanhado pelo resitrador 48,
onde 1 indica up
e 2 indica down.
Coloca
o botão X na posição
clicado (down) e passa a usar um click pra
baixar e um click para levantar o botão. O estado atual
do botão pode ser acompanhado pelo resitrador 48,
onde 1 indica up
e 2 indica down.
Desliga
esse tipo de operação alternado. |
|
|