Vou criar um osso e o Stinky Dog vai tentar recolhê-los; de cada vez que o fizer, ganha alguns pontos. Para criar o osso, vamos usar o editor de blocos...

Desenha o teu bloco coletável e clica na caixa do tipo de bloco para percorrer os tipos disponíveis até chegares a COLLECTABLE
Em seguida, abre o editor de ecrãs e adiciona alguns blocos coletáveis ao teu ecrã

Agora compila e testa o teu jogo (File > Build )
Repara que o Stinky Dog agora apanha os ossos quando lhes toca.
Mas a pontuação não aumenta.
É aqui que a coisa se complica...chegou a altura de escrever algum código.
Abre o menu Events, no fundo há um evento chamado Collect Block, clica nele e o teu editor de texto deverá abrir-se, com apenas uma linha de código:
EVENT COLLECTBLOCK
Se não tiver, escreve-a e carrega na tecla ENTER (CARREGA SEMPRE NA TECLA ENTER NO FIM DE CADA LINHA DE CÓDIGO!)
Em seguida, adiciona a seguinte linha de código por baixo:
SCORE 100
e carrega na tecla Enter.
Agora, sempre que o Collect Block for chamado, vai somar 100 à pontuação.
Guarda o teu script do Collect Block (se estiveres a usar o Bloco de Notas, terás de o fechar)
Mas antes de o testarmos temos de escrever uma linha de código no evento Player que chame o evento Collect Block.
No menu Events seleciona Player. O script do jogador vai abrir agora no teu editor de texto. Deve ter cerca de 30 linhas de código.
No início do script, mas por baixo de Event Player, adiciona o comando:
GETBLOCKS
... e carrega na tecla Enter
O comando GETBLOCKS remove todos os blocos coletáveis com que o sprite atual esteja em contacto e chama o evento Collect Block por cada um que remove.
Como o colocámos no evento Player, isto significa que quando o Stinky Dog tocar no bloco coletável, este será removido e o evento Collect Block será chamado.
Guarda o ficheiro do evento do jogador e fecha-o.
Agora compila e testa o teu jogo.
Reparaste que a pontuação aumenta 100 por cada coletável apanhado?
Não.
Não funcionou.
Bem, na verdade funcionou. A tua pontuação subiu 100 por cada um. O problema é que a pontuação não é atualizada.
E para perceber porquê, vamos ter de ver outro script de evento.
No menu Events seleciona Game Initialisation
Deve ser algo parecido com isto:
EVENT GAMEINIT LET LIVES = 3 AT 0 16 DISPLAY LIVES AT 0 6 SHOWSCORE AT 0 25 SHOWHIGH
O script Game Initialisation só é executado quando o jogo começa. Se o leres, é bastante óbvio o que faz:
Começa o jogo com três vidas
Na linha 0, coluna 16, mostra o número de vidas
Na linha 0, coluna 6, mostra a pontuação
Na linha 0, coluna 25, mostra a pontuação máxima
Portanto, neste momento a pontuação só é atualizada quando o jogo começa.
Vamos ter de adicionar o código SHOWSCORE ao evento Collect Block, para que sempre que se apanhe um coletável, além de somar 100 à pontuação, se atualize a pontuação no ecrã. Abre o teu evento Collect Block e adiciona o código (incluindo o AT 0 6). Agora deve ficar assim:
EVENT COLLECTBLOCK SCORE 100 AT O 6 SHOWSCORE
Não te esqueças de carregar em ENTER depois da última linha!
Guarda e fecha o teu script do evento Collect Block e volta a compilar o teu jogo (Build).
Viva! O Stinky Dog consegue apanhar ossos...e marcar pontos!
