Trabalho Prático #1



Trabalho Prático #1

1) Objetivo

Desenvolvimento de um trabalho prático para a aplicação dos conhecimentos adquiridos sobre programação básica em C, ou seja, programação seqüencial e condicional.

2) Problema

O problema consiste na implementação de um antigo jogo de fórmula 1. A idéia é fazer uma versão simplificada deste, sem obstáculos e sem pista móvel. O jogo é formado pelo carro do jogador que se movimenta horizontalmente e pelos carros adversários que se movimentam verticalmente. O objetivo do jogo é que o jogador evite o maior número possível de carros adversários. Os carros adversários descem na tela e o jogador através de deslocamentos horizontais do seu carro tenta evitar colisões. O jogo termina quando o jogador não tiver mais carros (vidas) disponíveis.

[pic]

O jogo possui as seguintes regras:

a. - A área de jogo compreende uma faixa de 24 linhas e de 30 colunas da tela de texto, sabendo que a tela completa possui 24 linhas por 80 colunas.

- Existem 2 tipos de carros no jogo. O carro do jogador e os carros adversários (no mínimo devem ter 5 carros adversários simultaneamente na tela).

- Os carros podem ser representados por um conjunto de caracteres textuais adequado ou por um conjunto de caracteres semi-gráficos (ver tabela ASCII).

- A pista de fórmula 1 deve ser representada por um conjunto de caracteres textuais adequado, tipo "|" ou por um conjunto de caracteres semi-gráficos. A pista será uma reta, não contendo curvas nem obstáculos de qualquer sorte.

- O jogo possui 2 velocidades, a saber: velocidade 1 e velocidade 2. Estas velocidades estão relacionadas com a velocidade com que os carros adversários descem na tela. A velocidade atual deve ficar impressa na tela de jogo. Sempre que desejar, o jogador poderá alterar a velocidade do jogo através de uma tecla pré-definida no teclado.

- A posição horizontal do carro do jogador deve ser controlada pelo teclado, através das setas esquerda e direita (ou outra combinação de teclas).

- O carro do jogador deverá ocupar sempre as últimas linhas da tela (não é permitido movimento vertical, só horizontal).

- A posição inicial dos carros adversários deve ser determinada aleatoriamente, sendo que a sua trajetória não será mais alterada até passar pelo carro do jogador. Assim, não é permitido movimento horizontal dos carros adversários durante a descida, somente movimento vertical.

- O jogador possui no máximo 3 vidas, ou seja, ele poderá colidir até 3 vezes com um dos carros adversários. Quando ocorrer a quarta colisão, o jogo deverá ser suspenso e o jogador deverá ser informado que perdeu o jogo através de uma mensagem na tela (Por exemplo: Game Over).

- Sempre que houver uma colisão, será retirada uma vida do jogador, os carros adversários que por ventura estejam descendo serão suprimidos e novos carros adversários começarão a descer.

- O escore do jogador deverá ser exibido na tela. Cada carro adversário evitado pelo jogador vale 100 pontos e a cada 5000 pontos, o jogador ganha uma vida adicional que será computada como crédito. Assim, caso o jogador perca suas 3 vidas, antes de terminar o jogo, deverá ser verificado quantos créditos o jogador possui. Caso o jogador possua vidas adicionais, o jogo continuará até que ele não possua mais vidas adicionais. O crédito deverá ser exibido na tela.

Dicas de Implementação:

Devem ser utilizadas as funções da biblioteca CONIO.H (vide referência). Esta biblioteca oferece funções para limpeza da tela, posicionamento do cursor, escolha de cores, leitura do teclado, etc.

DICA: Se forem utilizadas cores, é necessário empregar a função cprintf(...) ao invés de

printf(...), caso contrário as cores não aparecerão.

É importante lembrar que um jogo não pode ficar esperando o usuário pressionar uma tecla, portanto deverá ser utilizada a função kbhit(), que retorna 1 se uma tecla tiver sido pressionada (mas não espera!). Depois, basta ler a tecla:

char tecla;

...

if (kbhit()) tecla = getch(); // só lê se uma tecla for pressionada, não fica esperando

... continua

É possível que o jogo fique muito rápido. Para minimizar esse efeito, sugere-se a utilização de uma função de retardo, como delay(int tempo), que faz com que o processador espere tempo milissegundos.

Um número aleatório pode ser gerado através das funções rand() e random(int num), definidas na biblioteca STDLIB.H (consultar o help para verificar o modo de utilização destas funções).

3) Critérios de avaliação:

3.a) Trabalho a ser desenvolvido individualmente ou em duplas

3.b) Apresentação mínima:

3.b.1) arquivo com o texto do programa fonte

3.b.2) comentários mínimos exigidos no programa fonte:

- nomes dos alunos

- data da última alteração

- comentários a respeito de variáveis e cálculos realizados

- comentário sobre a combinação de teclas a ser utilizada para jogar (deslocamento do carro do jogador e alteração de velocidade)

3.b.3) listagem do programa, com a correta indentação

3.c) Trabalhos com erros de sintaxe (compilação) não serão aceitos.

3.d) Em caso de erro de semântica (conteúdo), o peso final do trabalho pode sofrer

uma redução de até 100 % do peso inicial.

3.e) Em caso de comprovação de fraude escolar os pesos de todos os trabalhos

envolvidos serão automaticamente anulados.

4) Entrega do trabalho:

4.a) Data de entrega: 19 / 09 / 2000, impreterivelmente.

4.b) O arquivo contendo o programa fonte do trabalho deve ser entregue em disquete 3 1/2" HD, rotulado com os nomes completos.

4.c) O nome do arquivo do programa fonte a ser entregue deve ser constituído pelos

últimos sobrenomes dos nomes, seguidas do dígito "1".

Exemplo: Ana Paula Lemos e Robson Silva, seria: LemosSilva1.C

4.d) A listagem deve ser entregue diretamente ao professor até a data de entrega prevista.

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download

To fulfill the demand for quickly locating and searching documents.

It is intelligent file search solution for home and business.

Literature Lottery

Related searches