1 Introdução 2 Funcionamento da Aplicação
Transcrição
1 Introdução 2 Funcionamento da Aplicação
Projeto de Programação - Entrega Final MEEC - 2012/2013 - 2.Semestre Farm:TamagoISTi 1 Introdução Tamagotchi foi um dos primeiros animais de estimação virtuais, extremamente popular no final do último século e o Farmville é uma das sensações que assolam o Facebook hoje. O projeto de Programação consistirá na implementação de uma quinta de animais de estimação virtuais cada um semelhante ao Tamagotchi, uma quinta de TamagoISTi. Neste projeto final, pretende-se que os alunos desenvolvam uma quinta de animal de estimação virtuais com as seguintes funcionalidades: • Mostra no ecrã o estado de um animal • Alimentar e exercitar o animal apresentado no ecran • Selecionar outro animal a mostrar • Alimentar ou exercitar todos os animais da quinta. • Criar novos animais A quinta permitirá a existência de animais de diversas espécies com ritmos de crescimento e emagrecimento diferentes. 2 Funcionamento da Aplicação O sistema a implementar poderá ser dividido em três grandes módulos: • Quinta • Display • Backup O módulo Quinta armazena numa lista os diversos animais virtuais, sendo armazenando o estado de cada animal e alterando-o com base nos comandos recebidos do Display. Através do Display será possível selecionar um animal, apresentar e observar o seu estado e executar ações (por exemplo, alimentar ou exercitar os animais). Também será através desta interface que se poderá sair da aplicação. O módulo de backup permite gravar o estado dos animais e relê-lo no início da aplicação. 2.1 Quinta Na versão Final do Projeto, os animais simulados deverão ser armazenados numa lista. Cada animal armazenado na lista pertence a uma espécie diferente, mas continua a poder executar duas ações (alimentar e exercitar). Dependendo da espécie, assim cada ação terá um efeito diferente no animal. O estado de cada animal passa a ser composto pelo nome, peso, estado de saúde e espécie. Durante a execução da aplicação é necessário armazenar informação acerca das diversas espécies possíveis: nome da espécie, parâmetro de aumento de peso (quanto peso os animais dessa espécie aumentam quando comem), e parâmetro de diminuição de peso ( quanto peso os animais dessa espécie diminuem quando se exercitam). O número máximo de espécies é 10. O estado de cada animal continua a seguir as seguintes regras: • O peso varia entre 0 e 100. • Cada animal nasce com 50 unidades de peso. • Se o peso de um animal estiver a cima dos 75 esse animal é obeso • Se o peso de um animal estiver a baixo de 25 esse animal está sub-nutrido • Quando um animal atinge 0 ou 100 unidades de peso, morre As ações de alimentar e exercitar um animal dependem da sua espécie: • Alimentar um animal aumenta o peso em X unidade (parâmetro de aumento de peso da espécie) • Exercitar o animal diminui o peso em Y unidade (parâmetro de diminuição de peso da espécie) A passagem de tempo continua a afetar o estado dos animais: • Quando um animal está obeso e passam duas unidades de tempo sem se exercitar, este engorda X unidades (parâmetro de aumento de peso), mesmo que não coma. • Quando um animal está sub-nutrido e passam duas unidades de tempo sem se alimentar, este emagrece Y unidades (parâmetro de diminuição de peso), mesmo que não se exercite. No início da aplicação deverá ser lido um ficheiro (chamado especies.txt)com as caraterísticas das diversas espécies. 2.2 Display A disposição do display mantêm-se a mesma da entrega intermédia, sendo apenas adicionados o seguintes comandos: • Seleção do anima a apresentar • Alimentação de todos os animais • Exercitar todos os animais • Criação de novo animal O display apresentará o animal selecionado: o seu nome, o seu estado, e permitirá o realização de exercício ou alimentação desse animal. Na parte correspondente à apresentação do animal, deverá ser representado o estado de saúde do animal (sub-nutrido, normal, ou obeso) através de três imagens diferentes (uma para cada estado e dependente da espécie). O peso deverá ser representado por uma barra. A barra correspondente ao peso do animal, deverá ter um comprimento proporcional ao peso. Se o animal estiver sub-nutrido ou obeso a barra deverá ser encarnada, caso contrário deverá ser verde: Diabo sub-nutrido Diabo normal Diabo obeso Os botões de controle permitirão alimentar ou exercitar o animal apresentado e sair da aplicação. De modo a selecionar o animal apresentado no ecrã o utilizador deverá usar as teclas do cursor (direta e esquerda) de modo a navegar na lista de animais. Se o utilizador carregar na tecla A, todos os animais da quinta serão alimentados. Se o utilizador carregar na tecla E, todos os animais da quinta serão exercitados. Quando o utilizador carrega na tecla N, deverá ser criado e inserido na lista um novo animal. Sempre que for realizada uma ação (alimentação, exercício ou criação) Deverá ser escrito na consola (usando printfs) o estado de todos os animais vivos (nome, espécie e peso). A imagem apresentada depende do estado do animal (normal, magro, obeso) e da sua espécie (ver secção 5). 2.2.1 Avisos No display também serão apresentados avisos acerca do estado global da quinta, sob a forma de uma marca que muda de cor: • Sempre que um animal passa para o estado subnutrido ou obeso,deverá se apresentada no ecrã e durante 2 segundos uma marca amarela. • Se o número de animais obesos ou subnutridos for menor do que um terço do numero total, deverá ser apresentada no ecrã uma marca verde. • Sempre que mais de um terço dos animais estejam obesos ou subnutridos, deverá ser apresentada no ecrã uma marca cor de laranja. • Sempre que mais do que dois terços dos animais estejam obesos ou subnutridos, deverá ser apresentada no ecrã uma marca vermelha. 2.3 Backup De modo a permitir a interrupcao do jogo, o estado dos animais deverá ser armazenado num ficheiro chamado animal.txt Quando o utilizador carrega no botão sair, o ficheiro animal.txt deverá ser atualizado com o estado de todos os animais vivos. Quando se executa a aplicação, esse ficheiro (animal.txt) deverá ser lido e com base na sua informa,cão a lista de animais deverá ser reconstruida. Se, aquando do início da aplicação, o ficheiro animal.txt não for encontrado, o programa executa-se normalmente, mas com a quinta vazia. 3 Criação de novo animal Aquando da criação de um novo animal, deverá ser lida do teclado a informação desse animal: • nome • espécie O peso do animal recém nascido será de 50 unidades. 4 Morte de um animal Quando um animal morre (porque o seu peso chegou a 0 ou 100) deverá ser eliminado da lista. 5 Espécies A informação referente ao comportamento das espécies encontra-se especificada num ficheiro chamado especies.txt. Cada linhas deste ficheiro contêm a informação e caraterísticas de uma espécie: • nome (uma palavra) • parâmetro de aumento de peso • parâmetro de diminuição de peso Estas características das espécies serão usadas aquando da alimentação e exercício dos diversos animais. O ficheiro especies.txt contem no máximo 10 espécies. O ficheiro especies.txt deverá ser lido no arranque da aplicação. As imagens a usar na representação de um animal devem existir na mesma diretoria do executável e os seus nomes seguem o seguinte formato: • especie-normal.bmp • especie-obeso.bmp • especie-magro.bmp Apresenta-se de seguida um exemplo do ficheiro especies.txt: diabo 10 10 koala 1 1 canguru 5 10 Com base nesta informação, por exemplo, sempre que um canguru se alimenta ganha 5 unidade de peso, enquanto que quando de exercita, perde 10. Para estas espécies deverão existir os seguintes ficheiros: • diabo-normal.bmp diabo-obeso.bmp diabo-magro.bmp • koala-normal.bmp koala-obeso.bmp koala-magro.bmp • canguru-normal.bmp canguru-obeso.bmp canguru-magro.bmp 6 Passagem do tempo De modo a a simplificar a implementação do projeto, a passagem de tempo será simulada carregando na tecla de espaço. O programa tratará este evento como se da passagem de tempo se tratasse. 7 Implementação A realização da entrega final é em grupo de 2 alunos e será implementada na linguagem C, tal como descrita no livro The C Programming Language - The ANSI edition. 7.1 Elementos gráficos Na parte gráfica será utilizada a biblioteca SDL ( http://www.libsdl.org) para a apresentação de imagens numa janela e leitura dos cliques do rato. A janela gráfica da aplicação deverá ter o tamanho 800x600 pixeis. Nessa janela serão desenhados os botões, a barra de peso e as representação de um animal. Cada grupo deverá escolher um e usar os diversos ficheiros gráficos (botões, barra, animal) já criados para a entrega intermédia. A organização da janela poderá ser diferente dos exemplos apresentados. 7.2 Armazenamento dos animais Os alunos devem guardar os animais numa lista, implementando funções para todas as funcionalidades necessárias (por ex: inserir novo elemento na lista, remover elemento da lista), alocando memória dinamicamente à medida que criam novos animais, e libertando a memória respetiva quando um animal morre. 7.3 Armazenamento das espécies As características das espécies poderão ser armazenadas num vetor. 8 Desenvolvimento da entrega final Sugere-se um desenvolvimento faseado do projeto, devendo os alunos garantir que todas as funcionalidades codificadas até esse momento se encontram a funcionar corretamente. É preferível um programa que implementa poucas funcionalidades, mas que funcionam corretamente, do que um programa totalmente desenvolvido mas que não corre. Os alunos deverão seguir a seguinte ordem: 1. Definir o tipo de dados para armazenar um animal 2. Definir o tipo de dados para armazenar todos os animais 3. Criação de animais e armazenamento na lista 4. Seleção do animal a apresentar no ecran 5. Alimentação e exercício do animal apresentado 6. Apresentação na consola do estado de todos os animais 7. Definir o tipo de dados para armazenar uma espécie 8. Definir o tipo de dados para armazenar os dados das espécies 9. leitura e armazenamento dos dados das espécies 10. Passagem de tempo 11. Alimentação de todos os animais 12. Exercício de todo os animais 13. Deteção da morte de um animal na lista 14. Eliminação dos animais mortos 15. Apresenta,cão das marcas de estado da quinta 16. Leitura e escrita do ficheiro de backup 9 Codificação É fundamental o uso consistente de um estilo de formatação e indentação do código (indentação, posicionamento das chavetas, nomes dos identificadores). Este deve ser escolhido pelos alunos, mas consistente em todo o projeto. Existem diversas variações da linguagem C. Aquela que deve ser usada é a apresentada nas aulas teóricas e descrita no livro The C Programming Language - The ANSI edition. O compilador a usar na execução do projeto é o gcc com as opções -Wall -ansi, em ambiente Linux. Projetos que não compilem quando usando as opções anteriores, i.e. que tenham erros de sintaxe, não serão avaliados. A existência de avisos durante a fase de compilação poderá ser indício da existência de problemas no código. Estes deverão ser eliminados corretamente ou ignorados com cuidado. O código produzido pelos alunos deverá ser comentado. Os comentários presentes no código deverão explicitar e explicar o funcionamento da aplicação assim como as decisões tomadas. Para além dos comentários, sugere-se o uso de nomes de variáveis e funções que explicitem o seu uso (para maior legibilidade do código). Como em qualquer projeto de informática, o funcionamento do programa não está totalmente definido no enunciado, existindo algumas ambiguidades e omissões. Para resolver essas omissões os alunos deverão tomar algumas decisões aquando do desenvolvimento do projeto. Estas decisões devem ser fundamentadas, sem nunca ir contra o definido no enunciado. 10 Submissão do código A data limite para entrega do código do Projecto Final é dia 17 de Maio. O nodo de entrega do Projeto será anunciado mais próximo do prazo. 11 Avaliação da entrega final A avaliação do projeto terá em conta diversos parâmetros: • Funcionalidades implementadas • Qualidade do código produzido • Estruturação da aplicação • Comentários e legibilidade do código • Tratamento de erros Para a obtenção da nota mínima (10 valores é necessário) a implementação do seguinte, para um animal sem espécie definida: • Definir o tipo de dados para armazenar um animal • Definir o tipo de dados para armazenar todos os animais • Criação de animais e armazenamento na lista • Seleção do animal a apresentar no ecrã (cursor direito) • Alimentação e exercício do animal apresentado • Apresentação do estado de todos os animais
Documentos relacionados
Introdução Funcionamento da Aplicação
Codificação O programa deverá estar dividido em funções. É fundamental o uso consistente de um estilo de formatação e indentação do código (indentação, posicionamento das chavetas, nomes dos identi...
Leia mais