quarta-feira, 27 de junho de 2007

Jogo Completo



Ontem, no dia 27/06, apresentamos o trabalho deste objeto de aprendizagem, o jogo que agora tem o nome de PacLetras. Desde a última mudança reportada neste blog há muitas novidades. Tudo que havia sido reportado no post anterior foi implementado da maneira como havia sido previsto. Em primeiro lugar, todos as figuras foram mudadas. Os blocos foram refeitos e a cobra agora é um livro. Foi criado 10 fases que possuem 10 imagens distintas.

A introdução, objetivo e regras do jogo, como está na tela inicial, são as seguintes:


"Sobre o Jogo..."

"Este jogo é um projeto realizado pelos alunos Rafael D. Lucchesi e Arthur R. S. Valadares para a materia de Interfaces (MC750) da Universidade Estadual de Campinas. O jogo se encontra atualmente dentro de um Pacotão de jogos realizados pela turma e disponibilizados a todos através do servidor Yai."

"Objetivo..."

"O jogo tenta divertir o jogador enquanto o ensina a forma correta de certas palavras. O jogador tem duas formas de passar em casa fase uma tentando encontrar um caminho logico pelo labirinto e assim pegando as letras necessarias para formar a palavra e portanto vendo a correta grafia da palavra. Ou tentando pegar as letras na ordem da palavra o que o levará ao fim do labirinto e também o mostrará a grafia correta da palavra."

"Instruções..."

"O jogo consiste de um labirinto repleto de letras e uma figura. A figura representa a palavra que o jogador deverá formar para passar de uma determinada fase.O andamento do jogo é atraves das teclas direcionais do teclado. O jogador deve passar com o livro sobre as letras na ordem que formam a palavra necessária. Para cada letra certa pega o jogador ganha 100 pontos e pra cada letra errada ou fora de ordem o jogador perde 10 pontos. O jogador só pode sair da fase após formar corretamente a palavra necessaria senão ele perderá 100 pontos pontos por letra que faltou ser pega e terá q completar a mesma fase novamente. O bloco FIM indica a saída do labirinto. Caso esteje vermelho é sinal que a palavra não está completamente formada. Caso esteje azul é pode-se sair do labirinto para a próxima fase. A tecla Q sai do jogo"

Agora com um fundo o jogo se tornou mais amigável, especialmente para uma criança. As letras estão vermelhas e os blocos mais coloridos, dando uma sensação visual agradável.
Repare também que ao terminar de pegar os blocos do jogo o FIM passa da cor vermelha para azul:



Uma outra fase:
Quando o jogador tenta sair da fase sem completar a palavra há uma penalização e a seguinte tela:

Ao concluir todas as fases do jogo, o jogador recebe os parabéns e sabe sua pontuação final



Uma grande novidade de implementação é a possibilida de expandir as fases. Basta acrescentar um arquivo texto com extensão .lvl, seguindo o modelo já incluso no pacote, que o jogo automaticamente cria a fase e a coloca após a décima fase. Para que se possa jogar as fases extras sem passar pelas 10 anteriores, basta na tela de inicio pressiona simultaneamente ctrl+shift+j (nesta ordem com o ctrl e shift da esquerda) que ele pula para 11ª fase. Uma possível atualização seria simplificar a criação da fase, pois esta exige uma matriz 23x21 indicando o que é bloco, onde está o personagem e o nome do arquivo e o nome da figura a ser pega.

O código será publicado sob licensa GPL v2, no entanto a distribuição do jogo está sujeita a leis de copyright das imagens que foram pegas do google images. O código foi inicialmente pego de um tutorial, mas creio que não haverá problemas com o autor se a publicação for mesmo GPL.

quarta-feira, 30 de maio de 2007

Progresso atual do jogo

Buscando uma solução próxima do que teremos que implementar, encontramos o seguinte tutorial de pygame. Esse tutorial dá uma ótima base para o nosso programa, pois já implementa o labirinto e o boneco que andará pela fase.
A imagem do jogo já executado está ao lado. O jogo deste tutorial consiste na mesma idéia do antigo pac-man, onde um personagem percorre um labirinto coletando as bolinhas.

Algumas modificações já foram feitas. No original o boneco não movia um quadrado inteiro o que dificultava caminhar pelos labirinto. Também havia ações para manter ele andando enquanto se pressiona a tecla, no entanto isso estava dando alguns problemas e foi desimplementado por enquanto.

O que resta fazer agora é trocar os pellets por letras, mostrar a imagem que deve ser escrita e colocar as letras do que está sendo pego na tela.

Quanto a trocar os pellets por letras, a implementação será razoavelmente simples devido a como este jogo foi programado. Para se criar um level, foi usado uma matriz [x][y] contendo valores 0,1,2 e 9 que indicam onde está a cobra, a parede, os pellets e os espaços vazios. Bastará modificar para se ter 27 números correspondendo a cada letra no lugar dos pellets, e implementar o método que coloca os sprites dessas letras na tela. Já no collide dos pellets com a cobra bastará verificar que tipo de sprite foi colidido para depois enviar a respectiva letra para a tela. Com essa estrutura, poderá haver também um número indicando o fim do labirinto, tornando simples também identificar quando o jogador ganha o jogo.

quarta-feira, 2 de maio de 2007

Defesa das propostas de projeto de objetos educacionais

No dia 26 de abril mostramos o esboço do que será o software de aprendizado da disciplina. A imagem abaixo mostra uma amostra do que será o jogo:

A idéia do jogo é alfabetizar a criança de modo divertido. Para sair do labirinto ela é obrigada a passar por cima das letras certas que formam a palavra da imagem (neste caso o cachorro). Este é um exemplo bem simples, mas é possível fazer um labirinto com letras que sejam mais comuns da criança errar, mas que obviamente irão levá-las a um caminho sem saída. Deste modo, se a criança não sabe a palavra ela aprende saindo do labirinto, e se ela sabe, ela reforça se divertindo por ganhar o jogo e conseguir sair do labirinto.
É difícil expandir a idéia por enquanto, mas dentre as possibilidades futuras está colocar armadilhas, teleportes, monstros, etc.
Ainda se está pesquisando a tecnologia que será usada, mas muito provavelmente será python ou flash.