O objetivo deste trabalho é implementar um jogo Tetris em Racket.
O trabalho é em equipe de até duas pessoas. O compartilhamento de informações entre as equipes é permitido (e aconselhado), mas o compartilhamento de código não é permitido. Trabalhos que tenham porções significativas de código iguais, ou copiados da internet, serão anulados. Veja a resolução Nº 008/2007-COU para as possíveis sansões disciplinares. Cada membro da equipe deverá apresentar o trabalho individualmente para o professor.
O Tetris é um jogo de quebra-cabeça onde tetraminós aleatórios ficam caindo em um campo de jogo. Os tetraminós são formas geométricas compostas de 4 quadrados. O objetivo é mover e rotacionar os tetraminós de maneira a completar linhas. Quando uma linha é completada ela desaparece, as camadas superiores descem e pontos são atribuídos ao jogador. Quando um certo número de linhas são completadas, o jogo entra em um novo nível onde os tetraminós caem mais rápido. Quando a pilha de tetraminós chega ao topo do campo, a partida termina.
Este trabalho consiste na implementação de um jogo tetris em Racket. O jogo implementado deve ser jogável, isto é, tem que ter a mecânica básica do tetris incluindo o término do jogo. A implementação do sistema de pontos e níveis é opcional e vale 1,0 ponto extra (junto com outros requisitos, veja a seção de avaliação).
Um projeto inicial com as definições das estruturas, tetraminós e algumas funções iniciais servirá como base para a implementação do trabalho.
A assinatura o propósito e o cabeçalho de alguns funções essenciais estão definidos. A equipe deve implementar estas funções e criar as funções auxiliares que achar necessário. Todas as funções definidas no escopo global devem ter o contrato, o propósito e os testes. Os testes não são necessários para funções locais, elas são testadas indiretamente quando a função onde elas foram definidas é testada.
Os arquivos iniciais de código e o script de envio estão disponíveis em um repositório git.
Para fazer o download do repositório é necessário ter o git
instalado. No
Ubuntu ou Debian o git
pode ser instalado com o comando apt-get install
git
.
Para fazer o download do projeto, execute o comando
git clone http://malbarbo.pro.br/git/tetris-racket
Após a execução deste comando, um diretório chamado tetris-racket
terá sido
criado.
Você deve escrever o código do programa no arquivo src/racket/tetris.rkt
. Os
testes devem ser escritos no arquivo src/racket/testes.rkt
.
Para executar o jogo, abra o arquivo src/racket/main.rkt
no DrRacket e clique
no botão Correr (ou Crtl-R).
Para executar os testes, abra o arquivo src/racket/testes.rkt
no DrRacket e
clique no botão Correr (ou Crtl-R).
Para enviar o trabalho, execute o comando
make enviar
O script de envio criará um arquivo compactado com os arquivos a serem entregues para correção e enviará para a página do professor.
Após enviar o trabalho, o aluno deverá entrar na página da disciplina, imprimir e assinar o termo de autoria. O termo de autoria é um documento em que o aluno afirma que ele é o autor do código do trabalho que ele enviou e que portanto, não copiou parte significativa do programa de outra pessoa ou da internet. O termo de autoria assinado deve no próximo dia de aula após o termino do prazo para envio do trabalho.
O trabalho será avaliado de acordo com os critérios:
Quem implementar o jogo tetris completo, com as seguintes características
Ganha 1,0 ponto extra na nota do trabalho.
lop-validas?
, lop-livres?
,
limpa
, tetramino->pos-tests
, fixa
, outras.