Professional Documents
Culture Documents
Unidade Curricular
Ensino de Programao
Contedo
1. Funcionamento do jogo ............................................................................................................ 3
2. Escolhas tcnicas ....................................................................................................................... 5
2.1 O Stage ................................................................................................................................ 5
2.2 Gerao dos labirintos ........................................................................................................ 6
2.2.1 Labirintos Fixos ............................................................................................................. 6
2.2.2 Labirintos aleatrios ..................................................................................................... 8
2.3 Colocao inicial do Tesouro e das personagens ................................................................ 9
2.3.1 O Tesouro e as estruturas de dados............................................................................. 9
2.3.2 O Gato e o Corvo ........................................................................................................ 11
2.4 Aleatoriedade de aparecimento e colocao ................................................................... 12
2.4.1 Sprite do Co .............................................................................................................. 12
2.4.2 Sprite do pacote de Leite ........................................................................................... 13
2.5 Simulao do movimento das sprites ............................................................................... 14
2.6 Movimento manual da sprite do Gato .............................................................................. 15
2.7.1 Representao do labirinto com Matrizes ................................................................. 15
2.7.2 Progresso automtica............................................................................................... 17
2.8 Dificuldade/velocidade crescente ..................................................................................... 18
2.9 Pausa ................................................................................................................................. 18
2.10 Fim do Nvel..................................................................................................................... 20
2.10.1 Vitria do Gato ......................................................................................................... 20
2.10.2 Vitria do Corvo ....................................................................................................... 20
2.11 Fim do jogo ...................................................................................................................... 21
3. Concluses............................................................................................................................... 22
1. Funcionamento do jogo
O jogo desenvolvido desenrola-se num labirinto de 7x7 clulas (ou 15x15, se contarmos
as clulas das paredes). Dependendo do modo de jogo que se escolher, fixo ou auto,
podemos jogar em 20 labirintos diferentes, de igual dificuldade mas com ordem gerada
aleatoriamente, ou em labirintos gerados de forma completamente aleatria.
Como personagens (sprites do Scratch) o jogo conta com o Gato, personagem controlada
pelo jogador e o Corvo, personagem controlada pelo computador. Largados no labirinto
competem pelo Tesouro que tambm l se encontra, de valor gerado aleatoriamente entre
1 e 9.
Caso seja o Corvo a ganhar 3 jogos seguidos, h, para o Gato uma penalizao de 2
pontos, que passam para o Corvo.
A Tecla de Espao serve para pausar o jogo. Carregando novamente no Espao, iniciado
um contador de 3 segundos, ao fim do qual o jogo recomea.
2. Escolhas tcnicas
2.1 O Stage
O Stage composto, neste jogo, por quatro backdrops (fundos).
Esses fundos vo sendo substitudos, medida que o jogador progride dentro do jogo.
Comea pelo menu inicial, depois, h um outro que a imagem de fundo para os labirintos
fixos, tambm para o ecr de instrues e um para quando o jogador consegue ganhar o
nvel 20 e termina o jogo.
Para alm da funo de servir de fundo, o objeto Stage tambm utilizado como objeto
de inicializao de algumas das estruturas de dados do jogo. atravs das suas Scripts
que o jogo inicia, entra e sai de pausa (descrito adiante) e que termina. Para alm destas
funes, tambm no programa de inicializao do Stage que gerada a ordem aleatria
dos labirintos, a ser utilizada se usarmos o modo de jogo Fixo.
Como j anteriormente foi referido, apesar de o desenho dos labirintos ser fixo, o jogo
dispe de vinte desenhos diferentes que so aleatoriamente colocados em cada um dos
vinte nveis do jogo. De forma a garantir que durante um jogo nenhum desenho seria
repetido, foi utilizada uma lista de nmeros aleatrios entre um e vinte e os desenhos so
colocados no ecr seguindo essa lista.
O Stage o responsvel pela criao inicial da lista que ser utilizada posteriormente pela
sprite Labirinto. Essa lista, com vinte posies (para os vinte nveis do jogo), conter o
nmero do labirinto que corresponde a esse nvel.
Numero do labirinto a utilizar = Labirinto[nvel]
Figura 10 - Excerto do programa do Stage que gera a lista de valores aleatrios, sem repeties
A sprite Labirinto foi criada com vinte costumes que so, nada mais que, os vinte labirintos
diferentes que o jogo dispe. Quando recebe um sinal de que houve uma mudana de nvel, a
sprite executa o programa que faz com que o seu costume tenha o nmero que consta da lista
aleatria anteriormente gerada.
Figura 11 - Programa da sprite Labirinto, responsvel pela mudana do desenho, sempre que h uma mudana de
nvel no jogo
Figura 13 - Excerto do cdigo da sprite Tesouro, responsvel pela colocao aleatria no labirinto
A primeira coisa que o cdigo faz escolher aleatoriamente o valor do Tesouro para
aquela jogada. A sprite do Tesouro tem nove costumes diferentes que representam os
nove valores que o tesouro pode ter pelo que, a operao seguinte ser atribuir sprite o
costume correspondente ao valor do Tesouro.
De seguida necessrio colocar o Tesouro no Labirinto. De forma simplificada, o
processo gera aleatoriamente uma linha e uma coluna, armazenadas em variveis, fazendo
sempre uma verificao, para garantir que o Tesouro no fica por cima de uma das
paredes do labirinto. Caso essas coordenadas o coloquem por cima de uma parede, so
geradas novas coordenadas, at que seja colocado numa zona acessvel.
tambm a sprite do Tesouro a responsvel por criar a estrutura de dados que, mais tarde,
ser utilizada pelo Corvo para tentar encontrar o Tesouro. Utilizando as listas que o
Scratch disponibiliza, a sprite cria quinze listas, cada uma representando uma coluna do
labirinto (paredes e tuneis) com o valor absoluto da distncia, em posies, daquela
posio posio do Tesouro. As clulas em que possivelmente estejam paredes so
preenchidas com o valor zero, cabendo depois ao Corvo, descobrir se so paredes ou no.
Gato vs Corvo (implementao em Scratch), Rolando Barradas
10
Figura 14 - Excerto do programa do Tesouro, responsvel pelo preenchimento das estruturas de dados de orientao
no labirinto
11
O programa de colocao da sprite do Corvo ligeiramente mais complexo, uma vez que
necessrio, para o sistema de navegao implementado para esta sprite, saber as
coordenadas de localizao em termos de clulas (15x15). Para isso, semelhana do
programa de colocao da sprite do tesouro, os valores gerados aleatoriamente so entre
um e sete, uma vez que, nestes labirintos s h sete linhas e sete coluna navegveis. Tal
como na sprite do Gato, feita uma verificao para garantir que o Corvo no fica em
cima de nenhuma parede e que a distncia mnima ao Tesouro tambm garantida.
12
13
O programa que simula o movimento da sprite do Gato ligeiramente diferente, uma vez que o
Gato s se pode movimentar quando o utilizador carrega numa qualquer seta. Tendo em conta
esse facto e, de forma a minimizar a quantidade de cdigo, sempre que o utilizador carrega
numa seta, para alm das verificaes abaixo descritas, enviado um broadcast, recebido pela
prpria sprite, que, a sim, faz a alterao do costume. Para tornar um pouco mais realista o
movimento do Gato, foram criados dois programas, um para os movimentos para o lado
esquerdo e outro para todos os restantes.
14
Figura 22 - Programa da sprite do Gato que reage ao premir das teclas de direo
15
utilizao de vrias listas (quinze, na prtica, uma para cada coluna da matriz do
labirinto). Em cada clula, est armazenada a distncia daquela clula ao Tesouro.
Para facilitar o trabalho com a matriz, foram criados dois procedimentos no Scratch, um
que permite obter o valor armazenado numa determinada posio e outro que permite
atribuir um valor ou incrementar uma determinada posio.
Os contedos iniciais da matriz so preenchidos pela sprite do Tesouro da forma j
descrita anteriormente.
Figura 23 - Extrato do procedimento alteraMatriz implementado para trabalhar com matrizes. Utilizado pela sprite
Corvo na sua descoberta do labirinto.
Figura 24 - Extrato do procedimento valorMatriz implementado para trabalhar com matrizes. Utilizado pela sprite
Corvo na sua descoberta do labirinto.
16
17
Figura 26 - Programas que encontram o caminho mais curto e alteram as coordenadas da sprite do Corvo
Figura 27 - Excerto de cdigo que indexa os movimentos das sprites ao nvel do jogo
2.9 Pausa
A ordem de pausa no jogo recebida pelo Stage. Sempre que a tecla de espao recebida, o
contedo da varivel Pausa alterado para o valor um e emitido um broadcast de Pausa. Se a
tecla de espao for premida novamente, o valor da varivel passa novamente a zero e emitido
o broadcast de Fim de Pausa.
18
Quando a sprite que contm a imagem da pausa recebe o sinal de que foi iniciado um processo
de Pausa, altera o seu costume para uma imagem que tem o sinal de pausa ( || ). Uma vez
recebido o sinal de Fim de Pausa, h uma contagem decrescente, mostrada ao utilizador atravs
da mudana de costume da mesma sprite.
Todo o movimento das sprites do jogo est condicionado ao contedo da varivel Pausa. S
quando o seu contedo igual a zero (significa que o jogo no est em pausa) que os
movimentos das sprites so efetuados.
19
Figura 31 - Programa da sprite do Gato responsvel por controlar o toque na sprite do Tesouro
20
Figura 32 - Excerto do programa da sprite do Corvo, reponsvel pelo controlo do toque na sprite do Tesouro
Figura 33 - Programa da sprite Labirinto que gere a mudana de nvel e o fim do jogo
21
Esse broadcast recebido pelo Stage que altera o seu backdrop para uma imagem de fim de
jogo e para todos os programas em funcionamento.
Figura 34 - Programa do Stage que recebe o sinal de Fim de Jogo e para o programa
3. Concluses
Concluses
Apesar de ser uma ferramenta de simples utilizao, o Scratch est longe de ser a ferramenta
ideal para a implementao deste gnero de projetos.
A falta de estruturas de dados convenientes e limitaes do gnero do formato da pen acrescem
dificuldades a um projeto desde logo relativamente complexo.
No deixa de ser, no entanto, uma ferramenta visual simples, fcil de utilizar e com a qual se
conseguem resultados rapidamente.
22
ndice de Figuras
Figura 1 - Alavanca de seleo do modo de gerao do labirinto ................................................ 3
Figura 2 - Sprites do Gato e do Corvo ........................................................................................... 3
Figura 3 - Sprites do Co, Pacote de Leite e do Tesouro ............................................................... 4
Figura 4 - Seletor de dificuldade do jogo ...................................................................................... 4
Figura 5 - Sinal de recomeo do jogo, com contagem decrescente. ............................................ 4
Figura 6 - Ecr de instrues ......................................................................................................... 5
Figura 7 - Exemplos de Backdrops do Stage.................................................................................. 5
Figura 8 - Excerto do programa do Stage ...................................................................................... 6
Figura 9 - Exemplo de labirinto pr-gerado. ................................................................................. 7
Figura 10 - Excerto do programa do Stage que gera a lista de valores aleatrios, sem
repeties...................................................................................................................................... 7
Figura 11 - Programa da sprite Labirinto, responsvel pela mudana do desenho, sempre que
h uma mudana de nvel no jogo ................................................................................................ 8
Figura 12 - Exemplo de labirinto gerado automaticamente. ........................................................ 9
Figura 13 - Excerto do cdigo da sprite Tesouro, responsvel pela colocao aleatria no
labirinto ....................................................................................................................................... 10
Figura 14 - Excerto do programa do Tesouro, responsvel pelo preenchimento das estruturas
de dados de orientao no labirinto ........................................................................................... 11
Figura 15 - Programa de colocao da sprite do Gato ................................................................ 11
Figura 16 - Programa de colocao da sprite do Corvo no labirinto........................................... 12
Figura 17 - Cdigo responsvel pelo aparecimento e movimento da sprite do Co .................. 13
Figura 18 - Cdigo responsvel pelo aparecimento da sprite do Pacote de Leite ...................... 13
Figura 19 Alguns costumes da sprite do Gato .......................................................................... 14
Figura 20 - Cdigo que cria o bater de asas da sprite Corvo. .................................................. 14
Figura 21 - Cdigo que simula o movimento da sprite do Gato ................................................. 15
Figura 22 - Programa da sprite do Gato que reage ao premir das teclas de direo ................. 15
Figura 23 - Extrato do procedimento alteraMatriz implementado para trabalhar com matrizes.
Utilizado pela sprite Corvo na sua descoberta do labirinto. ....................................................... 16
Figura 24 - Extrato do procedimento valorMatriz implementado para trabalhar com matrizes.
Utilizado pela sprite Corvo na sua descoberta do labirinto. ....................................................... 16
Figura 25 - Excerto do cdigo do movimento da sprite do Corvo .............................................. 17
Figura 26 - Programas que encontram o caminho mais curto e alteram as coordenadas da
sprite do Corvo ............................................................................................................................ 18
Figura 27 - Excerto de cdigo que indexa os movimentos das sprites ao nvel do jogo ............. 18
Figura 28 - Programa do Stage que recebe tecla de pausa ......................................................... 19
Figura 29 - Cdigo da sprite de Pausa ......................................................................................... 19
Figura 30 - Excerto do cdigo de movimento da sprite do Gato e a utilizao da varivel Pausa
..................................................................................................................................................... 19
Figura 31 - Programa da sprite do Gato responsvel por controlar o toque na sprite do Tesouro
..................................................................................................................................................... 20
Figura 32 - Excerto do programa da sprite do Corvo, reponsvel pelo controlo do toque na
sprite do Tesouro ........................................................................................................................ 21
Figura 33 - Programa da sprite Labirinto que gere a mudana de nvel e o fim do jogo ............ 21
Figura 34 - Programa do Stage que recebe o sinal de Fim de Jogo e para o programa .............. 22
Figura 35 - Backdrop do Stage que indica o fim do jogo ............................................................. 22
Gato vs Corvo (implementao em Scratch), Rolando Barradas
23
24