Meu primeiro jogo no Micro Bug

O Micro Bug tem uma resolução gráfica de 200 pontos de largura por 252 pontos de altura e as duas instruções relacionadas a esta resolução são: PLOT e UNPLOT. Veja a sintaxe:

10 CLS
20 PLOT 10,10


Esta instrução coloca um ponto gráfico nas coordenadas x,y (10,10 no exemplo acima). Da mesma forma, a instrução UNPLOT apaga esse ponto.

O que dá pra fazer com esses pontos, além de "ligar" e "desligar" os mesmos? Dá pra fazer, por exemplo, um jogo bem simples, do tipo "Acerte o Alvo".

O jogo funciona assim: uma letra "X" é colocada na lateral direita da tela (numa posição aleatória) e na lateral esquerda um "PLOT" vai colocando pontos até que o jogador acredite que ele está na mesma linha do "X". Basta pressionar uma tecla, clicar no monitor ou dedar a tela que o sistema vai "plotar" a linha até o alvo. Se acertar bem no meio da letra, ganha um ponto, se errar perde um.

Pronto pro desafio? Então lá vai o passo a passo.

10 CLS
20 LET alvo=5
21 LET alvo=alvo&10
22 PRINT AT 24,alvo,"X"


Primeiro limpamos a tela (CLS) e sem seguida definimos uma variável (alvo) que conterá a coordenada vertical da posição do "X". Este número irá variar de 5 a 15 (pra dificultar um pouco, senão fica fácil depois de um tempo).

Em seguida vamos criar a mecânica que plota os pontos na vertical, ascendentes. Iremos usar duas variáveis para isso: x e y. O valor de x será aleatório entre 0 e 10 e o valor de y será sempre a base da tela (250).

30 LET x=0
31 LET x=x&10
32 LET y=250
40 PLOT x,y
41 LET y=y-2
45 IF y>40 GOTO 40


Note que o programa ficará preso entre as linhas 40 e 45, decrementando a variável y até que ela chegue no todo, passando do alvo. Você acabou de perder um ponto.

Para contabilizar os erros e acertos, vamos criar duas variáveis: errou e acertou e, no caso acima, vamos incrementar a quantidade de erros.

11 LET errou=0
12 LET acertou=0

50 LET errou=errou+1
52 PRINT AT 8,15,"ERROOUU...."
60 PRINT AT 3,19,"Acertos= ";
61 PRINT acertou
62 PRINT AT 3,20,"Erros= ";
63 PRINT errou


Aproveitamos a ocasião e mostramos ao jogador não apenas que ele errou, mas qual é o escore da partida até aquele ponto.

Antes de fazer o processamento que irá determinar se houve um acerto, precisamos usar um recurso ainda não mencionado: a instrução INKEY. Ela nada mais faz do que "ler" o tecla, o mouse ou a tela do celular pra saber que algo foi teclado, clicado ou dedado. Para isso ela usa uma variável que irá receber o código ascii dessa tecla.

Mas atenção: INKEY não para e espera por uma tecla. Ela apenas verifica isso uma única vez e no momento que a instrução foi executada. Se o jogador teclar um nano segundo após a sua execução, ele perder a vez.

O primeiro uso desta instrução ocorrerá após a término da partida, logo após a apresentação dos resultados. O programa para num looping até que uma tecla seja pressionada, ou seja, ele vai ficar executando INKEY até que algo ocorra.

13 LET tecla=0

70 INKEY tecla
72 IF tecla=0 GOTO 70
73 CLS
75 GOTO 20


Caso alguma tecla seja pressionada, então o jogo recomeça a partida, dando nova chance ao jogador de acertar a mira.

Para o disparo, usamos o mesmo conceito visto anteriormente só que a "varredura" do teclado, monitor ou tela será feita enquanto a linha de plot está "subindo" pela tela.

42 INKEY tecla
43 IF tecla>0 GOTO 80

80 PLOT x,y
81 LET x=x+4
82 IF x<192 GOTO 80
83 LET alvo=alvo*12
84 LET alvo=alvo+6
85 IF y=alvo GOTO 90
86 LET y=y+1
87 IF y=alvo GOTO 90
88 GOTO 50


Quando a linha de plot horizontal chegar perto do alinhamento vertical do X, o sistema para e calcula se acerto bem no meio da letra. Se sim, ponto pro jogador.

90 PRINT AT 8,15,"ACERTOU"
91 LET acertou=acertou+1
92 GOTO 60


Pronto. Finito. Acabado. Eu sei que você deve estar pensando mas que joguinho bobo... Então tente acertar no alvo pra ver como não é fácil. Você só precisa clicar no link abaixo.

:: Acerte o Alvo