• Nenhum resultado encontrado

INF ALGORITMOS E PROGRAMAÇÃO

N/A
N/A
Protected

Academic year: 2021

Share "INF ALGORITMOS E PROGRAMAÇÃO"

Copied!
7
0
0

Texto

(1)

INF 01202 – ALGORITMOS E PROGRAMAÇÃO

TRABALHO PRÁTICO

Objetivo:

Exercitar as habilidades e conceitos de programação desenvolvidos ao longo da disciplina pela implementação de uma aplicação em C, desenvolvida por um grupo de 2 alunos, que podem ser de turmas diferentes (C e D). A coordenação de um trabalho em equipe faz parte da habilidade de programar.

O programa deve ser estruturado de forma a receber um conjunto de entradas (simultaneamente ou durante o uso do programa), cuja consistência deve ser verificada, processá-las, e fornecer uma ou mais saídas.

Produto do trabalho e datas de entrega

O trabalho será entregue em 3 etapas:

a) Relatório de Andamento: dias 11 e 13 de Maio

Apresentação na aula prática do código do trabalho onde será formalizada a dupla, e mostrada a tela de movimentação do jogador funcionando e as estruturas de dados necessárias.

b) Entrega do código 22 de Junho (Segunda-feira) às 8:30 horas pelo Moodle.

Upload no Moodle em tarefa própria de um ÚNICO arquivo compactado cujo nome do arquivo é o nome dos alunos contendo:

 Programa executável: o programa deve rodar nas máquinas do laboratório das aulas práticas. Verifique se executará sem exceções naquele local antes de entregar.

 Código documentado (arquivos .c, .cpp). Inclua o nome dos autores no cabeçalho do programa.

 Bibliotecas adicionais às que estão disponíveis no laboratório, exceto as conio e curses. Se houver exceções aos requisitos listados neste enunciado, descreva como comentário no início do arquivo fonte.

Você pode fazer upload de diferentes versões e ir aperfeiçoando o programa. Faça o upload assim que tiver uma versão executável, de modo a garantir a entrega e precaver-se de problemas com servidor, redes, internet, etc.

(2)

c) Apresentação

Programa será apresentado no dia 22 de Junho, Segunda-Feira no horário da aula teórica e seguindo no horário da aula prática no laboratório alocado para este fim.

O arquivo a ser apresentado será aquele carregado no Moodle. Nenhuma alteração será permitida. Ambos alunos devem dominar o código para explicá-lo. A ausência de um dos alunos na apresentação acarretará descréscimo da nota para aquele.

Avaliação

O programa deve atender todos os requisitos listados neste enunciado, não deve apresentar erros de compilação e rodar normalmente, pontos serão deduzidos caso contrário.

A aplicação desenvolvida deverá demonstrar os seguintes conteúdos que serão avaliados:

1. (2 pontos) Habilidade em estruturar programas pela decomposição da tarefa em subtarefas, utilizando subprogramação para implementá-las.

2. (2 pontos) Documentação de programas (identação, utilização de nomes de variáveis, abstração dos procedimentos para obter maior clareza, uso de comentários no código).

3. (2 ponto) Domínio na utilização de tipos de dados simples e estruturados (arranjos, estruturas) e passagem de parâmetros. Uso exclusivo de variáveis locais.

4. (1 ponto) Formatação e controle de entrada e saída, com construção de interfaces que orientem corretamente o usuário sem instruções ou intervenção adicional do programador.

5. (1 ponto) Utilização de arquivos binários e de texto.

6. (2 pontos) Atendimento aos requisitos do enunciado do programa: modelo de estrutura de dados, de interação e de relatórios, opções do programa e salvamento intermediário de estado do sistema.

A nota do trabalho prático corresponderá a 10% da nota final.

A apresentação do trabalho prático, mesmo que rodando parcialmente, é pré-requisito para realizar a recuperação.

Contextualização

O aluno deverá programar um jogo de tiroteio contra terroristas. Nesse jogo, o jogador estará em uma base terrorista, com o objetivo de fugir do local com vida, antes que uma bomba exploda e ele morra. O objetivo do jogo é matar todos os inimigos, para obter a chave que destranca a única saída do local, e fugir antes que o tempo acabe.

Implementação

Ficam as duplas livres para o bom uso da criatividade, sendo permitida a criação de enredos, contextualização, implementação de funcionalidades além das especificadas neste enunciado, manifestação de expressão poética, etc. A implementação do espaço jogo deve ser feita em modo texto do monitor (25 linhas por 80 colunas). No entanto, deve-se observar o cumprimento obrigatório dos seguintes itens/conceitos:

(3)

Figura 1 – Exemplo da tela do jogo

1. Regras do jogo

O jogo deverá ser pensado em etapas (níveis de dificuldade) com complexidade crescente. Pelo menos duas etapas devem ser implementadas. Ao concluir uma etapa, o jogador enfrentará o mesmo problema estabelecido no início, mas em uma etapa subsequente. Fica a critério da dupla a definição de quais serão as mudanças ocorridas de uma etapa para outra. Podem, por exemplo, ser adicionados mais inimigos, diminuir o tempo limite da etapa, diminuir o tempo entre os tiros dos inimigos, etc.

A colisão do jogador com tiros inimigos deverá ser tratada, fazendo o jogador perder uma vida e a etapa atual ser totalmente reiniciada. Da mesma forma, a colisão dos inimigos com os tiros do jogador deverá ser tratada, eliminando o inimigo atingido da tela de jogo.

A movimentação do jogador e dos inimigos deverá ser restrita a seu espaço, estabelecido a seguir, no item 3.

O jogador avança de etapa se cruzar a única porta de saída presente na tela do jogo.

2. Menu inicial

Antes de iniciar o jogo propriamente dito, deve ser exibido um menu inicial, que poderá ser navegado com as setas do teclado e pode executar as seguintes funções, a serem selecionadas pelo jogador: novo jogo, carregar jogo, mostrar melhores pontuações e encerrar jogo (quit). Todas essas funções são semelhantes às funções que podem ser executadas pelo menu de jogo, descritas no item 6.

(4)

3. Elementos do jogo

 Refém: será controlado pelo jogador, podendo atirar e se movimentar em quatro direções: para cima, para baixo, para a esquerda e para a direita. Para atirar deve-se usar a tecla de espaço e, para o movimento do refém, devem-se utilizar as teclas de setas do teclado.

 Terroristas: criados aleatoriamente pelo programa, eles podem movimentar-se para cima e para baixo, e atirar na direção do refém. O jogador deve evitar contato com os tiros disparados pelos terroristas.

 Tiros: disparados pelo refém ou pelos inimigos, movimentam-se apenas na mesma direção em que estava o personagem que o disparou (esquerda ou direita), até o fim do espaço-jogo ou até colidir com o refém ou um terrorista.

 Porta de saída: haverá apenas uma, localizada na região oposta ao refém e perto dos terroristas. Ela estará inicialmente trancada e só poderá ser destrancada pelo refém se ele possuir uma chave. O refém apenas poderá passar por ela se a porta estiver destrancada. Caso isso ocorra, a etapa atual será vencida pelo jogador.

 Chave: estará em posse de um dos terroristas. Ela deverá aparecer no espaço-jogo após todos os terroristas serem derrotados pelo jogador, na posição onde se encontrava o último terrorista derrotado pelo refém.

 Vidas: o jogador inicia o jogo com 3 vidas. Cada vez que for atingido por um tiro do inimigo ou não conseguir escapar do local antes que o tempo acabe, deverá perder uma vida. Se perder as 3 vidas, dar a mensagem de fim de jogo e volta para o menu inicial.

 Tempo: haverá um tempo limite, em segundos, para o jogador escapar do local com vida. A passagem do tempo é informada no espaço informativo. O tempo é decrescente e, se chegar a zero, o jogador perderá uma vida e o nível jogado deverá ser reinicializado.

 Pontuação: a medida que derrota inimigos, sobrevive ao tempo e avança de etapas, o jogador deverá ganhar uma pontuação, a ser exibida na tela.

4. Espaço jogo

O espaço-jogo é onde ocorrem as manifestações da vontade do jogador para o personagem que está controlando e as ações dos personagens não controlados, que influenciam nas decisões do jogador. Esse espaço deverá ser limitado por paredes que formam uma região retangular. Na parede que delimita o extremo direito do espaço jogo haverá uma porta de saída do local, que estará inicialmente trancada.

Os elementos que obrigatoriamente deverão estar presentes dentro dos limites do espaço-jogo são: o refém, controlado pelo jogador; os terroristas; os tiros disparados; e a chave para abrir a porta de saída, caso todos os terroristas sejam derrotados.

(5)

Figura 2 – Espaços jogo e informativo

O refém deverá iniciar na posição mais à esquerda do espaço jogo, enquanto que os terroristas, criados aleatoriamente pelo programa, deverão iniciar nas posições situadas na metade da direita do espaço de jogo, protegendo a única porta de saída do local.

Enquanto houver terroristas vivos, a movimentação do refém estará restrita apenas à metade esquerda do espaço jogo, enquanto que a movimentação dos terroristas estará restrita à metade direita. Após todos os terroristas serem derrotados, o refém poderá mover-se por todo o espaço jogo com segurança.

A porta de saída só poderá ser destrancada pelo refém se ele possuir uma chave. O refém apenas poderá passar por ela se a porta estiver destrancada. Caso isso ocorra, a etapa atual será vencida pelo jogador.

5. Espaço informativo

Além do espaço em que se joga, o programa deverá reservar uma área para apresentar as informações correntes da partida, que podem influenciar psicologicamente o jogador. No espaço informativo, obrigatoriamente deverá constar: vidas do jogador; nível atual; tempo restante para concluir a etapa; chave obtida ou não; e a pontuação do jogador.

6. Menu

A tecla TAB deve acionar um menu de opções e pausar o jogo. Esse menu poderá ser navegado com as setas do teclado e deve implementar as funções de novo jogo, salvar jogo, carregar jogo, mostrar melhores pontuações e encerrar jogo (quit).

Além do menu, as teclas N, S, C, H e Q deverão ser utilizadas a qualquer instante do jogo para implementar as seguintes funcionalidades:

(6)

nome dos 5 melhores jogadores e a pontuação mais alta alcançadas para cada um. Se o nome do jogador já existir no arquivo, deve manter apenas o registro de maior pontuação. A inclusão de um novo nome só acontece se o jogador tiver pontuação superior à pontuação mais baixa do arquivo e implica na eliminação do jogador com pontuação mais baixa.

(S) Salvar jogo: Salva todo o status do jogo atual em um arquivo nome.txt, onde nome é o nome do

jogador, e retorna à partida. O status contém: informações sobre o jogador (nome do jogador, vidas restantes, nível, tempo, pontuação atual, posição em que está no espaço jogo, etc.), sobre os inimigos (posições onde cada inimigo está no espaço jogo, velocidade de movimentação, etc.), sobre os tiros (posições onde cada tiro está no espaço jogo, sentido para o qual está se movendo, etc.). Dica: organize essas informações mais importantes em estrutura (uma para o jogador, outra para os inimigos e outra para os tiros).

(C) Carregar jogo: Pede o nome do jogador e carrega todo o status do jogo com o nome fornecido

do arquivo nome.txt.

(H) Mostrar melhores pontuações (highsores): Carrega o arquivo highscore.bin para a memória,

ordena os registros pela pontuação e mostra o nome e os scores dos cinco melhores jogadores.

(Q) Encerrar jogo (quit): Encerra o jogo. Caso um jogo já esteja sendo executado, salva a

pontuação desse jogo no arquivo highscore.bin, e volta ao menu inicial. Caso o jogador já esteja no menu inicial, o programa é encerrado.

7. Pontuações

A pontuação P do jogador deverá ser calculada pela seguinte fórmula:

k

P = ∑ (1 + i) × (10n + t), onde: i=1 2

i = nível atual do jogo k = níveis do jogo

n = número de inimigos derrotados

t = tempo restante de jogo ao concluir o nível

Dessa forma, cada inimigo derrotado vale 10 pontos e o tempo de sobra ao concluir o nível também é somado ao fim da etapa. Além disso, há um fator de ajuste de acordo com o nível, fazendo com que as etapas mais difíceis rendam maiores pontuações.

8. Considerações Finais

Funções e bibliotecas do C++ podem ser utilizadas para fazer a interface somente. Todas as funções de operação do jogo e manipulação de arquivos devem ser codificadas em C puro.

(7)

exemplos de funções úteis dessa biblioteca. Quem desejar implementar em Linux, recomenda-se a biblioteca ncurses.

Referências

Documentos relacionados

Assim, é imperioso que se reconheça a inaplicabilidade do ponto eletrônico para os docentes da carreira EBTT (Ensino Básico, Técnico e Tecnológico), da mesma maneira inaplicável aos

«Por outro lado, vamos ter de olhar para a nossa rede externa da AICEP – uma rede de representação económica do país, juntamente com o Ministério dos Negócios

XXXII Anual de Arte – Salão Cultural, FAAP, São Paulo, SP.. Cupim na Morsa, Espaço Almeida Salles, Funarte, São

Pré-condição: O orientador deverá estar logado no sistema e estar na página da disciplina de TCCs e a atividade de TCC deve estar na etapa de defesa e o aluno tem que ter enviado

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

Declaro meu voto contrário ao Parecer referente à Base Nacional Comum Curricular (BNCC) apresentado pelos Conselheiros Relatores da Comissão Bicameral da BNCC,

Ao longo do processo evolutivo, o ser vivencia as mais diversas personalidades, nos mais diversos momentos e nas mais diversas situações, e quase sempre, tendo

Após a coleta desses dados, determinou- se medidas lineares (incisivo inferior com o Plano oclusal; distância da borda incisal à linha perpendicular ao Plano mandibular, passando