Escolar Documentos
Profissional Documentos
Cultura Documentos
AÇAO
JOGOS DE AÇÃO
PARA O APPLE
S. Scott Zimmerman
Beverly Zimmerman
Com assistência de programação
de Stephen H, Zimme.rman
e Brent D. Zimmerman
Tradutores:
Roberto Manole
Nelson Pereira Campos
Revisor:
Orlando Parolini
Editor:
Roberto Manole.
Composição e Fotolito:
Artel - Artes Gráficas Ltda.
10 REM
20 REM * STARTUP *
30 REM * BY SCOTT ZIMMERMAN *
40 REM COPYRIGHT (C) 1985 *
50 REM * COMPUTER EXPRESSIONS *
60 REM * 1129 EAST 470 NORTH - *
70 REM * OREM, UTAH 84057 *
80 REM
90 REM
190 REM
INTRODUÇÃO:
ARRANJO:
CICLO PRINCIPAL:
SUB-ROTINAS:
ORGANIZAÇÃO DE PROGRAMAS
um, mas isto não permitiría a adição de novas linhas dentro do corpo do'
programa. Fazendo com incrementos de vinte, permite-se a maioria das
adições e correções para desenvolver programas, sendo portanto um bom
hábito de programação. Além disso, no final de cada capítulo, apresenta
mos uma seção de melhorias e modificações sugeridas. Estas mudanças
sugeridas serão fáceis de se fazerem se você mantiver os incrementos
das linhas em vinte.
As seções do programa com uma breve explicação estão no lado
direito do Quadro 2.1. Para entender completamente o objetivo de cada
seção e como fazer a programação, você deverá examinar com cuidado
os programas de exemplo nos capítulos posteriores usando este quadro
como um guia.
QUADRO 2.1
ORGANIZAÇÃO PADRÃO DE PROGRAMAS
NÚMERO DE
LINHAS SEÇÃO DO PROGRAMA E EXPLICAÇÕES
10-100 Observações (REM): Título do jogo, autor, copyright, etc.
100 - 480 Introdução do Programa: Nome da página, instruções (ou
GOSUBs para instruções), carregando (BLOAD) ou rodan
do (BRUN) arquivos em linguagem de máquina, etc. Uma
Introdução de Programa padrão deveria parecer algo com
o seguinte:
200 TEXT: HOME
220 VTAB 8: A$ = “JOGO DE COMPUTADOR EM BAIXA
RES”: HTAB (40-LEN (A$))/2: PRINT AÍ
240 VTAB 10: AS = “BY JOHN Q. DOE”: HTAB (40-LEN
(A$))/2: PRINT AS
280 IF PEEK (768)<> 201 THEN PRINT CHRS (4) “BRUN
CRIADOR.SOM”
300 VTAB 22: PRINT “TECLE A BARRA DE ESPAÇO PARA
COMEÇAR GET AS: PRINT AS
500 - 980 Arranjo do Programa: Atribui valores iniciais às variáveis,
Por exemplo, comandos GR e HOME, escore, tempo, cor,
ou números de alienígenas. Comandos PLOT, HLIN e
VLIN para fixarem o fundo inicial da tela. Ajusta X,Y das
figuras iniciais (por exemplo, sua espaçonave), e desenha
(PLOT) as figuras iniciais.
1000-4980 Ciclo Principal: Inclui as seguintes subdivisões, com o
número da linha que começa cada subdivisão.
1000 Verifica se uma tecla foi pressionada; se não, a execução
do programa vai para a linha 2000.
1020 Recebe (GET) a tecla que acaba de ser pressionada.
1040 Verifica qual tecla foi pressionada, e muda as variáveis de
acordo. Isto, por exemplo, muda a direção do movimento
de sua espaçonave ou canhão ou faz com que uma bala
seja atirada.
Fundamentos da Criação de Jogos 13
como seu soldado morre ou seu canhão explode ou sua espaçonave fica
sem combustível. A seção Fim de Jogo geralmente mostra o escore final,
o tempo, o nível final, e informações parecidas. Esta seção pode pergun
tar ao jogador se ele quer jogar novamente.
GRÁFICOS
Vamos fazer um programa curto, uma linha por vez, para demonstrar
o uso dos gráficos de baixa resolução. (Se você precisa recapitular como
entrar programas Applesoft no seu computador, leia o Capítulo 1.) Comece
digitando no teclado do seu Apple o seguinte: “100 GR : HOME”. Você
deve teclar < RETURN > ao final de cada linha mesmo que você não for
avisado para fazê-lo. Quando você roda (RUN) o programa, o gue é que
você vê?
O comando GR muda o display do Apple de texto para gráficos de
baixa resolução. Na verdade GR faz com que muitas coisas aconteçam:
ele limpa a tela de baixa resolução (quer dizer, ajusta todos os pontos
para preto); fixa a janela de texto para as quatro últimas linhas da tela,
mas não limpa esta janela; move o cursor para o canto esquerdo inferior
da janela de texto, como se você tivesse executado os comandos “VTAB
23: HTAB 1”; fixa a cor de baixa resolução em 0 (zero) que é preta.
Como o comando GR não limpa à janela de texto, a linha 100 também
inclui o comando familiar HOME. O comando HOME limpa a janela de
texto e coloca o cursor no canto superior esquerdo desta.
Você pode sair do modo gráficos de baixa resolução e voltar ao modo
texto com o comando “TEXT”, que você deverá digitar agora. Você usará
o comando TEXT mais tarde no programa-exemplo.
Continue o programa como segue:
120 COLOR — 15
140 PLOT 0,0: PLOT 39,0: PLOT 0,39: PLOT 39,39
160 COLOR = 1: PLOT 20,20
Depois da você tèr digitado estas três linhas, rode (RÜN) o programa
para ver o que acontece. A linha 120 fixa a cor de baixa resolução em 15.
Isto é necessário, pois, como dito acima, ó comando GR fixa automatica
mente a cor de baixa resolução em 0. O Quadro 3.1 mostra as dezesseis
cores possíveis de baixa resolução e seus números correspondentes
(0-15). Como você pode ver, “COLOR = 15” ajusta a cor para branco.
Na linha 160, a cor é reajustada para vermelho (cor número 1).
QUADRO 3.1
CORES DE BAIXA RESOLUÇÃO NO APPLE E
SEUS NÚMEROS
0 = preto 4 = verde escuro 8- marrom 12 = verde
1 = vermelho 5 = cinza 9— Jaranja 13 = amarelo
2 = azul escuro 6 = azul médio 10 = cinza 14 = água
3 = roxo 7 = azul claro 11 = rosa 15 = branco
uma rede com 1600 pontos: quarenta pontos na direção horizontal (X) e
quarenta pontos na direção vertical (Y). Cada um desses pontos é rela
cionado a dois números. O primeiro é o valor X e o segundo é o valor Y.
Como são usados aqui, X e Y são chamados de coordenadas da tela.
A coordenada X é numerada do lado esquerdo da tela e a coordenada
Y é numerada do topo da tela.
A linha 160 fixa a cor em vermelho com COLOR = 1, depois desenha
outro ponto no meio da tela. O comando PLOT 20,20 desenha o ponto
vermelho na posição X,Y = 20,20, quer dizer, vinte pontos do lado esquer
do da tela e vinte pontos do topo da tela.
Mesmo que você não tenha um monitor a cores, você pode notar a di
ferença entre os pontos brancos e vermelhos na tela porque seus modelos
de pixel são diferentes. LTm pixel — ou “picture element” (elemento de
figura) — é um dos pontos pequeninos na tela, usados para desenhar
caracteres de texto e pontos gráficos. '
Tente desenhar mais pontos e mais cores. Depois de rodar (RUN)
o programa cada vez, digite “TEXT” para voltar ao modo texto antes de
você continuar digitando novas linhas. Agora digite o seguinte para con
tinuar o programa:
Isto desenha um ponto verde perto do lado direito da tela (na verda
de dois pontos para a esquerda da borda direita), e na metade do cami
nho para baixo do topo, em X,Y — 37,20.
Se você quiser desenhar uma fileira ou coluna de pontos todos da
mesma cor, pode usar os comandos VLIN ou HLIN, como mostrado na
próxima linha do programa:
Com esta nova linha digitada, rode (RUN) o programa. A linha 220
ajusta a cor para azul êscuro, depois desenha duas linhas ha tela: uma
horizontal indo do meio do lado esquerdo para o meio dó lado direito e
uma vertical indo de cima para baixo, perto do lado direito do centro. As
duas linhas se cruzam na posição X,Y = 22,5.
No comando HLIN, os primeiros dois números (10,30) indicam as po
sições horizontais de começo e fim (valores X), respectivamente. O ter
ceiro número (5) indica a posição vertical (valor Y) da linha. Da mesma
maneira, no comando VLIN, os primeiros dois números (0,39) indicam as
20 Jogos de Ação para o Apple
Quando você rodar (RUN) o programa, você verá três números im
pressos na base da tela na janela de texto, logo abaixo da tela gráfica.
O primeiro número, 15, é o valor da variável A. O segundo, 2, é o valor
da variável B. O terceiro, 12, é o valor de C. A linha 240 ajusta A para a
cor encontrada nas coordenadas X,Y = 0,0 usàndo o comando SCRN
(“screen” = tela). Resumindo, SCRN (X,Y) dá a cor do ponto encon
trado na posição X,Y. Portanto, a linha 240 ajusta B para a cor encontra
da em X,Y = 22,5, e ajusta C para a cor encontrada em X,Y = 37,20. Se
você olhar com atenção as linhas anteriores do programa, verá que a
posição 0,0 tem um ponto de cor 15 (branco); a posição 22,5 tem um
ponto de cor 2 (azul escuro) e a posição 37,20 tem urj ponto de cor 12
(verde).
Para completar o programa-exemplo, digite as linhas:
QUADRO 3.2
ANIMAÇÃO
EXPLICAÇÃO DO PROGRAMA
Snake segue a Organização Geral de Programas dada no Capítulo 2,
mas não inclui uma seção de introdução.
O Quadro 4.1 dá as variáveis chaves em Snake.
QUADRO 4.1
VARIÁVEIS PRINCIPAIS EM SNAKE
VARIÁVEL EXPLICAÇÃO
MX Movimento de X; quantia somada a X para a próxima
posição
MY Movimento de Y; quantia somada a Y para a próxima
posição
TL Contador de tempo do ciclo; usado para contagem
correta de tempo
TM Tempo restante no jogo
X Posião (horizontal) X da tela de baixa resolução da
serpente
Y Posição (vertical) Y da tela de baixa resolução da
serpente
Organização do Programa
As linhas 10-90 são declarações REM com o título do jogo e o aviso
de copyright. O Arranjo do Programa começa na linha 500, limpando a
tela de texto com um comando HOME. Então o Arranjo do Programa vai
para os gráficos de baixa resolução com o comando GR. Finalmente, ele
ajusta duas variáveis associadas com o cronômetro do jogo. A primeira
destas é TM, que é ajustada para 60, o número inicial de segundos do cro
nômetro. A segunda variável controladora do tempo é TL, que conta o nú
mero de vezes através do ciclo principal. Como dez vezes através do ciclo
principal do programa demoram aproximadamente um segundo, TM é di
minuída de 1 quando TL aumenta para 10 (veja linha 2140).
A linha 520 move o indicador da tela para a linha 23 da tela de texto
(VTAB 23), que é a segunda linha de baixo, e então mostra o vaflor inicial
do tempo. A linha 560 desenha duas barreiras verticais na tela; isto au-
rhenta significativamente a dificuldade do jogo.
X linha 600 desenha uma borda ao redpr da tela. Isto serve como uma
barreira para não deixar que a serpente sala da extremidade da tela. As
linhas 640 e 660 desenham a posição inicial da serpente na tela de baixa
resolução, ajustando então as variáveis de movimento MX e MY para seus
valores iniciais. Se você entender a função dé MX e MY, você entenderá
como a animação é programada na maioria dos jogos deste livro.
Snake 27
Animação
Para mover a serpente na tela de gráficos, o programa segue a ver
são simplificada dos sete passos da animação resumidos no Capítulo 3.
Não precisamos guardar as coordenadas antigas (Passo 2) ou apagar a
posição antiga (Passo 5), pois a serpente mais cresce, preferivelmente, do
que se move (anima). Além do mais, porque a tela de baixa resolução está
envolvida em uma borda, apenas verificamos se ela se choca com uma
barreira. Não precisamos verificar os limites da serpente que cresce cada
vez mais.
A posição inicial (X e Y) da serpente é fixada e a serpente é desenha
da na linha 640. No ciclo principal, a nova posição é calculada, então o
novo ponto é desenhado. Isto é feito com as declarações “X = X + MX:
Y = Y + MY” na linha 2000, e “PLOT X,Y” na linha 2120. Em Snake, a
nova posição é sempre adjacente à posição corrente para a direita, es
querda, acima ou abaixo. Quando você quer mover para a direita, mas
não mover para cima ou para baixo, o novo valor de X deve ser igual ao
X antigo mais 1, por isso MX deve ser igual a 1. Ao mesmo tempo, o novo
valor de Y deve ser igual ao Y antigo, desde que a serpente não se mova
para cima ou para baixo. Por isso, MY deve ser igual a 0. Estes são os
valores iniciais de MX e MY ajustados na linha 660. Para mudar a direção
da serpente, o programa muda MX e MY, como será explicado mais
adiante.
Ciclo Principal
uma colisão ocorrerá. A colisão faz com que o programa vá para a linha
15000, a seção “perder jogo”. Se não há colisão, a linha 2120 desenha a
nova posição da serpente.
Efeitos Sonoros
A linha 2120 também dá ao jogo efeitos sonoros simples. O diafragma
do alto-falante do Apple se move para dentro e para fora para produzir
som. Lendo (PEEK) a posição especial de memória - 16336 move o dia
fragma do alto-falante para dentro (se ele estiver fora) ou para fora (se ele
estiver dentro). Todo outro acesso ao alto-falante produzirá um clique au
dível porque o alto-falante faz um som somente quando o diafragma se
move para fora. Então você deve dar dois PEEKs cada vez através do ciclo
principal para fazer um clique.
Cronômetros de Jogos
A linha 2140 controla a contagem de tempo do programa como foi
explicado acima. Na declaração “PRINT TM;“ ” ” você deve imprimir um
espaço seguindo imediatamente o tempo para apagar o zero quando o
tempo vai de 10 para 9. Sem imprimir “ ”, o tempo do programa aparece
ría contar regressivamente de 10 para 90.
O ciclo principal acaba com a linha 5000, que faz com que o progra
ma retorne à linha 1000 para verificar novamente por entrada via teclado.
Finalmente, as linhas 10000 a 20040 mostram os resultados do jogo.
MELHORIAS E MODIFICAÇÕES
10 REM ************************
20 REM * SNAKE *
30 REM * BY SCOTT ZIMMERMAN *
40 REM * COPYRIGHT (C) 1985 *
50 REM * COMPUTER EXPRESSIONS *
60 REM * 1129 EAST 470 NORTH *
70 REM * OREM, UTAH 84057 *
80 REM
90 REM
490 REM
ARRANJO:
BARREIRAS:
BORDA:
INICIALIZA SERPENTE:
CICLO PRINCIPAL:
MOVE SERPENTE:
2000 X = X + MX:Y = Y + MY
2100 IF SCRNt X»Y) < > 0 THEN 15000
2120 PLOT X,Y:S = PEEK ( - 16336) + PEEK (
— 16336)
2130 REM
CRONOMETRO DO JOGO:
2140 TL = TL + 1: IF TL = 10 THEN TM = TM - 1:
TL = O: VTAB 23: HTAB 7: PRINT TM; " ":
IF TM = 0 THEN 10000
4990 REM
O objetivo do jogo é guiar sua nave para que ela colida com os Klo
ryons e a todos destrua antes que o tempo se esgote. O programa-registra
na base da tela o número de Kloryons e o tempo restante.
Conforme você navega com sua nave estelar, você perceberá que
quando a nave estelar sai de um lado da tela, ela aparece imediatamente
no outro lado. Isto se chama “wrap-around”. Você pode usar o “wrap
around” como uma vantagem no seu plano de ataque aos Kloryons. Mas
Wipeout 33
tome cuidado! Você pode ser morto em uma mina espacial, se ultrapassar
a tela cegamente.
Ganhando ou perdendo o jogo, você fica sabendo o número de Klo
ryons restantes (zero Kloryons significa que você ganha) e o tempo res
tante (zero tempo significa que você perde). Você será perguntado tam
bém se quer jogar novamente. Pressione “S” para sim ou *‘N” para não.
EXPLICAÇÃO DO PROGRAMA
Wipeout segue a Organização Geral de Programas dada no Capítulo
2, incluindo uma seção introdução. As linhas 10-90 são declarações REM
com o nome do jogo e o aviso de copyright. A linha 200 certifica que o
programa começa no modo texto e limpa a tela de texto. '
As variáveis-chaves de Wipeout são dadas no Quadro 5.1.
QUADRO 5.1
VARIÁVEIS PRINCIPAIS EM WIPEOUT
VARIÁVEL EXPLICAÇÃO
KL Número de Kloryons restantes na tela
MX Movimento de X; quantia somada a X para a próxima
posição
MY Movimento de Y; quantia somada a Y para a próxima
posição
S Variável temporária para soar o alto-falante
SM Número de minas espaciais
SN Constante igual a -16336, o endereço do alto-falante
SP Posição da tela; verifica por colisões
TL Contador de tempo do ciclo; usado para contagem
correta do tempo
TM Tempo restante no jogo
X Posição X (horizontal) da tela de baixa resolução da
nave estelar
X1 Coordenada X antiga da nave estelar
Y Posição Y (vertical) da tela de baixa resolução da nave
estelar
Y1 Coordenada Y antiga da nave estelar
Animação
QUADRO 5.2
VALORES DE MX E MY PARA O MOVIMENTO
DA NAVE ESTELAR
Difeção do Movimento MX MY
DIREITA 1 0
ESQUERDA -1 0
PARA CIMA 0 -1
PARA BAIXO 0 1
Contadores de Jogos
Inimigos Aleatórios
MELHORIAS E MODIFICAÇÕES
Várias melhorias e modificações podem tornar Wipeout mais diverti
do, dando-lhe futuras dicas na programação de jogos de computadores.
Este jogo pode parecer muito difícil no início, mas à medida que você
vai se tornando um adepto, pode parecer muito fácil. Você pode fazer mo
dificações de três maneiras:
1. Digite a seguinte linha: ‘‘5000 FOR J = 1 TO 50: NEXT J: GOTO 1000”.
Assim você torna mais lento ou acelera o jogo, aumentando ou dimi
nuindo o tamanho do ciclo de atraso, que é ajustado para 50 na linha
acima.
2. Ajuste a contagem do tempo na linha 2200. Você pode tornar o jogo
mais difícil diminuindo o ajuste de tempo do ciclo (TL = 10, por exem
plo) ou torná-lo mais fácil aumentando o ajuste (TL = 20).
3. Aumentar ou diminuir o número de Kloryons (KL) e minas espaciais
(SM) na tela.
Você pode usar estas três modificações para fazer uma melhoria que
permita ao jogador selecionar o nível de dificuldade. Para tanto, ajuste o
tamanho do ciclo de atraso na linha 5000 alterada para um variável CA
(para ciclo de atraso). Depois ajuste o parâmetro tempo para uma outra
Wipeout 37
Outras Melhorias
Você pode também melhorar o jogo incluindo melhores efeitos sono
ros (veja Criador de Som no Capítulo 7) usando paddles (veja Race Car
no.Capítulo 6) ou um joystick (veja Space Hunter no Capítulo 10) para en-
38 Jogos de Ação para o Apple
10 REM ************************
20 REM * WIPEOUT *
30 REM * BY SCOTT ZIMMERMAN *
40 REM * COPYRIGHT (C) 1985 *
50 REM * COMPUTER EXPRESSIONS *
60 REM * 1129 EAST 470 NORTH *
70 REM * OREM, UTAH 84057 *
80 REM ************************
90 REM
190 REM
INTRODUÇÃO:
ARRANJO:
DESENHA KLORYONS:
CICLO PRINCIPAL:
2000 XI = X:Y1 = Y
2020 X = X + MX:Y = Y + MY
2030 REM
2190 REM
CRONOMETRO:
2200 TL = TL + Is IF TL = 15 THEN TM = TM -
1:TL = O: VTAB 22: HTAB 35: PRINT TM;
" ": IF TM = O THEN 15000
5000 SOTO 1000
5990 REM
9990 REM
Chegou sua vez, a corrida que você sempre sonhou — as 500 de In-
dianápolis! Você dá uma olhada nos mostradores e instrumentos do pai
nel de seu carro, ajusta seu capacete, agarra na direção e espera a ban
deira cair. E você larga!
Você larga para aprender sobre seleção de níveis de dificuldade, pad
dles e movimentar a tela de baixa resolução. Estes são todos os aspectos
da criação de jogos que trazem divertimento e excitação.
EXPLICAÇÃO DO PROGRAMA
QUADRO 6.1
VARIÁVEIS PRINCIPAIS EM RACE CAR
VARIÁVEIS EXPLICAÇÃO
Paddles
e o ajusta (dividindo por 6.5) para estar dentro do limite de 0 a 39, as di
mensões da tela de baixa resolução. A leitura corrente torna-se a posição
inicial do carro. A linha 620 ajusta a .pista para que ela comece na frente
do carro; assim evita-se o problema do carro bater antes dele chegar na
pista.
GR
POKE 34,0
Agora tecle < RETURN > várias vezes. Observe como o texto da base
da tela passa por dentro da tela gráfica, converte-se em pontos de baixa
resolução e continua subindo pela tela conforme você tecla <RETURN >.
Esta mesma técnica é utilizada nas linhas 640 e 1300 onde o PRINT tem
a mesma função de teclar < RETURN >. Desta maneira, movimentar a tela
de baixa resolução é simples, rápido e eficaz.
MELHORIAS E MODIFICAÇÕES
Mesmo sem um paddle ou joystick, você pode ainda jogar Race Car
fazendo várias mudanças no programa. Estas alterações permitem a você
usar o teclado como entrada. Pressione o ponto (.) para mover o carro
para a direita, a vírgula para mover para a esquerda e a barra de espaço
para manter o carro indo reto. As seguintes linhas deveriam ser digitadas
como indicadas abaixo, ao invés de como mostradas na Listagem 6.1:
600 PD = 20
1140 IF PEEK (-16384) < 128 THEN 1220
1160 GET A$: IF AS = THEN XM = 1: GOTO 1220
1180 IF AS = THEN XM = - 1: GOTO 1220
1200 IF AS = “ ” THEN XM 0
INTRODUÇÃO:
ARRANJO:
CICLO PRINCIPAL:
1000 FOR R 1 TO 20
48 Jogos dé Ação para o Apple
1020 CO = CO + 1
1040 X = X + INT ( RND (1) * 3) - 1
1060 IF X + TW > 38 THEN X = 38 - TW
1080 IF X < 1 THEN X = 1
1100 COLOR® 0: HLIN X,X + TW AT 39
1Í20 OX = RX
1140 PD » INT ( PDL (0) / 5.2) - 5
1160 IF PD > OX + 5 THEN XM = 1: GOTO 1220
1180 IF PD < OX - 5 THEN XM = -is GOTO 1220
1200 XM = O
1220 S = PEEK (SN)
1240 RX = RX + XM
1260 RC = SCRN( RX,RY + 2)
1280 PLOT OX,RY
1300 PRINT
1320 COLOR® 15; PLOT RX,RY
1340 IF RC >0 THEN 15000
1360 NEXT R
1380 RY = RY + 2
1400 COLOR® O: PLOT RX,RY - 2
1420 IF RY ® 39 THEN 10000
1440 GOTO 1000
9080 REM
VOCE GANHOU:
VOCE PERDEU:
Para dar a você uma idéia do tipo de efeitos sonoros que você pode
criar usando o Criador de Som, digite o programa Applesoft Exemplos de
Sons, dado na Listagem 7.2. Depois de você dar entrada ao código em
Applesoft BASIC no seu computador, grave o programa em seu disco
Jogos de Ação digitando “SAVE EXEMPLOS.SOM”. Se você ainda tem
o programa na memória, digite “RUN”, ou rode o programa do disco digi
tando “RUN EXEMPLOS.SOM”. Alternativamente, você pode selecionar
Exemplos.Som do menu de STARTUP do disco Jogos de Ação.
Quando você rodar (RUN) o programa, você verá imediatamente na
tela um menu como este:
Pitch
Duração
Ritmo
A duração mais longa possível, 255, toca tons à razão de aproxima
damente 76 batidas por minuto (admitindo que cada nota é uma batida),
ou aproximadamente 0,8 segundos por nota. Você pode criar tons mais
longos usando o parâmetro ritmo do Criador de Som. Digite o seguinte
54 Jogos de Ação para o Apple
par-a-démonstrar isto: “& 206,100: & 206,100,2: & : & 206,100,1”. Você pode
adicionar um terceiro parâmetro, o ritmo, se você incluir conjuntamente
o pitch e a duração. O ritmo também é um número no limite de 0 a 255.
O valor do ritmo aumenta a duração por este fator. Por exemplo, se você
muda o ritmo para 2, a duração aumenta por um fator de 2 e a nota dura
duas vezes mais. Uma nota com duração de 255 e um ritmo de 255 irá
soar por três minutos!
Uma nota com um ritmo de 0 não irá soar. Isto pode ser usado para
desligar o som no seu programa. Se o programa possui vários coman-
dos-& de efeitos sonoros, mas nenhum especifica o ritmo (que é freqüen-
temente o caso), você pode desligar todos os sons colocando o comando
“& 0,0,0” no começo do programa ou digitando-o no modo imediato antes
de você rodar o programa. Entretanto, uma maneira melhor de desligar
o som de dentro de um programa é dada na próxima seção.
O ritmo especificado mais recentemente é o valor default e você não
precisa especificar o ritmo novamente até que você queira mudá-lo. O
ritmo default quando o Criador de Som é pela primeira vez rodado
(BRUN) é 1.
É uma boa idéia reajustar o ritmo para 1 depois de uma seqüência
de notas se o ritmo for modificado. Você pode fazê-lo com o comando
“& 0,0,1”.
EDITOR DE SOM
MÚSICA: COMPUTADOR.BACH
i
Combinando o pitch, a duração e o ritmo na maneira apropriada,
você pode criar música verdadeira. O programa Computador Bach dado
na Listagem 7.4 dá um número musical, uma seleção do Inventio VII. de
Bach, para demonstrar um uso do Criador de Som. Digite o programa
Computador Bach e grave-o no seu discó Jogos de Ação. Quando você
roda (RUN) o programa, é-lhe permitido selecionar um parâmetro ritmo,
de 0 a 5. Um ritmo de 0 não produzirá som, 1 será o mais rápido e 5 o
mais lento.
Você achará os Quadros 7.2 e 7.3 muito úteis na criação de sua
própria música. O Quadro 7.2 fornece a relação entre as notas musicais
e o parâmetro pitch e o Quadro 7.3 dá a relação entre o ritmo de música
e o parâmetro duração.
Embora você não use o Computador Bach (Listagem 7.4) nós seus
próprios jogos Applesoft, você pode querer outros tons, como o tema
musical das Olimpiadas, sua música de briga de escola ou uma fanfarra
de cornetas. Com um pouco- de trabalho e criatividade, você pode adi
cionar efeitos sonoros interessantes e excitantes e música em seus jogos.
QUADRO 7.1
COMANDOS DO TECLADO DO EDITOR DE SOM
QUADRO 7.2
RELAÇÃO ENTRE AS NOTAS MUSICAS E OS
PARÂMETROS PITCH
NOTA N.° DO NOTA N.° DO
PITCH PITCH
C 60 G 190
C#, D bemol 71 G^, A bemol 194
D 82 A 197
D^, E bemol 91 A#= B bemol 200
E 101 B 203
F 109 C (C menor) 206
F?$=G bemol 117 01^7 D bemol 209
G 125 D 212
G#tA bemol 132 D?t=7 E bemol 214
A 139 E 216
At^B bemol 146 F . 219
B 152 F^, G bemol 221
C (médio) 158 G z 223
CT^D bemol 163 Gj^r A bemol 224
D 168 A 226
Dt^4 E bemol 173 At4^ B bemol 228
E 178 B 229
F ft 182 C (C menor) 231
F/95 G bemol 186
QUADRO 7:3
RITMO DA MÚSICA E PARÂMETROS DE DURAÇÃO
DURAÇÃO BATIDAS POR MIN TERMO MUSICAL
1 *★**★*★★★★*★★**★*★*★*★★★★*★*****»★★★★★★★★★****★★*★
2 * *
' *
3 SOUND.MAKER *
4 * *
5 ★
By S. Scott Zimmerman ★
6 ★ ★
7 ★
Copyright (c) 1985 ★
8 ★
Computer Expressions ★
9 ★
1129 East 470 North ★
10 *
Orem, Utah 84057 ★
11 * *
12 Jr
Assembler: Merlin *
13 ★ ★
★★*★★★★★**★*★******★★★★*★*★★*★*★***★★★★**★★★★★*★**
14
15
16 ORG $300 ;Start in input buffer
17 * .
21
22 MULTI EQU $0 Multiplicand
23 MULT 2 EQU $2 ;Multiplier
24 DUR EQU $3 ;Temporary duration
25 PITCHI EQU $E3 ;Inverse pitch (rest fig)
26 PITCHCNT EQU $PA 7 Count for sound loop
27 STOPFLG EQU $FC 7 Flag to turn off sound
28 PITCH EQU $FD 7 Sound pitch
29 DURATION EQU $FE 7 Sound duration
30 TEMPO EQU $FF 7 Sound tempo
31 *
32 • ■ 1 1■ ■ ■
33 * Monitor locations and routines: *
34
35
36 CHRGOT EQU $B7 ;Get text character
37 AMPER EQU $3F5 7routine address
38 TXTEND EQU $D995 ;Move TXTPTR to end
39' GETBYTC EQU $E6F5 ;Eval text expression
40 GETBYT EQU $E6F8 7Eval text expression
41 SPEAKER EQU $C030 7 Speaker switch
42
43 *—_ -. —W. 9 — ----- 9 ♦ —— ..
44 * Constants: *
45 *— __ _ — _ _ — —— — — *
46
47 RESUMTOK EQU $A6 ;Applesoft RESUME token
48 STOPTOK EQU $B3 7Applesoft STOP token
49
58 Jogos de Ação, para o. Apple
★=====!3===s====s:3S=======:======2===============*
50
51 * SETUP (connect &, set defaults) *
52
53
0300: A9 4C 54 LDA #$4C ;Get JMP opcode
0302: 8D P5 03 55 STA AMPER ;Stuff at amper vector
0305: A9 20 56 LDA ♦ <START /Point & to start
0307: 8D F6 03 57 STA AMPER+1 ,
030A: A9 03 58 LDA #>START
030C: 8D F7 03 59 STA AMPER+2
030F: A9 CE 60 LDA #206 /Set pitch to middle C
0311: 85 FD 61 STA PITCH
0313: A9 64 62 LDA #100 /Set initial duration
0315: 85 FE 63 STA DURATION
0317: A9 01 64 LDA #1 /Set initial tempo
0319: 85 FF 65 STA TEMPO
031B: A9 00 66 LDA #0 /Set STOP flag to "on"
031D: 85 FC 67 STA STOPFLG
031F: 60 68 RTS /End of SETUP
69
70
71 * START (start of sound routine) *
72 *===============================2======^====^======*
73
0320: C9 B3 74 START CMP #STOPTOK /Is STOP token there?
0322: D0 07 75 BNE CHKRESUM /No, go check RESUME
0324: A9 01 76 LDA #1 /Set the stop flag
0326: 85 FC 77 STA STOPFLG / so no sound is made
0328: 4C 95 D9 78 JMP TXTEND /Exit to end of command
032B: C9 A6 79 CHKRESUM CMP #RESUMTOK ;Is RESUME token there?
032D: D0 07 80 BNE CHKSTOP /No, go check stop flag
032F: A9 00 81 LDA #0 ;Clear the stop flag
0331: 85 FC 82 STA STOPFLG
0333: 4C 95 D9 83 JMP TXTEND ;Exit to end of command
84
0336: A5 FC 85 CHKSTOP LDA STOPFLG /Is stop flag set?
0338: F0 03 86 BEQ GETPARM /No,✓go get parameters
033A: 4C 95 D9 87 JMP TXTEND /Just end (thru line end)
88
033D: 20 B7 00 89 GETPARM JSR CHRGOT /Check if first parm
0340: F0 19 90 BEQ SOUND /No parm, so make sound
0342: 20 F8 E6 91 JSR GETBYT /Get the pitch parameter
0345: 86 FD 92 STX PITCH /Save it
93
0347: 20 B7 00 94 JSR CHRGOT /Check if second parm
034A: F0 0F 95 BEQ SOUND /No parm, so make sound
034C: 20 F5 E6 96 JSR GETBYTC ;Get the duration value
034F: 86 FE 97 STX DURATION ;.Save it
98
0351: 20 B7 00 99 JSR CHRGOT /Check if third parm
0354: F0- 05 100 BEQ SOUND /No parm, so make sound
Música e Efeitos Sonoros 59
10 REM ************************
20 REM * EXEMPLOS.SOM *
30 REM * BY SCOTT ZIMMERMAN *
40 REM * COPYRIGHT CO 1985 *
50 REM * COMPUTER EXPRESSIONS *
60 REM * 1129 EAST 470 NORTH *
70 REM * OREM, UTAH 84057 *
ao REM ************************
90 REM
100 REM
INTRODUÇÃO:
ARRANJO: '
CICLO PRINCIPAL:
SUB-ROTINAS
6180 8c 82,58,4: & 0,1: & 82*,38: & 0,1: & 82,
18: 8c 0,1: 8c 82,60: 8c 109,-40: 8c 101,’18:
8c 0,1: & 101,40: 8c 82,18: 8c 0,1s 8c 82,
40: 8« 71,20: 8c 82,60: 8c 0,0,1: RETURN
10 REM ************************
20 REM * EDITOR.SOM *
30 REM * BY SCOTT ZIMMERMAN *
40 REM * COPYRIGHT (C) 1985 *
50 REM * COMPUTER EXPRESSIONS *
60 REM * 1129 EAST 470 NORTH *
70 REM * OREM, UTAH 84057 *
80 REM ************************
90 REM
190 REM.
INTRODUÇÃO:
ARRANJO:
CICLO PRINCIPAL-í
SUB-ROTINAS:
10 REM ************************
20 REM * COMPUTADOR.BACH *
30 REM * BY SCOTT ZIMMERMAN *
40 REM * COPYRIGHT (C) 1985 *
50 REM * COMPUTER EXPRESSIONS *
60 REM * 1129 EAST 470 NORTH *
70 REM * OREM, UTAH 84057 *
80 REM ************************
90 REM
190 REM
INTRODUÇÃO:
LE DADOS DA MUSICA:
SELECIONA TEMPO:
TOCA NOTAS:
SUB-ROTINA:
7990 REM
DADOS DO PITCH:
DADQS DÁ QURÁCAO:
EXPLICAÇÃO DO PROGRAMA
QUADRO 8.1
VARIÁVEIS PRINCIPAIS EM NUCLEAR.FALLOUT
VARIÁVEL EXPLICAÇÃO
LN Comprimento do prato de controle
MX Movimento do prato ao longo da coordenada X
ND Número de pratos (começa com ND = 3)
NUM Número de partículas pegas entre cada mudança no
tamanho do prato
OP Coordenada Y antiga da partícula
OX Coordenada X antiga do prato
PF Indicador (“flag”) da partícula; PF = 1 se a partícula
está caindo, 0 se não
SC 'Escore do jogo
SP Velocidade do prato (movimento com incremento)
SY Velocidade da partícula em queda na direção Y
XD Coordenada X do prato
XP Coordenada X da partícula
YD Coordenada Y do prato
YP Coordenada Y da partícula
Posições Aleatórias
Velocidades Diferentes
Mas isto não p tudo. Uma vez que o prato se encolhe pára um ponto
e depois que cinco partículas são pegas com o prato neste tamanho, a
linha 8020 reajusta o prato para cinco pontos de comprimento mas au
menta a velocidade do proçjrama. Isto é feito aumentando os valores de
SP e SY. Como SP é o incremento pelo qúal o prato se move e SY o
incremento pelo qual uma partícula cai durante uma passagem pelo ciclo
principal (ver as linhas 2000 e 3000) ambos os objetos animados movem-
se mais rápido. A velocidades mais rápidas, o prato não se encolhe para
um ponto, mas se encolhe somente para um ponto menos que o valor de
SP (ver a declaração IF da linha 8020).
O método que usamos aqui para aumentar a velocidade do jogo pode
ser aplicado a qualquer outro jogo de ação. Apenas lembre-se de que a
velocidade de um objeto animado aumenta,conforme você aumentq o
incremento pelo qual ele se move durante cada passagem pelo ciclo prin
cipal. Há, entretanto, um limite para quão grande o incremento possa ser
e ainda manter uma animação suave. Experiência e prática ajudá-lo-ão
a programar seus jogos com uma velocidade de animação adequada.
MELHORIAS E MODIFICAÇÕES
10 REM ************************
20 REM * NUCLEAR.FALLOUT *
30 REM & BY STEPHEN ZIMMERMAN *
40 REM * COPYRIGHT (C) 1985 *
50 REM * COMPUTER EXPRESSIONS *
60 REM 1129 EAST 470 NORTH *
70 REM * □REM, UTAH 84057 *
SO REM ************************
90 REM
190 REM
INTRODUÇÃO:
ARRANJO
500 HOME : GR
520 SC = O:XD = 18:YD = 39:PF = O:NUM
540 LN = 5:SY = 1:SP = 1:ND = 3:MX = 0
560 COLOR= 15
580 VTAB 23: HTAB 15: PRINT "ESCORE =
990 REM
CICLO PRINCIPAL:
MOVE PRATO:
2000 OX = XD:XD - XD + MX
2020 GOSUB 9000
2060 COLOR= 0: HLIN OX,(OX + LN) AT YD
2080 COLDR- 15: HLIN XD,(XD + LN) AT YD
2100 IF PF = 1 THEN 3000
2490 REM
COMECA A CAIR:
MOVE PARTÍCULA:
3000 OP = ¥P:YP = YP + SY
3020 IF YP < 39 THEN 3080
3040 IF SCRN( XP,39> = 15 THEN GOSUB 7000:
SOTO 5000
3060 GOSUB 6000: GOTO 5000
3080 COLOR= 0: PLOT XP,OP
3100 CDLOR= 5: PLOT XP,YP
5000 GOTO 1000
5990 REM
PARTÍCULA ATERRISSOU:
PARTÍCULA PEGA:
VERIFICA BORDAS:
GAME OVER:
EXPLICAÇÃO DO PROGRAMA
QUADRO 9.1
VARIÁVEIS PRINCIPAIS EM INVADERS
VARIAVEL EXPLICAÇÃO
Para soltar uma bomba ou atirar uma bala, o seu programa tem que
seguir os mesmos sete passos da animação (ver Capítulo 3) usados para
animar qualquer tipo de objeto. A única diferença é que você completa
os passos 1 e 2 (inicializar e gravar as coordenadas iniciais e desenhar
a figura inicial) na seção do Ciclo Principal ao invés de na seção Arranjo
do programa.
Por exemplo, em Invaders, a bomba é solta inicialmente na linha
2200 e o míssil é lançado inicialmente na linha 1100 como urna chamada
para a sub-rotina 9000. O evento aleatório de soltar uma bomba e da
própria animação da bomba _e do míssil é explicado nas seções abaixo.
Eventos Aleatórios
Em Nuclear Fallout (o capítulo anterior), explicamos a técnica sim
ples de programar posições aleatórias, usando o gerador de número alea
tório do Apple. As partículas começam em uma coordenada aleatória Y
antes de se moverem para baixo na tela de baixa resolução. Agora, esten-
78 Jogos de Ação para o Apple
adição aos sete passos da animação é que eis duas últimas seções (para
o míssil e a bomba) devem primeiro verificar se o objeto está ativo na
tela. Se nenhuma bomba está caindo, ou nenhum míssil está atirando, a
seção correspondente do ciclo principal é pulada.
Você perceberá que o programa usa alguns códigos estranhos .para
o incremento de,movimento do invasor (ver linhas 2100-21.Ç0). Normal
mente, o incrpmento é.uma integral (número inteiro), como urh ou dois,
Mas aqui ò incremento é 0.1. O Applesoft aceita nãó-intégráis (frações
decimais) para as coordenadas X,Y em um cornando “PLOT.’,’ de baixa re
solução. A parte fracional é simplesmente truncada (cortada fora) quando
o PLOT é executado. Um incremento de Q.1 terri o efeito de mover o inva
sor apenas um ponto a cada dez passagens pelo ciclo principal. Este
movimento lento é necessário para ter alguma esperançà de se acertar
um.alienígena còm o seu míssil.
MELHORIAS E MODIFICAÇÕES
Acelerando o Applesoft
Você talvez tenha lido algúmas das sugestões pata aóelerar o Apple
soft dadas no Manual de Referência do Programador de Applesoft BASIC.
Sugerimos que você tente algumas delas, mas achamos que as sugestões
do Manual de Referência do Programador têm pouco efeito percebível na
velocidade dos jogos de. ação. A Organização de Programas dada no
Capítulo 2 deste livro permite a você produzir programas claros, fáceis
de se escreverem que também aumentam a velocidade de execução
do programa.
80 Jogos de Ação para o Apple
Compilando o Applesoft
Se você sente que seus jogos de Applesoft são muito lentos e acele
rá-los parece um trabalho difícil ou impossível, você talvez queira usar um
compilador Applesoft.
O Applesoft BASIC é uma linguagem interpretada. Cada linha de có
digo BASIC deve ser traduzida, uma linha de cada vez, em código de má
quina conforme o programa está sendo executado. Mesmo estas linhas
Applesoft que são executadas muitas vezes (como estas em um ciclo
FOR-NEXT ou estas no ciclo principal do programa) devem ser traduzidas
toda vez através do ciclo. Este processo de tradução é lento.
Se houvesse uma maneira de se fazer a tradução do Applesoft BASIC
para código de máquina apenas uma vez — antes do programa ser exe
cutado — o programa rodaria muito mais rápido. Isto é o que um compi
lador Applesoft faz — traduz código Applesoft BASIC em linguagem de
máquina.
Vários compiladores Applesoft estão disponíveis. Usamos o compi
lador chamado TASC (uma abreviação de The Applesoft Compiler), que
você pode adquirir da Microsoft, Inc., 400 108th Ave. NE, Suite 200, Bel
levue, WA 98004, U.S.A.
TASC torna Invaders rápido! De fato, muito rápido. Portanto você
tem que modificar a Listagem 9.1 para ter um bom programa fonte parà
compilar.
Para usar TASC para compilar Invaders, faça o seguinte:
1. Certifique-se que o arquivo do programa Invaders está em um
disquete formatado com DOS 3.2 ou 3.3, visto que TASC não é
compatível com ProDOS neste momento.
2. Você precisa apagar todas as referências no programa para o
Criador de Som, pois TASC não permite o uso de comandos
para chamar sub-rotinas. Para fazer isso, apague a linha 240 e
mude todos os comandos para “J = PEEK(— 16336)”. Desta
maneira, Invaders ficará com pelo menos alguns efeitos sonoros.1
3. Se você compilar esta versão de Invaders, o jogo ainda será
muito rápido para ser jogado. Mas se você diminuir a taxa na
qual as bombas caem do céu, o jogo será jogável. Para fazer
isso, mude as linhas seguintes como indicado:
2360 YB = YB + .2
2380 COLOR = 0: PLOT XB,OB:SP = SCRN( XB,YB):
IF SP > 0 THEN FB = 0 :GOSUB 8000:GOTO 1000
2400 COLOR = 3: PLOT XB.YB
10 REM *#*********************,*
20 REM * INVADERS , , *
30 REM *. BY BRENT ZIMMERMAN *
40 , REM * COPYRIGHT (C), 1985. .*
,50. REM * COMPUTER EXPRESSIONS ’*
60 REM * 1129 EAST 470 NORTH . *
/O REM OREM, UTAH 84057
80 REM ******#**^********#»****.
90 REM
190 REM
INTRODUÇÃO:
ARRANJO
CICLO PRINCIPAL:
SUB-ROTINAS:
GAME OVER:
EXPLICAÇÃO DO PROGRAMA
QUADRO 10.1
VARIÁVEIS PRINCIPAIS EM SPACE HUNTER
VARIÁVEL EXPLICAÇÃO
EG Energia restante na sua nave estelar
H Valor HTAB para objeto a longo alcance
PB Posição de memória do botão 0 do,paddle; o
botão 1 do paddle é PB + 1
RA Graduação do jogador (valor numérico)
RAS Graduação do jogador (norríe)
SF Indicador da nave; SF = 1 para inimigo, 0 para
nave-mãe
SK Número de naves inimigas derrubadas
TN Posição de memória do alto-falante,
V Valor VTAB para objeto em longo alcance
X Coordenada X do inimigo ou da nave-mãe
X$ Equivalente ASCII às posições X da explosão
XE( ) Coordenadas X da seqüência da explosão de baixa
resolução
XM Movimento do inimigo ou da nave-mãe ao longo da
coordenáda X
Y Coordenada Y para objeto a longo alcance
YS Equivalente ASCII das coordenadas Y da explosãd
YE( ) Coordenadas Y da séqüência da explosão dé baixa
resolução
YM Movimento do inimigo ou da nave-mãe ao longo dá
coordenada Y
Controle do Joystick
MELHORIAS E MODIFICAÇÕES
Várias melhorias e modificações que você talvez queira tentar são:
1. Usar o Criador de Som para os efeitos sonoros. Não há nada de
errado com o som usado no jogo, mas você pode sentir que eles
podem ser melhorados.
2. Fazendo a sua própria seqüência de explosão. Você pode ser ôu
não capaz de melhorar a explosão corrente, mas você ganharia
prática de programação se você tentasse fazer a sua própria.
92 Jogos de Ação para o Apple
10 REM ***^^*******************
20 REM * SPACE.HUNTER *
30 REM * BY BRENT ZIMMERMAN *
40 REM * COPYRIGHT (C) 1985 *
50 REM * COMPUTER EXPRESSIONS *
60 REM * 1129 EAST 470 NORTH *
70 REM * OREM, UTAH 84057 *
SO REM
90 REM
INTRODUÇÃO:
LE CARGOS:
DADOS DA EXPLOSÃO:
ARRANJO:
520 HOME : GR
540 GOSUB 7500
560 INVERSE : PRINT s HTAB 37s PRINT " ":
HTAB 37; PRINT " + : HTAB 37: PRINT
tl Fl «
580 HTAB 1: VTAB 22: NORMAL : PRINT "CARGO:
"RAt-(RA)
600 VTAB 24: HTAB 1: PRINT "ENERGIA: 1000Ô";
:EG = 10000
620 SF = 1
640 X = INT ( RND (1) * 120) - 40:Y = INT
( RND (1) * 120) - 40
990 REM
SUB-RDTINAS:
6490 REM
6990 REM
TIRD LASER:
EXPLOSÃO:
INICIALIZA TELA:
ACABOU 0 COMBUSTÍVEL:
QUADRO 11.1
CORES DE ALTA RESOLUÇÃO DO APPLE E SEUS
RESPECTIVOS NÚMEROS
0= preto 1 4 = preto 2
1 - verde 5 = vermelho
2= violeta 6 - azul
3= branco 1 7 = branco 2
Agora você está pronto para desenhar pontos e linhas na tela gráfica.
Digite “HPLOT 5,15” para desenhar um ponto. Isto acende o pixel das
coordenadas X = 5eY = 15. O limite de X é de 0 a 279, e no modo misto
gráficos/texto, o limite de Y é de 0 a 159. Por exemplo, “HPLOT 0,0:
HPLOT 279,0: HPLOT 279,159: HPLOT 0,159” desenha um ponto efn cada
canto da tela de alta resolução.
Você pode usar também o comando HPLOT para desenhar uma linha
na tela de alta resolução. Por exemplo “HPLOT 0,0 TO 279,159” desenha
uma diagonal pela tela. Digite “HPLOT 50,50 TO 80,50 TO 80,80 TO 50,80
TO 50,50” para desenhar uma caixa.
Agora, digite “HPLOT TO 20,20”. Isto demonstra o conceito de um
cursor interno de gráficos. Este é similar ao cursor de texto no qual ele
avisa a você onde a próxima saída será colocada na tela. O cursor de
gráficos, todavia, é interno; ele nunca é visto pelo usuário. Este cursor
está sempre localizado nas coordenadas X,Y do último ponto desenhado
na tela de alta resolução. O comando HPLOT TO X,Y desenha uma linha
a partir da posição do cursor interno até as novas coordenadaé X,Y.
Combinando diversos comandos HPLOT, você pode desenhar cenas
e figuras na tela de alta resolução. Este método pode ser suficiente para
desenhar imagens estáticas, mas é muito lento e incômodo para animação
de jogos de ação. Por isso mesmo usaremos outro método envolvendo os
comandos DRAW è XDRAW (definidos abaixo e descritos em detalhes no
próximo capítulo) para desenhar espaçonaves, alienígenas, balas e outras
figuras de jogos de ação.
Além da tela 1 de alta resolução, que estivemos usando, o Apple tem
também uma tela 2 de alta resolução. O comando “HGR2” limpa e inicia
liza a tela 2. Embora parecido com o comando HGR, o comando HGR2
sempre coloca o Apple em modo só gráficos, como o modo misto gráfi
cos/texto não está disponível na tela 2. O limite de Y para comandos
HPLOT é de 0 a 192 (ao invés de 0 a 159 como no modo misto gráficos/
texto) e não há janela de texto na base da tela. O limite de X é o mesmo,
tanto no modo só gráficos como no misto gráficos/texto. Os comandos de
gráficos de alta resolução HPLOT e HCOLOR executam na tela 2 do mes
mo modo que na tela 1.
Antes de tratar dos comandos de gráficos dé alta resolução envolvi
dos no desenho de figuras, precisamos discutir PEEKs, POKEs, e CALLs.
Guia para Gráfjcos de Alta Resolução 101
para 0). Agora digite “LIST” só para encher a tela com texto, e então
“CALL 64600”. Você acabou de chamar a rotina de linguagem de máqui
na da ROM usada para limpar a tela de texto.
O endereço 64600, que é o início da rotina HOME, pode também ser
expresso como um número negativo. Para determinar o equivalente nega
tivo de qualquer endereço, você simplesmente subtrai 65536 (que é equi
valente ao número hexadecimal SFFFF + 1). Assim, 64600 = -936. Então
quando digitar “CALL -936” vòcê terá o mesmo efeito que quando digitar
“CALL 64600”.
QUADRO 11.2
SUMÁRIO DE COMANDOS GRÁFICOS DE ALTA
RESOLUÇÃO
TABELA DE FIGURAS
O que é uma TABELA DE FIGURAS?
Uma tabela de figuras é uma lista (ou tabela) de dados que .definem
uma ou mais figuras a serem usadas em gráficos de alta resolução. O
Applesoft BASIC possui quatro comandos que manipulam uma tabela de
figuras: DRAW, XDRAW, ROT, SCALE. Assim, se você quiser desenhar
uma figura predefinida na tela de alta resolução, você usa a sintaxe
“DRAW N AT X,Y”, onde N é o número da figura na tabela de figuras, e
X,Y, definem as coordenadas na tela de alta resolução. Por exemplo, se
você tiver uma tabela de figuras com cinco figuras, e quiser desenhar a
figura# 4 na tela na posição X,Y = 120,55, você usa o comando “100
DRAW 4 AT 120,55”. O Applesoft usa então os dados da tabela de figuras
para desenhar a figura na tela de alta resolução.
10. Depois de criar uma forma, você deve pô-la num arquivo de
tabela de figuras se você quiser gravá-la no disco com outras
figuras em uma tabela de figuras. Para fazê-lo, tecle <F> para
o modo “ARQUIVAR”. Quando você tecla <F> pela primeira
vez, você será avisado que “NÃO HÁ ARQUIVO NA MEMÓRIA”.
Isto é para informá-lo de que a única operação que você será
capaz de fazer no modo “ARQUIVAR” é adicionar uma figura
ao arquivo. Tecle a barra de espaço e você estará no modo
“ARQUIVAR”.
11. Você deverá agora estar olhando para a tela de alta resolução.
Como não há figura no arquivo, você vê uma tela vazia exceto
pelos comandos do modo “ARQUIVAR” ná base da tela na ja
nela de texto. Não se preocupe agora com todos os comandos.
Simplesmente tecle <A> para adicionar sua figura de edição
ao arquivo de tabela de figuras. Você será perguntado se quer
inserir ou anexar a figura. Tecle <A> para anexar, embora
pressionando <l> para inserir resultasse a mesma coisa por
que você não tem nenhuma figura presentemente em arquivo.
Quando você tecla <A> (ou <l>) você verá a figura aparecer
na tela de alta resolução. Agora a janela de texto diz a você
que o número de figuras é um e que a figura que você está
vendo no momento é a figurant 1- Discutiremos os outros co
mandos “ARQUIVAR” mais tarde. Agora, tecle a barra de espa
ço para retornar ao modo “EDITAR FIGURA”.
12. Sua figura de edição ainda está intacta na tela de baixa resolu
ção. Se você quiser, você pode editar mais uma figura. Se você
quiser criar diversas figuras que sejam parecidas, você não tem
que desenhar cada uma separadamente. Prepare-se para criar
uma segunda nova figura depois de teclar <C> para apagar a
tela (você será perguntado para certificar-se se realmente quer
a tela apagada).
13. Com uma tela limpa diante de você, crie outra figura.
14. Coloque a segunda figura no arquivo. Tecle <F> para modo
“ARQUIVAR”. Você verá a tela de alta resolução com a primei
ra figura que você criou. Tecle <A> para juntar a segunda fi
gura ao arquivo de tabela de figuras. Você agora tanto pode
anexar a segunda figura, ó que a fará figura# 2; ou você pode
inserir a segunda figura que a fará figura# 1 e faz a anterior fi-
gura#2. A janela de texto mostra agora que você tem duas figu
ras no arquivo. Pressionando as teclas das setas, você pode se
lecionar a figura que você quer ver. Tecle a barra de espaço
para voltar ao modo “EDITAR FIGURA”.
15. Grave a tabela de figuras para o disco. Para tanto, tecle <S>
para ir para o modo “COMANDO DOS”. No modo “COMANDO
DOS” aparece um menu. Agora simplesmente tecle <S> para
gravar o arquivo da tabela de figuras. Ser-lhe-á perguntado o
nome do arquivo. Digite “FIGURAS.TESTE” e tecle < RE
TURN >. Seu arquivo de duas figuras está agora gravado no
114 Jogos de Ação para o Apple
Controle do Cursor
Para mover a figura de edição inteira para uma nova posição na tela
de edição, use os seguintes comandos:
<— (seta esquerda): Movimenta a figura de edição para a esquerda. Se
a figura sair da tela pela esquerda, ela reaparecerá do lado direito.
—> (seta direita):.Movimenta a figura de edição para a direita. Se a figura
sair da tela pela direita, ela reaparecerá pelo lado esquerdo.
CTRL-K ou tecla da seta para cima: Movimenta a figura de edição para
cima. Se a figura sair pela parte superior da tela, ela reaparecerá na
parte inferior.
CTRL-J ou tecla da seta para baixo: Movimenta a figura de edição para
baixo. Se a figura sair pela parte inferior da tela, ela reaparecerá na
parte superior.
Existem diversas razões para movimentar a figura de edição na tela:
1. Se você estiver criando ou editando uma figura e você fica sem
espaço em uma das bordas da tela de edição, você pode movi
mentar a figura para longe daquela borda para ter mais espaço.
2. Se você quiser juntar duas ou mais figuras em uma única figura,
você pode movimentar a presente figura de edição para uma no
va posição. Então lance na tela de edição uma figura previamente
definida; A seção dos comandos no modo “ARQUIVAR” explica
como fazê-lo.
Editor de Tabela de Figuras 117
MODO ARQUIVAR
FIGURÁ12.1
MAPA DA MEMÓRIA DO EDITOR DE TABELA DE FIGURAS
Endereços Endereços
decimais hexadecimais
ROM
41952 $C000
ProDOS (ou DOS)
38400 $9600
ARQUIVO (dados) da Tabela de Figuras
31488 $7B00
Buffer do índice da Tabela de Figuras
30976 $7900
Programa EDITOR DE TABELA DE FIGURAS
16384 $4000
Tela 1 de Alta Resolução
8192 $2000
LR.VECTOR.DRAW*
7936 $1F00
AMPER.ASE*
7168 $1C00
Espaço do Usuário
5888 $1700
FIGURA DE EDIÇÃO (dados)
4352 $1100
Buffer de Dados.
2158 $09D6
SHAPE.COMP*
2048 $0800
Tela de Texto e de Baixa Resolução
1024 $0400
Ponteiros do DOS
976 $03D0
Espaço do Usuário
768 . $0300
Buffer de Entrada
512 $0200
Pilha (Stack)
256 $0100
Página Zero
0 $0000
10 REM ************************
20 REM * EDITOR DE TAB. FIG. *
30 REM * BY SCOTT ZIMMERMAN *
40 REM * COPYRIGHT (C) 1985 *
50 REM * COMPUTER EXPRESSIONS *
60 REM * 1129 EAST 470 NORTH *
70 REM * OREM, UTAH 84057 *
80 REM ************************
90 REM
100 HIMEM: 30975: TEXT : HOME
120 IF PEEK (104) < > 64 THEN !
POKE 103,
1: POKE 104,64: POKE 16384, 0-: PRINT
CHR$ (4);"RUN ED.TAB.FIG."
140 DEF FN P(A) = PEEK (A) + PEEK (A +
1) * 256
160 DEF FN LB(A) » A ” FN HB(A) » 256
180 DEF FN HB(A) = INT (A / 256)
200 PR$ = "JOGOS.ACAO":L => 7184: IF PEEK:
(L> < > 201 THEN PRINT CHRS (4);"BRUN
AMPER.ASE II
2720 TL = 1: RETURN
3000 GOSUB 9200:NF = O: IF NS > O THEN NF =
1: GOTO 3080
3020 HOME :N1 = 0
3040 & TI,22: & C40: FLASH : PRINT "NAD HA ARQUIVO"
: NORMAL : PRINT " NA MEMÓRIA AGORA"
3060 & T23,24: PRINT "TECLE <ESPAÇO>: ";: GET
Aí: PRINT Aí
3080 HGR : ROT= O: SCALE= 1: HCOLOR= 3:X3 =
125:Y3 = 75
3100 HOME : & Ti,21: PRINT "# FORMAS:";: INVERSE
: PRINT NS;: NORMAL
3120 & T29,21: PRINT "VENDO #:”;: INVERSE
: PRINT Ni;: NORMAL
3140 & T13,2Í: INVERSE : PRINT "F";: NORMAL
: PRINT STATUS ARQ.";
3160 & Tl,22: INVERSE : PRINT "A";: NORMAL
: PRINT ":ADICIONAR FIG. AO ARQ.";
3180 & Tl,24: INVERSE : PRINT "V";: NORMAL
: PRINT ":SOBREPOR FIG.ARQ. P/ ED";
3200 & Tl,23: INVERSE : PRINT "L";: NORMAL
: PRINT CARREGAR FIG.ARQ. P/ ED";
3220 & T27,22: INVERSE : PRINT NORMAL
: PRINT "INVERSE ; PRINT :
NORMAL : PRINT ":PROX FIG";
3240 & T27,23: INVERSE : PRINT "S";: NORMAL
: PRINT ":SELEC. FIG.#";
3260 & T27,24: INVERSE : PRINT "D";: NORMAL
: PRINT ":APAGAR”;
3280 POKE 232, FN LB(SF): POKE 233, FN HB(SF)
3300 IF NF THEN DRAW N1 AT X3,Y3
3320 KB = PEEK ( - 16384): IF KB < 136 THEN
3320
3340 POKE - 16368,0
3360 IF NF THEN 3400
3380 GOTO 3520
3400 IF KB = 136 THEN 3640
3420 IF KB = 149 THEN 3680
3440 IF KB = 196 THEN 11000
3460 IF KB = 204 THEN 3720
3480 IF KB = 214 THEN 3840
3500 IF KB = 211 THEN 3880
3520 IF KB = 160 OR KB = 141 THEN 3600
Editor de Tabela de Figuras 131
•terror 8080.
8080 PRINT : PRINT "ERRO #" ;PE;". VERIFIQUE
S£U MANUAL PRODOS": & Tl,18: PRINT
" TECLE ALGP P/ CONTINUAR: "jf: GET
AS: PRINT AS: GOTO 8100
8090 GÜSUB 9200'
8100 HIMEM:..30975: TEXT : HOME ; & C40: INVERSE
: PRINT ", CQMANDQ DOS ": NORMAL
8110 GqSÚB 9120
8120 St TÍ,5: PRINT ; PRINT : HTAB 2: INVERSE
i PRINT ”P.";x NORMAL : PRINT " : PREFIXO
íCORRENTE: /";PRS;")"
8130 PRINT- : HTAB 2: INVERSE : PRINT "C"; :
NORMAL : PRINT " : CATALOGAR (POR DRIVE
DU_-.PREFI.XO) "
8140 PRINT-: HT-AB 2s • INVERSE PRINT "L";:
NORMAL : PRINT " : CARREGAR UM ARQUIVO DE
FIGURAS"-
8150 PRINT ; HTAB 2: INVERSE : PRINT "S";:
NORMAL : PRINT " : GRAVAR ARQUIVO DE FIGS.
DA MEMÓRIA"
8160 PRINT : HTAB 4: PRINT "<- TECLE UMA LETRA
ESPAÇO >■RETORNA"; : HTAB 2: GET AS:
PRINT AS
134 Jogos de Ação para o Apple
3450 LF = I - FILE + 1
5460 SF = FILE:EA = LF + SF - 1':
S470 POKE 216,0:Nl = 1: GR :NS = PEEK (SF):
NF = 1: GOTO 3080
8480 HOME : GR : POKE 34,20: GOSUB 9220: POKE
216,0: GOTO 1000
8490 HONE : & T1.5: & 040: INVERSE : PRINT
"GRAVAR ARQUIVO DE FIGURAS P/ 0 DISCO"
: NORMAL : Zt Tl,20: PRINT "TECLE <RETURN> P/
SAIR": PRINT : PRINT "DRIVE CORRÉNTE E /";PR$
8500 IF NS = 0 THEN & Tl,13: & C40: FLASH
: PRINT " NAO POSSO GRAVAR! ": NORMAL :
PRINT : & C40: PRINT "NAO HA FIGURA NO
ARQUIVO!";: INPUT " ";F$:F$ *= "":
GOTO 8520
8510 & Tl,13: INPUT "NOME DO ARQUIVO: ";Fí
3520 IF F$ = "" THEN 8100
8530 PRINT CHRS (4);"BSAVE/";PRS;"/";F$;",
A";SF;",L";LF
8540 GOTO 8100
9000 CC = CC + 1: IF CC = 1 THEN Cl = SCRN ( I
X,Y): COLOR= 15: PLOT X,Y:XO = X:YO =
Y
9020 RETURN
9040 COLOR= Cl: IF CC = CL - C2 THEN PLOT
XO,YO
9060 IF CC = CL THEN CC = 0
9080 RETURN
9100 COLOR= Cl: PLOT XD,YD:CC = O: RETURN
9120 & Tl,21: CALL - 958: INVERSE : & C40:
PRINT " STATUS DO ARQUIVO DE FIGURAS ":
NORMAL
9140 PRINT "N# DE FIGURAS:";: INVERSE1:
PRINT NS;: NORMAL : HTAB 26: PRINT "(MAX
255) "
9160 PRINT "COMPRIM. DO ARQ.:";; INVERSE :
PRINT LF;: NORMAL : HTAB 26: PRINT "(MAX
6820)": RETURN
9200 A = PEEK (6):B = PEEK (7): POKE 6,40:
POKE 7,40: CALL SC:ES » FN P(6): POKE
6,A: PDKE 7,B:LN = ES - SHAPE + 1: RETURN
9220 A = PEEK (25):B = PEEK (26): POKE 25,
0: POKE 26,17: CALL VD: POKE 25,A: POKE
26,B: RETURN
136 Jogos de Ação para o Apple
1 ***********************************************
2 *
3 * AMPER.ASE
4 *
5 * By S. Scott Zimmerman
6 *
7 * Copyright (c) 1985
8 * Computer Expressions
9 * 1129 East 470.North
10 ★ Orem, Utah 84057
11 ★
12 * Assembler: Merlin
13 ★
14
15
16 ORG $1C00
17
18 ***********************************************
19 * Variable and constant:
20
21
22 ROWNUM EQU 7
23 NCHAR EQU 9 ■
24 ROW EQU $1F
25 SCRNEND = $27 ;End of row or column
26
27 ★★************ ★*★★*★*****★★★★***★****★**★★*★★★★
28 * Monitor & Applesoft locations
29 ★**********************************************
30
31 CH EQU $24
32 AIL EQU $3C
33 A1H EQU $3D
34 A2L EQU $3E
35 A2H EQU $3F
36 A4L EQU $42
37 A4H EQU $43
38 LINNUM EQU $50
39 CHRGET EQU $B1
40 TXTPTR EQU $B8
41 AMPER EQU $3F5
42 ERROR EQU $D412
43 FRMEVL EQU $DD7B
44 GETADR EQU $E752
45
46 PLOT EQU $F800
47 SETCOL EQU $F864
48 SCRN EQU $F871
.49
50 GETBYTC EQU $E6F5
138 Jogos de Ação para o Apple
210
211 * Restore bottom line to the top:
212
1CCD: A0 27 213 LDY fSCRNEND
1CCF: B9 8D 1E 214 B0T2T0P LDA, BUFFER,Y /Get the color
1CD2: 20 64 F8 215 JSR^ SETCOL ;Set it for plot
1CD5: A9 00 216 LDA #0 ;Set top row
1CD7: 20 00 F8 217 JSR PLOT ;And plot the color
1CDA: 88 218 DEY ;Go to next left column
1CDB: 10 F2 219 BPL BOT2TOP ;Still >- zero?
220
1CDD: 60 221 RTS /End of scroll DOWN
222
223 **************************************************
224 * Scroll the Lo-Res screen RIGHT: *
225 **************************************************
226
1CDE: 20 BI 00 227 RIGHTSCL JSR CHRGET
'v 228
1CE1: A0 27 229 LDY fSCRNEND
1CE3: A2 27 230 LDX fSCRNEND ;Get the row index
1CE5: 8A 231 TXA
1CE6: 20 71 F8 232 SAVERIT JSR SCRN
1CE9: 9D 8D 1E 233 STA BUFFER,X
1CEC: CA 234 DEX ;Gc up one row
ICED: 8A 235 TXA /Put row in accumulator
1CEE: 10 F6 236 BPL SAVERIT /Not $FF so continue
237
238 f Move the dots right one on screen:
239
1CF0: A0 26 240 LDY fSCRNEND-1 ;Set to next-to-last col
1CF2: A2 27 241 LDX fSCRNEND ;Set to last row
1CF4: 8A 242 TXA ;Put row in accum
243
1CF5: 20 71 F8 244 RITLOOP JÇR SCRN
ÍCF8: 20 64 F8 245 JSR SETCOL
1CFB: C8 246 ÍNY /Go right a column
1CFC: 8A 247 TXA /Restore the row
1CFD: 20 00 F8 248 JSR PLOT
1D00: 88 249 DEY /Restore original column
1D01: CA 250 DEX /Move up to next row
1D02: 8A 251 TXA ;Put row in accum
1D03: 10 F0 252 BPL RITLOOP /Loop if row not < 0
253
1D0S: A2 27 254 LDX fSCRNEND /Reset last row
1D07: 8A 255 TXA
1D08: 88 256 DEY /Go left a column
1D09: 10 EA 257 BPL RITLOOP /#eep goin if ndt < 0
258
142 Jogos de Ação para o Apple
363 *
364 * Calculate the proper tab for centering
365 ★
1D97: 38 366 CALTAB SEC /Calc difference between
1D98: A5 07 367 LDA ROWNUM ; the no. chars per row
1D9A: ES 09 368 ’ SBC NCHAR ; and no. chars in strg
1D9C: 4A 369 LSR /Divide the result by 2
1D9D: 85 24 370 STA CH /Stuff into mon HTAB val
1D9F: A5 07 371 LDA ROWNUM /Check if 20 chars/row
1DA1: C9 14 372 CMP #20 /Is it 20?
1DA3: D0 05 373 BNE END /No, so go to the end
1DA5: A5 24 374 LDA CH /Yes, so "undivide" by 2
1DA7: 0A 375 ASL / i.e., multiply by 2
1DA8: 85 24 376 STA CH / since chars twice wide
1DAA: 60 377 END RTS
378
379 **************************************************
380 * MOVE memory: *
381 **************************************************
382
1DAB: 20 59 1E 383 MEMMOVE JSR GETPARM /Get the input parms
384
385 >>> COMPARE. A1L/A4L
1DAE: A5 3C 385 LDA AIL
1DB0: C5 42 385 CMP A4L
1DB2: A5 3D 385 LDA A1L+1
1DB4: E5 43 385 SBC A4L+1
385 <<<
1DB6: 90 05 386 BCC MOVEIT /If up, no use MON rtn
387
1DB8: A0 00 388 LDY #0 /MOVE needs Y=0
1DBA: 4C 2C FE 389 JMP MOVE /Exit thru monitor rtn
390
1DBD: 38 391 MOVEIT SEC /Calculate new end adrs
1DBE: A5 3E 392 LDA A2L
1DC0: E5 3C 393 SBC AIL’'
1DC2: 48 394 PHA
1DC3: A5 3F 395 LDA A2H
1DC5: E5 3D 396 SBC A1H
1DC7: AA 397 TAX /Save HOB in X
1DC8: 18 398 CLC
1DC9: 68 399 PLA
1DCA: 65 42 400 ADC A4L
1DCC: 85 42 401 STA A4L
IDCg: 8A 402 TXA
1DCF: 65 43 403 ADC A4H
1DD1: 85 43 404 STA A4H
405
1DD3: A0 00 406 LDY #0 /Set the dummy variable
1DD5: Bl 3E 407 MVLOOP LDA (A2L),Y /Get old location, top
1DD7: 91 42 408 STA (A4L),Y /Store at new location
409 >>> COMPARE. A1L/A2L
Editor de Tabela de Figures 145
418 **************************************************
419 * ADD a constant to a range of memory: *
420 **********************************************
421
IDF 7: 20 59 IE 422 ADD JSR GETPARM {Get the input data
1DFA: A0 00 423 ADDLOOP LDY «0 {Zero the dummy var
1DFC: 18 424 CLC {Prep for addition
1DFD: Bl 3C 425 LDA (A1L),Y {Get the LOB
1DFF: 65 42 426 ADC A4L {Add LOB
1E01: 91 3C 427 STA (AIL) ,Y {Store the result
1E03: C8 428 INY {Go to the next byte
1E04: Bl 3C 429 LDA (A1L),Y {Get the HOB
1E06: 65 43 430 ADC A4H {Add the HOB
1E08: 91 3C 431 STA (A1L),Y {and store
1E0A: 18 432 CLC {Increment by two
1E0B: A5 3C 433 LDA AIL
1E0D: 69 02 434 ADC «2
1E0F: 85 3C 435 STA AIL
1E11: A5 3D 436 LDA A1H
1E13: 69 00 437 ADC #0
1E15: 85 3D 438 STA A1H *
1E17: A5 3C 439 LDA AIL ,-Are we done?
1E19: C5 3E 440 CMP A2L
IE IB: A5 3D 441 LDA A1H
1E1D: E5 3F 442 SBC A2H
1E1F: 90 D9 443 BCC ADDLOOP
1E21: A5 3C 444 LDA AIL {Are they equal?
1E23: C5 3E 445 CMP A2L
1E25: F0 D3 446 BEQ ADDLOOP {Not equal,so loop again
146 Jogos de Ação para o Apple
x **************************************************
2 * *
3 * LO-RES VECTOR DRAW *
4 * ★
5 * By S. Scott Zimmerman *
6 * *
7 * Copyright (c) 1985 *
8 * Computer Expressions *
9 * 1129 East 470 North *
10 * Orem, Utah 84057 *
11 * ★
12 * Assembler: Merlin *
13 * *
14 ***************************************************
15
16 ORG $1F00 ;üp by HR screen
17
18 **************************************************
19 * Variables.: *
20 **************************************************
21
22 SHPBYTE EQU $19 ;1A Pointer to shape
23 GRPTR EQU $1B ;ic Pointer to GR screen
24 COLINDX EQU $1D /Index for the column
25
26 **************************************************
27 * Constants: *
28 **************************************************
29
30 UPCOL = $0C /Color green for hi box
31 LOCOL = $C0 ;Green for low box
32 DIMMAX = $27 ;Max line or column val
33
34 **************************************************
35 * Definition of MACRO: *
36 **************^***********************************
37
38 INCR MAC
39 INC ]1
40 BNE NC
41 INC ] 1+1
42 NC <<<
43
44 ************************* *************************
45' * Initialization: *
46 **************************************************
47
1F00: A5 19 48 LDA SHPBYTE ;Get and save values
1F02: 48 49 PHA ; so zero page worç’t be
1F03: AS 1A 50 LDA SHPBYTE+1 ; disturbed by prgm
Editor de Tabela de Figuras 149
1F05: 48 51 PHA
52
1F06: A2 00 53 LDX «0 /Zero the row index
1F08: 86 1D 54 STX COLINDX /Zero the column index
55
56 **************************************************
57 * Main Program: *
58 **************************************************
59
60 * Get and evaluate shape byte:
61
UX
1F0A: A0 00 62 SHPLOOP LDY x #0 ;Zero the dummy index
1F0C: BI 19 63 LDA (SHPBYTE), Y ;Get the shape byte
1F0E: F0 26 64 BEQ END ;Yes, so go end up prgm
65
1F10: 8D C9 1F 66 STÂ VECTVAL ;Save for later recall
1F13: 20 3D 1F 67 JSR EVALUATE /•Evalute 3 LSB’s
68
1F16: AD C9 1F 69 LDA VECTVAL ;Get byte value again
1F19: 4A 70 LSR ;Move to LSB locations
1F1A: 4A 71 LSR
1F1B: 4A 72 LSR
1F1C: 8D C9 1F 73 STA VECTVAL /•Store new shifted value
1F1F: 20 3D 1F 74 JSR EVALUATE /•Evaluate middle 3-bit
75
1F22: AD C9 1F 76 LDA VECTVAL ;Get byte value again
1F25: 4A 77 LSR ;Move to LSB locations
1F26: 4A 78 LSR
1F27: 4A 79 LSR
1F28: F0 03 80 BEQ NEXTBYT ;If it’s 0/ go to next
1F2A: 20 3D 1F 81 JSR EVALUATE /Evaluate 2 MSB’s
82
83 NEXTBYT >>> INCR.SHPBYTE ;It's zero, so ignore
1F2D: E6 19 83 INC SHPBYTE
1F2F: D0 02 83 BNE NC
1F31: E6 IA 83 INC SHPBYTE+1
83 NC <<<
1F33: 4C 0A 1F 84 JMP SHPLOOP / and cont to next byte
85
1F36: 68 86 END PLA /•Restore zero pg values
1F37: 85 IA 87 STA SHPBYTE+1
1F39: 68 88 PLA
1F3A: 85 19 89 STA SHPBYTE
1F3C: 60 90 RTS /End of program
91
92 **************************************************
93 * EVALUATE subroutine: *
94 **************************************************
95
1F3D: 48 96 EVALUATE PHA /Save the vector value
1F3E: 29 04 97 AND f%00000100 /Plot a dot?
1F40: F0 29 98 BEQ MOVE /No, go move vector
150 Jogos de Ação para o Apple
1 **************************************************
2 * *
3 * SHAPE.COMP *
4 * *
5 * By Mark A. Larson *
6 * *
7 * Copyright (c) 1985 *
8 * Computer Expressions ★
9 ★ 1129 East 470 North *
10 * Orem, Utah 84057 *
11 * *
12 * Assembler: Merlin *
13 * *
.14 **************************************************
15
16 ORG $0800
17 *
18 XDOTS EQU $6
19 BASVECT EQU $6
20 ENDADR EQU $6 ;2 BYTES
21 YDOTS EQU $7
22 MASVECT EQU $7
23 YMAX EQU $8
24 BYTEPOS EQU $9
25 ROWMARG EQU $18
26 SHAPE EQU $19 ;2 BYTES
27 XPOS EQU $1B
28 RESULT1 EQU $1C
29 RESULT2 EQU $1D
30 NSKIPS EQU $1E
31 SUBNUM EQU $1F
32 TEMP EQU $1F
33 R0W1LT EQU $F9
34 R0W1RT EQU $FA
35 R0W2LT EQU $FB
36 R0W2RT EQU $FC
37 MARGIN EQU $1000
38 MARGLOW EQU $02 ;MARGIN+2 (LOW)
39 MARGHI EQU $10 ;MARGIN+2 (HIGH)
40 SCRN EQU $F871
41 *
42 *
0800: A9 00 43 LDA #0
0802: 48 44 PHA ;SET Y-COORDINATE
0803: A8 45 TAY ;SET X-COORDINATE
0804: AA 46 TAX ;SET IND TO MARGIN TABLE
0805: 8D 00 10 47 STA MARGIN ;SET L MARG 1ST ROW TO 0
0808: 85 08 48 STA YMAX ;SET f 'ROWS TO 0
080A: F0 36 49 BEQ CLEARRT ;ALWAYS BRANCHES
50 *
Editor de Tabela de Figuras 153
51 *
080C 68 52 READDOT PLA ./READ Y-COORD
080D 48 53 PHA /PUT IT BACK
080E 20 71 F8 54 JSR SCRN /READ DOT AT (Y,A)
0811 C9 0C 55 CMP #12 /IS IT GREEN?
0813 D0 16 56 BNE NEXTDOT ;BRANCH IF NOT
0815 98 57 TYA /X-COORD IN Y-REG
0816 9D 01 10 58 STA MARGIN+1,X ;RESET RT MARGIN
0819 9D 03 10 59 STA MARGIN+3,X ;PRESET R MARG NEXT ROW
081C DD 00 10 60 CMP MARGIN,X /IS LT MARG SET?
081F B0 0A 61 BCS NEXTDOT ;BRANCH IF SO
0821 9D 00 10 62 STA MARGIN,X /SET LT MARG
0824 9D 02 10 63 STA MARGIN+2,X /PRESET L MARG NEXT ROW
0827 68 64 PLA /READ Y-COORD
0828 48 65 PHA /PUT BACK
0829 85 08 66 STA YMAX /RESET BOTTOM MARG
082B C8 67 NEXTDOT INY /NEXT X POS
082C C4 06 68 CPY XDOTS /AT RT END OF LINE?
082E D0 DC 69 BNE READDOT /BRANCH IF NOT
0830 68 70 PLA /Y-COORD
0831 18 71 CLC
0832 69 01 72 ADC #1 /NEXT ROW DOWN
0834 C5 07 73 CMP YDOTS /PAST LAST ROW?
0836 F0 10 74 BEQ CREATE /BRANCH IF SO
0838 48 75 PHA /PUSH Y-COORD
0839 E8 76 INX /POINT INDX TO NEXT ROW
083A E8 77 INX
083B A5 06 78 LDA XDOTS /COORD R EDGE OF MATRIX
083D 9D 00 10 79 STA MARGIN,X /PUT IT IN LT MARG
0840 A9 00 80 LDA #0
0842 9D 01 10 81 CLEARRT STA MARGIN+1,X /R MARG TO L EDGE MATRIX
0845 A8 82 TAY /X-COORD TO 0
0846 F0 C4 83 BEQ READDOT /ALWAYS
84 ★
85 ★
0848 : A9 11 86 CREATE LDA #$11
084A : 85 1A 87 STA SHAPE+1 /SET ADR SHP TABL (HIGH)
084C : A9 00 88 LDA #$0
084E : 85 19 89 STA SHAPE /ADR (LOW)
0850 : 85 IB 90 STA XPOS /INIT X-COORD OF READ
0852 : 48 91 PHA /SET Y-COORD
0853 : 85 09 92 STA BYTEPOS /# VECS CUR BYTE OF SHP
0855 : ÀA 93 TAX /INIT MARGIN TABLE INDEX
0856 : 91 19 94 STA (SHAPE) , Y /ZERO 1ST BYTE IN TABLE
0858 : 4C 11 09 95 JMP JUMPIN
085B : A5 FA 96 LTMARG LDA ROW1RT
085D : 85 18 97 STA ROWMARG /FIN POINT OF THIS ROW
085F : A4 F9 98 LDY ROW 1 LT
0861 : A5 IB 99 LDA XPOS /POINT TO START SKIPPING
0863 : 84 IB 100 STY XPOS /STARTING X OF THIS ROW
0865 : A2 40 101 LDX #$40 /2 HI BITS NO-PLOT RT
0867 : 86 07 102 STX MASVECT /DIRECTION OF LINE READ
154 Jogos de Ação para o Apple
EXPLICAÇÃO DO PROGRAMA
—------ ------------------------------------------------------------- - - 1»
QUÀDRO 13.1
VARIÁVEIS PRINCIPAIS EM HR. WIPEOUT
VARIÁVEL EXPLICAÇÃO
A Variável geral; também usada na sub-rotina de texto
de alta resolução
AS Variável de entrada; também usada na sub-rotina de
texto de alta resolução
AD Endereço da tabela de formas
CU Número (96) da figura do cursor; usado na sub-rotina
de. texto de alta resolução ■
GN Número de gráficos; índice do ciclo na sub-rotina de
texto de alta resolução
Wipeout de Alta Resolução 161
Contador de Colisões
Pausas de Jogo
MELHORIAS E MODIFICAÇÕES
1 5 10 20 1 5 10 -20
□
■
w -JL.
10
20
1
1-Ú
5
10
204
1 5 10 20
10
Wia • EEEEEEEEEE
204
Wjpeout de Alta Resolução 171
10 REM
20 REM * HR.WIPEOUT *
30 REM BY SCOTT ZIMMERMAN *
40 REM * COPYRIGHT (C) 1985 *
50 REM COMPUTER EXPRESSIONS *
60 REM * 1129 EAST 470 NORTH *
70 REM * OREM, UTAH 84057 *
80 REM
90 REM
190 REM
INTRODUÇÃO:
ARRANJO:
óOO NEXT I
620 FOR I = 1 TO SM
640 X = INT ( RND (1) * 265) + 5
660 Y = INT ( RND (1) * 160) + 15
680 XDRAW M AT X,Y: IF PEEK (234) < > 24
THEN XDRAW M AT X,Y: GOTO 640
700 NEXT I
800 X = 138: Y = 184:MX = 4:MY = 0:S = 99:SN
= 230:81 = S:NP = 26: XDRAW 8 AT X,Y
820 TX = 0:TY = O:Aí = "KLORYONS=": GOSUB 8500
A = KL: GOSUB 8000
840 TX = 214: TY = Os Aí = ,!TEMPO=”: GOSUB 8500:
A = TM: GOSUB 8000
990 REM
CICLO PRINCIPAL:
VERIFICA COLISÃO:
2180 NEXT I
2200 GOTO 15000
2210 REN
APAGA KLORYON:
CRONOMETRO:
3000 TL = TL + 1: IF TL = 12 THEN TM = TM -
1:TL = 0:A = TM:TX = 256:TY = 0: GOSUB
8000: IF TM = 0 THEN 15000
5000 GOTO 1000
5990 REM
SUB-ROTINAS:
GAME OVER:
10000 & 192,10,2: & 208: & 217: & 223,20: &
217,10: & 223,20: TEXT : HOME : VTAB
10: HTAB 14: PRINT "VOCE GANHOU!!": GOTO
20000
15000 & 180,80,2: & 140,160: TEXT : HOME : VTAB
10: HTAB 14: PRINT "VOCE PERDEU!"
174 Jogos de Ação para o Apple Introdução 9
7000- 66 00 CE 00 D0 00 D6 00 DB 00 EA 00 F8 00 03 01
7010- 10 01 14 01 IC 01 24 01 33 01 3B 01 40 01 45 01
7020- 4A 01 52 01 62 01 6A 01 76 01 81 01 8C 01 99 01
7030- A7 01 AF 01 BE 01 CC 01 DC 01 El 01 EA 01 F2 01
7040- FA 01 03 02 12 02 22 02 31 02 3D 02 4C 02 59 02
7050- 64 02 74 02 84 02 8E 02 99 02 A6 02 AD 02 BD 02
7 060- CD 02 DC 02 E9 02 'F9 02 08 03 16 03 ID 03 2C 03
7070- 3A 03 4A 03 58 03 63 03 6D 03 78 03 7E 03 89 03
7080- 93 03 9A 03 9E 03 A7 03 B3 03 BE 03 CB 03 D7 03
7090- E0 03 ED 03 F9 03 01 04 09 04 14 04 IB 04 28 04
7 0A0- 34 04 40 04 4D 04 59 04 61 04 6C 04 75 04 81 04
70B0- 8C 04 99 04 A4 04 B0 04 BB 04 C6 04 CC 04 D6 04
70C0- DD 04 FA 04 08 05 15 05 24 05 33 05 3E 05 02 00
70D0- 09 36 36 16 06 00 69 FE 6E 06 00 69 FE IE 2D 2D
70E0- IE IF IE 2D 2D IE IF 6E 06 00 09 4E 3F 77 IF 0E
70F0- 2D 0E IF 0E 3F 77 31 00 39 2E 4D IE IE IE IE 4D
7100- 35 37 00 B9 0D FE 0E IE 0D 0D IE DF 0E 6D 06 00
7110- 09 36 06 00 09 IE IE 36 0E 0E 06 00 09 0E 0E 36
7120- IE IE 06 00 09 9F 0D 0D IE 3F 0E 0E 3F IE 0D 0D
7130- DE 06 00 4A 76 39 3F 77 31 06 00 92 4A F6 06 00
7140- 92 2D 2D 06 00 92 92 09 06 00 4A 09 IE IE IE IE
7150- 06 00 29 75 DF 33 4D 35 IF IF 2E 4D FE IB 0E 2D
7160- 06 00 09 3E 0E 36 76 3F 06 00 29 F5 IB 4D 31 IE
7170- F7 IE 2E 2D 35 00 2D 2D F6 3E 4E FE IB 0E 2D 06
7180- 00 49 3E IE 0D FE 33 2D 2D IE 36 00 49 39 3F 37
7190- 2E 2D 0E 36 DF 73 2D 06 00 09 2D DE F3 2E 2D 0E
71A0- DF 33 4D Fl 3F 06 00 2D 2D F6 IE IE 36 06 00 29
71B0- 75 DF 33 4D Fl 3F IE 4D 31 DF 73 2D 06 00 29 75
71C0- DF 33 4D 31 3F 77 09 IE IE 3F 06 00 52 Bl 06 00
71D0- 4D 31 DF 33 2D 2D FE IB 6E 09 06 00 52 Bl F6 06
71E0- 00 49 IE IE IE 0E 0E 0E 06 00 12 2D 2D 16 3F 3F
71F0- 06 00 71 0E 0E IE IE IE 06 00 29 75 DF 73 09 IE
7200- B6 06 00 29 75 DF 33 0D 0D 3E FF 4E 39 IF 76 2D
7210- 35 00 09 15 IF 17 4D 31 DF 33 2D 2D FE IB 6E 09
7220- 06 00 2D AD DF 33 4D Fl 3F 37 4D 3.1 DF 33 2D 35
7230- 00 29 AD DF 33 36 4D 11 DF 73 2D 06 00 2D AD DF
7240- 33 4D 31 DF 33 4D 31 DF 33 2D 35 00 2D 2D DE IB
7250- 6E 11 3F .37 36 2D 2D 06 00 2D 2D DE IB 6E 11 3F
7260- 37 36 06 00 29 AD DF 33 4D 11 3F IF 6E 09 FE IB
7270- 0E 2D 06 00 4D 31 DF 33 4D 31 3F 3F 6E 09 FE IB
7280- 6E 09 06 00 2D 2D DE 36 36 9F 2D 2D 06 00 29 2D
7290- IE 36 DF 6A 31 DF 0E 35 00 4D Fl DF 6E IE 37 0D
72A0- 15 DF 6E 09 06 00 36 36 36 2D 2D 06 00 4D 31 FF
176 Jogos de Ação para o Apple
72B0- 37 0D 0D FE 1F 6E 09 FE 1B 6E 09 06 00 4D 31 DF
72C0- 33 6D 31 1F 1F 6E 29 FE 1B 6E 09 06 00 29 AD DF
72D0- 33 4D 31 DF 33 4D 31 DF 73 2D 06 00 2D AD DF 33
72E0- 4D 31 DF 33 2D F5 1B 36 00 29 AD DF 33 4D 31 DF
72F0- 33 0D 0D 1E DF 0E 6D 06 00 2D AD DF 33 4D 31 DF
7300- 33 2D 35 DF 6E 09 06 00 29 AD DF 33 4D 3A 77 09
7310- FE 1B 0E 2D 06 00 2D 2D DE 36 36 36 00 4D 31 DF
7320- 33 4D 31 DF 33 4D 31 DF 73 2D 06 00 4D 31 DF 33
7 330- 4D 31 DF 33 4D F1 1F 0E 06 00 4D 31 DF 33 4D 31
7340- 1F 1F 6E 0D 3E 1F 37 4D 31 00 4D 31 DF 73 0D 1E
7350- 17 0D 15 DF 33 4D 31 00 4D 31 DF 33 4D F1 1F 0E
7360- 36 06 00 2D 2D BE 1E 17 1E 2E 2D 35 00 2D F5 3B
7370- 2E 3E 2E 3E 2E 2D 06 00 72 0E 0E 0E 06 00 29 2D
7380- 3E 2E 3E 2E 3E DE 2D 35 00 09 0E 3F 1E 0D 0D DE
7390- 36 36 00 92 92 2A 2D 2D 35 00 49 1E 06 00 52 75
7 3A0- 3E F7 4D 0E 1F 37 00 36 0D 75 DF 37 4D 31 DF 37
73B0- 0D 35 00 52 2D 0E DF 33 6E 09 1E 3F 06 00 49 31
73C0- FE F7 4D 35 DF 33 4D 35 1F 37 00 52 2D 0E DF 73
73D0- 49 3F 3F 76 2D 06 00 09 75 DF 0E 3F 0E 36 36 00
73E0- 52 6D 3E DF 6E 29 FE 77 09 1E 3F 06 00 36 2D 75
73F0- DF 33 4D 31 DF 33 4D 31 00 09 16 77 36 0E 3F 06
7400- 00 49 16 77 36 FE 73 35 00 36 4D F1 DF 6E 0E 1F
7410- 37 4D 31 00 29 36 36 F6 2D 06 00 12 6D 0E 1F 1F
7420- 6E 0D FE 1F 6E 0D 06 00 12 0D 75 DF 37 4D 31 DF
7430- 33 4D 31 00 52 2D 0E DF 33 4D 31 DF 73 2D 06 00
7440- 12 0D 75 DF 37 4D 31 DF 77 09 FF 36 00 52 6D 3E
7450- DF 6E 09 3E DF 0E 6D 36 00 12 0D 75 DF 37 36 06
7460- 00 52 49 3F F7 0E 2D 0E 1E 3F 37 00 0A 4E 3F 77
7470- 36 4D 1E 37 00 12 4D 31 DF 33 4D 31 FF 73 6D 06
7480- 00 12 4D 31 DF 33 4D F1 1F 0E 06 00 12 4D 31 1F
7490- 1F 6E 0D FE 1F 0E 0D 06 00 12 4D F1 1F 0E 0E 1F
74A0- 1E 4D 31 00 12 4D 31 DF 33 40 F1 1F 0E 1E 37 00
74B0- 12 2D 2D 1E 1E 1E 1E 20 2D 06 00 09 2D DE 73 1E
74C0- 77 F1 0E 2D 06 00 09 36 36 36 36 00 2D 0E 1E 4E
74D0- F7 0E 1E 3F 06 00 29 4D 1E FF 33 00 49 2D 2D 2D
74E0- 3E 3F 3F 37 2D 2D 2D 3E 3F 3F 37 2D 2D 2D 3E 3F
74F0- 3F 37 2D 2D 2D 3E 3F 3F 37 00 29 3E 1E 2D 35 3F
7500- 37 2D 35 3F 37 4D 06 00 4D 3E 3F 2E 2D 3E 3F 2E
7510- 2D 1E 77 37 00 2D 2D 75 39 3F 3F 37 2D 2D 2D DE
7520- 3F 3F 37 00 09 2D 2D F5 3F 3F 3F 2E 2D 2D 75 3F
7530- 3F 37 00 09 75 39 3F 3F 2E 2D 2D DE 37 00 49 31
7540- 0E 3F 1E 6D 75 39 FF 1B 3F 4E 6D F5 3F 0E 36 00
7550- 49
CAPÍTULO 14
NUCLEAR FALLOUT DE
ALTA RESOLUÇÃO
178 Jogos de Ação para o Apple
QUADRO 14.1
VARIÁVEIS PRINCIPAIS EM HR. NUCLEAR. FALLOUT
VARIÁVEL EXPLICAÇÃO
AD Endereço da tabela de figuras
FP( ) Matriz de indicadores para partículas; um elemento
será 1 se a partícula está ativa, 0 se inativa
HB( ) Byte mais significativo na definição da função
LB( > Byte menos significativo n$ definição da função
MX Movimento do prato ao longo da.coordenada X;
quantidade sorrjada a X para posição seguinte
PC Contagem de partículas; índice para partícula atual
PN ■ Número da partícula atualmente ativa
S2X Velocidade do prato (movimento incremental) com
teclas X e Z
SX Velocidade do prato (movimento incremental) com as
teclas, e.
SY Velocidade ná direção Y da partícula cadente
UF Indicador “para cima”, 1 durante a fase crescente, 0
durante a decrescente
X Coordenada X do prato
XL Coordenada X antiga do prato
XP( ) Coordenada X das partículas,
Y Coord,enada Y do prato
YL Coordenada Y antiga da.partícula
YP( ) Coordenada Y das partículas
EXPLICAÇÃO DO PROGRAMA
ligado num programa anterior e então rodar o Nuclear Fallout de Alta Re
solução sem voltar a ligá-lo. O &RESUME serve como uma segurança pa
ra que você tenha som quando desejar.
Instruções ao Usuário
MELHORIAS E MODIFICAÇÕES
1
1X H r »-i 5
10
1 1 — — 20
10
20J
Nuclear Fallout de Alta Resolução 185
Listagem14.1: HR.NUC.FALLOUT
10 REM ************************
20 REM it HR.NUC.FALLOUT *
30 REM * BY SCOTT ZIMMERMAN *
40 REM * COPYRIGHT (C) 1985 *
50 REM * COMPUTER EXPRESSIONS *
60 REM * 1129 EAST 470 NORTH *
70 REM * OREM, UTAH 84057 *
80 REM ************************
90 REM
190 REM
INTRODUÇÃO:
ARRANJO:
CICLO PRINCIPAL;
MOVE PARTÍCULAS;
SUB-ROTINAS:
FIM DO JOGO:
EXPLOSÃO:
INSTRUÇÕES:
7000- 04 00 0A 00 0D 00 17 00 21 00 49 31 00 2D 2D 2D
7010- 2D 2D 2D 2D 06 00 09 49 0D 56 F9 IB IF 56 4D 06
7020- 00 09 4D Bl 09 DF DB IB 0E 4D Bl DB 6B 49 0D 06
7030- 00
CAPITULO 15
RACQUET
Racquet 191
DIGITANDO RACQUET
EXPLICAÇÃO DO PROGRAMA
QUADRO 15.1
VARIÁVEIS PRINCIPAIS EM RACQUET
VARIÁVEL EXPLICAÇÃO
BP Indicador de bola em jogo (1 para ativo, 0 para inativo)
CL Variável usada no controle do paddle para fazer com
que a raquete pare na borda da tela
CN Indicador de controle (1 para controle de paddle, 0 para
teclado)
DS Atraso para variável de serviço
MO Movimento da raquete na esquerda [PDL(O) ou
teclado]
Ml Movimento da raquete na direita [PDL(1) ou teclado]
MX Movimento da bola ao longo da coordenada X
MY Movimento da bola ao longo da coordenada Y
OO Posição antiga da raquete esquerda (na direção Y)
01 Posição antiga da raquete direita (na direção Y)
PO Valor de PDL(O)
P1 Valor de PDL(1)
RS Tamanho da raquete (em pixels)
S Indicador de serviço (0 para jogador na esquerda:
1 para direito)
50 Escore do jogador da esquerda
51 Escore do jogador da direita
X Coordenada X da bola
XO Coordenada X antiga da bola
YO Coordenada Y da raquete esquerda
Y1 Coordenada Y da raquete direita
Y Coordenada Y da bola
YO Coordenada Y antiga da bola
194 Jogos de Ação para o Apple
Bola Saltitante
Quando você atira uma bola no chão, você tem uma boa idéia de
como a bola irá pular (desde que a superfície seja suave e plana). A ex
periência ensina-lhe que se você jogar a bola diretamente para baixo, ela
irá pular para cima. Se você jogá-la com um pequeno ângulo, pulará com
ângulo pequeno.e continuará na mesma direção.
Considere o movimento da bolá em termos das coordenadas X,Y. Se
você atirar a bola em um dado ângulo nas direções + X e + Y, ela pula
fora do chão (ignorando gravidade, fricção, resistência do ar, inelasticida-
de etc.) na mesma taxa e direção ao longo da coordenada X, e na me^ma
taxa ao longo da coordenada Y mas na direção Y oposta.
Em termos de código de programa, isto quer dizer que se uma bola
está indo em um ângulo da esquerda para a direita (+X) e do topo para
a base (+Y) na tela de alta resolução do Apple, a bola pula fora da base
da tela, movendo na mesma direção X mas mudando de positivo (+) para
negativo (-) na drieção Y.
As linhas 4040 e 4060 mostram isso. A linha 4040 é o passo da ani
mação que calcula a nova posição da bola. A linha 4060 verifica se a bola
está no topo ou na base da tela, quér dizer, se deveria rebater. Se a bola
deveria pular, então o incremento da mudança na direção Y, MY, muda
seu sinal (de positivo para negativo e vice-versa).
MELHORIAS E MODIFICAÇÕES
10 REM ************************
20 REM * RACQUET *
30 REM * BY BRENT ZIMMERMAN *
40 REM * COPYRIGHT (C) 1985 *
50 REM * COMPUTER EXPRESSIONS *
60 REM * 1129 EAST 470 NORTH *
70 REM * OREM, UTAH 84057 *
80 REM ************************
90 REM
190 REM
INTRODUÇÃO:
ARRANJO
CICLO PRINCIPAL;
VERIFICA BORDAS;
DESENHA RAQUETES;
MOVE BOLAs
)
SUB-ROTINAS:
/
6000 PO » PDL (O) / CL + 1: IF PO > YO + 20
THEN MO = 5: GOTO 6040
6020 IF PO < YO - 20 THEN MO = - 5s GOTO 6040
6030 MO = PO - YO
6040 Pl = PDL (1) / CL + 1: IF Pl > Y1 + 20
THEN Ml = 5: RETURN
200 Jogos de Ação para o Apple
QUADRO 16.1
VARIÁVEIS PRINCIPAIS EM ALIEN DEFENSE
VARIAVEL EXPLICAÇÃO
BC Contagem da bomba; número de bombas explodindo
sobre a cidade
BF Indicação de bomba; BF = 1 se bomba ativa, 0 se
inativa
GN Número do canhão; número de figura para direção
do canhão
MA Incremento de movimento do alienígena
NF Indicador de ruído; NF = 1 se som ligado, 0 se desligado
SC Escore do jogo
SF Indicador de morteiro; SF = 1 se morteiro ativo, 0 se
- inativo-
Alien Defense 203
EXPLICAÇÃO DO PROGRAMA
Chaves Articuláveis
A maioria das chaves, tal como aquela atrás de seu computador, es
tão ligadas quando você as volta para cima e desligadas quando você as
abaixa. Uma chave articulável, porém, é como em muitas TVs; quando
você a aperta, ela liga, se está desligada, ou desliga, se estiver ligada.
As chaves articuláveis são jeitosas pois reduzem o número de co
mandos de computador dos quais precisa se lembrar. Por exemplo, no
Editor de Tabela de Figuras, o comando DOT ON/OFF é a tecla <D>;
portanto, você só precisa se lembrar de umq tecla para ligar ou desligar
os pontinhos (veja Capitulo 12).
Alien Defense 205
EXPRESSÕES BOOLEANAS
Balas Dirigíveis
MELHORIAS E MODIFICAÇÕES
1 1 5 2>0
]L()
-A. L
10
2oJ
Alien Defense 211
212 Jogos de Ação para o Apple
INTRODUÇÃO:
ARRANJO:
CICLO PRINCIPAL:
1020 GET A$
1030 REM
MOVE CANHAO:
ATIRAR BALA:
MOVE BALA:
MOVE ALIENÍGENA:
SOLTA BOMBA:
MOVE BOMBA:
DESENHA CIDADE:
ROTINAS DO SOM:
MOSTRA ESCORE:
EXPLOSÃO DO ALIENÍGENA:
PAGINA DO TITULO:
9060 RETURN
9490 REM
CENTRALIZA TEXTO:
14990 REM
PERDEU O JOGO:
7000- 0A 00 16 00 4A 00 5B 00 6B 00 80 00 82 00 A4 00
7010- C6 00 D2 00 E4 00 4A 49 2D 3E 37 2D 3Ê 37 2D 3E
7020- 37 2D 3E 37 2D 4E 3F 3F 3F IE 2D 2D 2D 2D 3E 3F
7030- 3F 3F F7 2D 2D 2D 2D 2D FE IF IF IF IF 2E 2D 20
7040- 2D 2D 35 3F 3F 3F 3F 3F 06 00 4A 49 2D 3E 37 2D
7050- 3E 37 2D 3E 37 2D 3E 37 2D 06 00 92 29 0E 3F 77
7060- 2D 75 3F 77 2D 75 3F 77 2D 06 00 92 49 49 49 29
7070- 0E 3F F7 2D F5 3F F7 2D F5 3F 37 2D 06 00 92 49
7080- 06 00 49 09 2D 4E 3F 3F 3F IE 2D 2D 20 2D 3E DF
7090- DF 37 2D 2D 2D 2D 3E 3F IF 3F 77 2D 2D 2D FE 3F
70A0- IF 06 00 09 49 29 2D 4E 3F IF IF IE 2D 6D 6D 3E
7000- DF DF F7 0D 0D 2D 2D 35 FF IF 3F 77 20 2D 0D FE
70C0- IF IF 0E 0E 06 00 29 2D 0E 3F 3F 37 2D 2D F5 3F
70D0- 37 00 49 4D 0E DF F7 2B 4D 75 FF IF 0E F7 6B 09
70E0- 0D DE 06 00 49 09 IE 40 09 4E F9 IF FF IF DE 6D
70F0- 09 0D 0D 4E FF IF FF F3 6B 09 4D 6D 4D DE DF DF
7100- DF 73 4D 6D 69 3E IF DF FF 3B IE 4D 6D 69 49 Fl
7110- FB DF 3B 0E 4D F5 DB DB 4D 49 49 09 06 00 49
CAPÍTULO 17
DEATHCHASE
Death' Chase 219
EXPLICAÇÃO DO PROGRAMA
QUADRO 17.1
, VARIÁVEIS PRINCIPAIS EM DEATH CHASE
VARIÁVEL EXPLICAÇÃO
AX( ) Matriz das coordenadas X dos três esqueletos
AY( ) Matriz das coordenadas Y dos três esqueletos
BP Pontos de bônus ganhos depois de cada onda de
ataque
HS O escore máximo gravado no disco
L Nível do jogo (calculado automaticamente)
MN Incremento de movimento para a animação do
esqueleto
MX Movimento do duende ao longo da coordenada X
MY • ■ Movimento do duende ao longo da coordenada Y
NX Moximento do esqueleto ao longo da coordenada X
NY Movimento do esqueleto ao longo da coordenada Y
SC Escore do jogo
SX Coordenada X temporária para o esqueleto
SY Coordenada Y temporária para o esqueleto
TM Valor do cronômetro
TN Número de túmulos
WP Pontos ganhos ao completar uma onda de ataque
WV Número da onda de ataque
X Coordenada X corrénte do duende
X1 Coordenada X antiga do duende
Y Coordenada Y corrente do duende
Y1 Coordenada Y antiga do duende
Inimigos “Inteligentes”
Pontos de Bônus
Em Death Chase, você completa uma onda de ataque depois que seu
duende recolhe um certo número de moedas de ouro. No final de cada
onda de ataque o programa lhe dá um certo número de pontos de bônus.
Como na maioria dos jogos de fliperama, o programa determina estes
pontos de bônus dependendo do seu nível de habilidade.
A seção chamada Onda Completada, as linhas 8000-8240, determina
os pontos de bônus em Death Chase. Especialmente, a linha 8040 dá uma
fórmula matemática que calcula BP (pontos de bônus). A linha ajusta BP
igual a cinco vezes o nível de dificuldade L (para que quanto maior a di
ficuldade, mais pontos você ganha), mais três vezes o número restanté
de segundos TM no relógio do jogo (para que quanto mais rápido você
recolhe as moedas de ouro, mais pontos você ganha), mais quatro vezes
o número WV da onda de ataque (para que quanto mais ondas de ataque
você tenha completado, mais pontos você ganha).
Nos seus jogos de computador, você talvez baseie os pontos de bô
nus não somente no nível de dificuldade, tempo do jogo e onda de ata
que, mas também em fatores como: a velocidade da animação , objetivos
especiais (como acertar um alienígena de bônus), nível do combustível
da nave e tamanho do alvo. Você não deveria dar pontos de bônus pura
mente aleatórios.
222 Jõgos dê Ação para o Apple
MELHORIAS E MODIFICAÇÕES
10 REM ************************
20 REM * DEATH.CHASE *
30 REM * BY STEPHEN ZIMMERMAN *
40 REM * COPYRIGHT (C) 1985 *
50 REM * COMPUTER EXPRESSIONS *
60 REM * 1129 EAST 470 NORTH *
70 REM * OREM, UTAH 84057 *
80 REM **************** ********
90 REM
190 REM
INTRODUÇÃO:
ARRANJO:
CÍCLO PRINCIPAL;
” MOVIMENTO DO GOBLIN:
CRONOMETRO DO TOGO:
MOSTRA ESCORE:
3500 VTAB 22: HTAB 12: PRINT NS;: HTAB 25: PRINT
SC;: HTAB 38: PRINT TM;" »
3520 RETURN
3990 REM
MOVIMENTO DO ESQUELETO:
4000 FOR J = 1 TO 3
4020 MN =. INT (L / 3) + 4:SX = AX (J): SY = AY (J):
NX = 0:NY = O
4040 IF J = 2 THEN 4120
4060 IF SX •< X THEN NX = MN: GOTO 4100
4080 IF SX > X THEN NX = - MN: IF SX < MN THEN
NX = - SX
4100 IF J = 1 THEN 4160
4120 IF SY < Y THEN NY = MN: GOTO 4160
4140 IF SY > Y THEN NY = - MN: IF SY < MN THEN
NY = - SY
4160 AX(J) = NX + SX:AY(J) = NY + SY
228 Jogos de Ação para o Apple
GOBLIN MORTO:
ONDA TERMINADA:
GAME OVER;
7000- 04 00 0A 00 2F 00 31 00 63 00 09 2D 2D 0E 3F 3F
7010- 3F 1E 2D 2D 2D 2D 3E FF 1F 3F 6E 2D 2D 0D 3E 1F
7020- 3F 1F 37 2D 4D 29 F5 3F 3f 3F 0E 2D 2D 06 00 35
7030- 00 49 29 75 39 DF 3b 1E 4D 49 09 0E DF DB DB 33
7040- 0D 6D 0D 6D FE FF DF 1F 6E 4D 0D 4D FE DB DB 1B
7050- 6E 49 49 09 FE DB DB 1B 6E 49 49 09 3E 3F 3F 3F
7060- 3F 37 00 49 2D 3E 77 4E 39 3F 3F F7 4D 69 09 FE
7070- 3F 3F 1F 6E 09 4D F1 1B 3F 0E 0E 1F 1E 6D 35 00
7080- 09 29 41 05 53 53 53 53 53 00 20 2C FE A9 01 4A
7090- 02 00
APÊNDICE A
COMO CORRIGIR
PROGRAMAS APPLESOFT
BASIC
232 Jogos de Ação para o Apple
O MONITOR DO APPLE
TUTOR DO MONITOR
Digite “CALL-151” para acessar o monitor (“entrar no monitor”).
Como você pode ver, o colchete direito normal (]) do prompt do Applesoft
não é mais usado e você pode ver um prompt asterisco (*) seguido do
conhecido cursor piscante. O seu Apple não mais aceitará os comandos
Applesoft, embora ainda possa permitir comandos do DOS 3.3 ou ProDOS,
seja qual for o sistema operacional que você estiver usando. Até mesmo
o sistema de numeração é mudado. Você não pode mais usar valores
decimais quer na saída de tela, quer na entrada do usuário; você deve
expressar todos os valores em hexadecimal. De fato, neste Apêndice,
expressaremos todos os números na forma hexadecimal a não ser que
se tenha mencionado especificamente.
Examine os conteúdos da memória usando o comando dump (saída
de memória do monitor (também chamado hex dump). Por exemplo, sé
você quer ver o valor armazenado ha posição de memória FF58 (isto é
65368 em decimal), digite “FF58” < RETURN > (daqui em diante não men
cionaremos o < RETURN >). O computador responde repetindo o endere
ço de memória, seguido de um traço e então o valor hex desta posição,
como este “FF58- 60”. Se você quer1 ver um limite de posições de memó
ria, digite o endereço inicial, um ponto, e então o endereço finál. Por
exemplo, digite “FF00.FF20” se você quer ver os valores de FFOO a FF20.
O computador então mostrará todos os valores hexadecimals dentro do
limite de memória, da maneira seguinte:
FFOO- 1A 1C 32 34 3A 3C 52 5A
FF08- 64 72 74 7A 7C 89 92 9C
FF10- 9E B2 D2 F2 FC 38 FB 37
FF18- FB 39 21 36 21 3A F8 FA
FF20- 3B
QUADRO D
NÚMEROS DAS FIGURAS CORRESPONDENTES
AOS CARACTERES DO TECLADO
Número da Caractere Número da Caractere Número da Caractere
figura do teclado figura do teclado figura do teclado
1 (espaço) 33 @ 65 ■
2 l 34 •A 66 a
tt
3 35 ,B 67 b
4 #
36 C 68 c
5 $ 37 D 69 d
6 % 38 E 70 e
7 & 39 F 71 f
8 40 G 72 g
9 -( 41 H 73 h
10 ) 42 I 74 i
11
★ 43 J 75 i
12 + 44 K 76 k-
13 ! 45 L 77 I
Apêndice D Texto na Tela de Alta Resolução 247
QUADRO D (continuação)
NÚMEROS DAS FIGURAS CORRESPONDENTES
AOS CARACTERES DO TECLADO
Número da Caractere Número da Caractere Número da Caractere
figura do teclado figura do teclado figura do teclado
14 - 46 M 78 m
15 47 N 79 n
16 / 48 0 80 0
17 0 49 P 81 P
18 1 50 Q 82 q
19 2 51 R 83 r
20 3 52 S 84 s
21 4 53 T 85 t
22 Ô 54 U 86 u
23 6 55 V 87 V
24 7 56 W 88 w
25 8 57 X 89 X
26 9 58 -Y 90 y
27 59 Z 91 z
28 J 60 I 92 I
29 < 61 \ 93 I
30 = 62 l 94 I
31 > 63 A
95
32 ? 64 — 96 (cursor)
248 Jogos de Ação para o Apple
Figura D: FONTE.PADRAO
Apêndice D Texto na Tela de Alta Resolução 249
250 Jogos de Ação para o Apple
Apêndice D Texto na Tela de Alta Resolução 251
252 Jogos de Ação para o Apple
1 5 10
10:
1 5 10
1 5 10
Apêndice D Texto na Tela de Alta Resolução 253
1 5 10
254 Jogos de Ação para o Apple
Apêndice D Texto na Tela de Alta Resolução 255
256 Jogos de Ação para o Apple
Listagem D: FONTE.PADRAO
7000- 60 00 C2 00 C4 00 CA 00 CF 00 DE 00 EC 00 F7 00
7010- 04 01 08 01 10 01 18 01 27 01 2F 01 34 01 39 01
7020- 3E 01 46 01 56 01 5E 01 6A 01 75 01 80 01 8D 01
7030- 9B 01 A3 01 B2 01 C0 01 D0 01 D5 01 DE 01 E6 01
7040- EE 01 F7 01 06 02 16 02 25 02 31 02 40 02 4D 02
7050- 58 02 68 02 78 02 82 02 8D 02 9A 02 Al 02 BI 02
7060- Cl 02 D0 02 DD 02 ED 02 FC 02 0A 03 11 03 20 03
7070- 2E 03 3E 03 4C 03 57 03 61 03 6C 03 72 03 7D 03
7080- 87 03 8E 03 92 03 9B 03 A7 03 B2 03 BF 03 CB 03
7090- D4 03 El 03 ED 03 F5 03 FD 03 08 04 0F 04 1C 04
7 0A0- 28 04 34 04 41 04 4D 04 55 04 60 04 69 04 75 04
70B0- 80 04 8D 04 98 04 A4 04 AF 04 BA 04 C0 04 CA 04
70C0- Dl 04 02 00 09 36 36 16 06 00 69 FE 6E 06 00 69
70D0- FE 1E 2D 2D 1E 1F 1E 2D 2D 1E 1F 6E 06 00 09 4E
70E0- 3F 77 1F 0E 2D 0E 1F 0E 3F 77 31 00 39 2E 4D 1E
70F0- 1E 1E 1E 4D 35 37 00 B9 0D FE 0E 1E 0D 0D 1E DF
7100- 0E 6D 06 00 09 36 06 00 09 1E 1E 36 0E 0E 06 00
71L,0- 09 0E 0E 36 1E 1E 06 00 09 9F 0D 0D 1E 3F 0E 0E
7120- 3F 1E 0D 0D DE 06 00 4A 76 39 3F 77 31 06 00 92
7130- 4A F6 06 00 92 2D 2D 06 00 92 92 09 06 00 4A 09
7140- 1E 1E 1E 1E 06 00 29 75 DF 33 4D 35 1F 1F 2E 4D
7150- FE 1B 0E 2D 06 00 09 3E 0E 36 76 3F 06 00 29 F5
7160- 1B 4D 31 1E F7 1E 2E 2D 35 00 2D 2D F6 3E 4E FE
7170- 1B 0E 2D 06 00 49 3E 1E 00 FE 33 2D 2D 1E 36 00
7180- 49 39 3F 37 2E 2D 0E 3-6 DF 73 2D 06 00 09 2D DE
7190- F3 2E 2D 0E DF 33 4D F1 3F 06 00 2D 2D F6 1E 1E
71A0- 36 06 00 29 75 DF 33 4D F1 3F 1E 4D 31 DF 73 2D
71B0- 06 00 29 75 DF 33 4D 31 3F 77 09 1E 1E 3F 06 00
71C0- 52 BI 06 00 4D 31 DF 33 2D 2D FE 1B 6E 09 06 00
71D0- 52 BI F6 06 00 49 1E IE 1Ê 0E 0E 0E 06 00 12 2D
71E0- 2D 16 3F 3F 06 00 71 0E 0E 1E 1E 1E 06 00 29 75
71F0- DF 73 09 1E B6 06 00 29 75 DF 33 0D 0D 3E FF 4E
7200- 39 1F 76 2D 35 00 09 15 1F 17 4D 31 DF 33 2D 2D
7210- FE 1B 6E 09 06 00 2D AD DF 33 4D F1 3F 37 4D 31
7220- DF 33 2D 35 00 29 AD DF 33 36 4D 11 DF 73 2D 06
7230- 00 2D AD DF 33 4D 31 DF 33 4D 31 DF 33 20 35 00
7240- 2D 2D DE 1B 6E 11 3F 37 36 2D 2D 06 00 2D 2D DE
7250- 1B 6E 11 3F 37 36 06 00 29 AD DF 33 4D 11 3F 1F
7260- 6E 09 FE 1B 0E 2D 06 00 4D 31 DF 33 4D 31 3F 3F
7270- 6E 09 FE 1B 6E 09 06 00 2D 2D DE 36 36 9F 2D 2D
7280- 06 00 29 2D 1E 36 DF 6A 31 DF 0E 35 00 4D F1 DF
7290- 6E 1E 37 0D 15 DF 6E 09 06 00 36 36 36 2D 2D 06
72A0- 00 4D 31 FF 37 0D 0D FE 1F 6E 09 FE 1B 6E 09 06
Apêndice D Texto na Tela de Alta Resolução 257
72B0- 00 4D 31 DF 33 6D 31 1F 1F 6E 29 FE 1B 6E 09 06
72C0- 00 29 AD DF 33 4D 31 DF 33 4D 31 DF 73 2D 06 00
72D0- 2D AD DF 33 4D 31 DF 33 2D F5 1B 36 00 29 AD DF
72E0- 33 4D 31 DF 33 0D 0D 1E DF 0E 6D 06 00 2D AD DF
72F0- 33 4D 31 DF 33 2D 35 DF 6E 09 06 00 29 AD DF 33
7300- 4D 3A 77 09 FE 1B 0E 2D 06 00 2D 2D DE 36 36 36
7310- 00 4D 31 DF 33 4D 31 DF 33 4D 31 DF 73 2D 06 00
7320- 4D 31 DF 33 4D 31 DF 33 4D F1 1F 0E 06 00 4D 31
7330- DF 33 4D 31 1F 1F 6E 0D 3E 1F 37 4D 31 00 4D 31
7340- DF 73 0D 1E 17 0D- 15 DF 33 4D 31 00 4D 31 DF 33
7350- 4D F1 1F 0E 36 06 00 2D 2D BE 1E 17 1E 2E 2D 35
7360- 00 2D F5 3B 2E 3E 2E 3E 2E 2D 06 00 72 0E 0E 0E
7370- 06 00 29 2D 3E 2E 3E 2E 3E DE 2D 35 00 09 0E 3F
7380- 1E 0D 0D DE 36 36 00 92 92 2A 2D 2D 35 00 49 1E
7390- 06 00 52 75 3E F7 4D 0E 1F 37 00 36 0D 75 DF 37
73A0- 4D 31 DF 37 0D 35 00 52 2D 0E DF 33 6E 09 1E 3F
73B0- 06 00 49 31 FE F7 4D 35 DF 33 4D 35 1F 37 00 52
73C0- 2D 0E DF 73 49 3F 3F 76 2D 06 00 09 75 DF 0E 3F
73D0- 0E 36 36 00 52 6D 3E DF 6E 29 FE 77 09 1E 3F 06
73E0- 00 36 2D 75 DF 33 4D 31 DF 33 4D 31 0.0 09 16 77
73F0- 36 0E 3F 06 00 49 16 77 36 FE 73 35 00 36 4D F1
7400- DF 6E 0E 1F 37 4D 31 00 29 36 36 F6 2D 06 00 12
7410- 6D 0E 1F 1F 6E 0D FE 1F 6E 0D 06 00 12 0D 75 DF
7420- 37 4D 31 DF 33 4D 31 00 52 2D 0E DF 33 4Ó 31 DF
7430- 73 2D 06 00 12 0D 75 DF 37 4D 31 DF 77 09 FF 36
7440- 00 52 6D 3E DF 6E 09 3E DF 0E 6D 36 00 12 0D 75
7450- DF 37 36 06 00 52 49 3F F7 0E 2D 0E 1E 3F 37 00
7460- 0A 4E 3F 77 36 4D 1E 37 00 12 4D 31 DF 33 4D 31
7470- FF 73 6D 06 00 12 4D 31 DF 33 4D F1 1F 0E 06 00
7480- 12 4D 31 1F 1F 6E 0D FE 1F 0E 0D 06 00 12 4D F1
7490- 1F 0E 0E 1F 1E 4D 31 00 12 4D 31 DF 33 4D F1 1F
74A0- 0E 1E 37 00 12 2D 2D 1E 1E 1E 1E 2D 2D 06 00 09
74B0- 2D DE 73 1E 77 F1 0E 2D 06 00 09 36 36 36 36 00
74C0- 2D 0E 1E 4E F7 0E 1E 3F 06 00 29 4D 1E FF 33 00
74D0- 49 2D 2D 2D 3E 3F 3F 37 2D 2D 2D 3E 3F 3F 37 2D
74E0- 2D 2D 3E 3F 3F 37 2D 2D 2D 3E 3F 3F 37 00 2D
APÊNDICE E
GUIA DE REFERÊNCIA
RÁPIDA PARA O EDITOR DE
TABELA DE FIGURAS
Apêndice E Guia de Referência Rápida para o Editor de Tab. de Figuras 259
Geral: >
V : Ver a lista dos comandos do EDITOR DE TABELA DE
• FIGURAS
Q : Para o EDITOR DE TABELA DE FIGURAS
Desenhando e Apagando:
D : Chave LIGA/DESLIGA do PONTO (LIGADO = desenhar)
DESLIGADO = não desenhar
T : (o mesmo que D) TARTARUGA para BAIXO/CIMA (para
BAIXO = desenhar, CIMA = não desenhar)
1 : Modo“DESENHAR”
0 : Modo“APAGAR”
2 : Modo “FUNDO”
W : Desenhar um único ponto
E : Apagar um único ponto
A : Ajustar A,B para o X,Y corrente (origem da linha ou caixa)
X : Desenhar uma linha de A,B para X,Y
B : Desenhar um retângulo com um canto em A,B e o canto
(diagonal) oposto em X.Y
Modo ARQUIVAR
F : Entrar o modo “ARQUIVAR" (do modo “EDITAR FIGURA”)
Estes são os comandos do modo “ARQUIVAR”:
<espaço> : Sair do modo "ARQUIVÀR” (para o modo “EDITAR
FIGURA”)
A : Adicionar a FIGURA DE EDIÇÃO ao ARQUIVO.DE
TABELA DE FIGURAS (Então tecle I para Inserir
ou A para Adicionar)
F : Status do arquivo (dá o número de figuras e tamanho)
—> : Ver a próxima figura no ARQUIVO DE TABELA DE
FIGURAS
<—: Ver a figura anterior no ARQUIVO DE TABELA DE
FIGURAS
L : Carregar a FIGURA DO ÁRQUIVO corrente na FIGURA
DE EDIÇÃO
V : Sobrepor a FIGURA DO ARQUIVO corrente na FIGURA
DE EDIÇÃO
S : Selecionar o número da figura que você quer ver
D : Apagar a atual figura mostrada (ou apagar todo o
ARQUIVO DE TABELA DE FIGURAS)
Listagem F: WIPEOUT.MOUSE
10 REM #***»*#*#»*#****#*#*****
20 REM * WIPEOUT.MOUSE *
30 REM * BY SCOTT BRENT Z. *
40 REM * COPYRIGHT (C) 1985 *
50 REM * COMPUTER EXPRESSIONS *
60 REM * 1129 EAST 470 NORTH *
70 REM * OREM, UTAH 84057 *
80 REM *************************
90 REM
190 REM
INTRODUÇÃO:
ARRANJO:
DESENHA KLORYONS:
MOUSE PRONTO:
CICLO PRINCIPAL:
2000 XI - X:¥l = Y
2020 X = X i- MX:Y = Y + MY
2030 REM
CRONOMETRO:
2200 TL = TL + 1: IF TL = 15 THEN TM = TM -
1:TL = 0: VTAB 22: HTAB 35: PRINT TM;
, ” IF TM = O THEN 15000
5000 GOTO 1000
5990 REM
9990 REM
11. The DOS Manual, Apple Computer, Inc., Cupertirio, CA, 1981. A refe
rência padrão do usuário jpara DOS 3.3.
Apêndice G Bibliografia 269
12. The ProDOS User’s Manual, Apple Computer* Inc., Cupertino, CA, 1984.
13. BASIC Programming with ProDOS, Apple Computer, Inc., Cupertino,
CA, 1984.
14. Don Worth and Pieter Lechner, Beneath Apple DOS, 1981 e Beneath
Apple ProDOS, 1984, Quality Software, Reseda, CA.
15. Sandy Mossberg, “An Introduction to ProDOS”, Nibble, março de
1984.Informações sobre as diferenças entre o DOS .3.3 e o ProDOS.
16. All About DOS, Apple PugetSound Program Library Exchange, Kent,
Washington, 1983. Contém boas informações e utilitários para o DOS
3.3.
Outros títulos publicados pela Editora Manole
BASIC Ba»±
David iluTiro
Vo
MSX A mb 1
MSX Ac
MSX R s Gra-Fic mb 1 i
Stere Hebb
MSX d
SPECTRUM Jogo® d A
Pierre Honsaut
Aul * d BASIC
1 Hubert Alqueres
250 R de
Ledi n
/
Faça os seus próprios jogos no seu
Apple II +, lie, lie ou computador compa
tível.
Escrito para programadores experientes
de BASIC, este livro explica a criação sólida
de jogos e técnicas de programação — e
inclui 11 jogos originais que mostram estas
técnicas em ação.
Jogos de Ação para o Apple ensina métodos úteis de criação de jo
gos que aumentarão seu divertimento e diminuirão sua frustração. Este
livro inclui:
• instruções claras, fáceis de se entender, para escrever jogos de ação
para computadores
• 3 utilitários poderosos para colocar gráficos e som nos seus programas
• explicações e exemplos de animação, efeitos sonoros do tipo de flipe-
rama, música, gráficos de alta e baixa resolução e cronômetros de
jogos
e sugestões para a melhoria e a modificação de cada jogo
• jogos excitantes como: Snake, Space Hunter, Race Car, Alien Defense,
Nuclear Fallout e outros.
Os programas e as técnicas de programação deste livro foram testa
dos com sucesso por centenas de estudantes da Brigham Young Univer
sity Youth Computer Academy — você pode estar certo então de que eles
funcionam.
EDITORA
MANOLE
LTDA.
s
MANOLE