Introdução Funcionamento da Aplicação
Transcrição
Introdução Funcionamento da Aplicação
Projeto de Programação - Entrega Intermédia MEEC - 2012/2013 - 2.Semestre TamagoISTi Introdução Tamagotchi foi um dos primeiros animais de estimação virtuais, extremamente popular no final do último século. O projecto de Programação consistirá na implementação de um animal de estimação virtual semelhante ao Tamagotchi:o TamagoISTi. Um animal de estimação virtual é uma aplicação com que o utilizador interage através de botões que correspondem a ações (ex: alimentar animal, limpar animal, etc.) Pretende-se que os alunos desenvolvam um animal de estimação virtual com as seguintes funcionalidades gerais: • Mostrar estado do animal (ex: Barras de saúde, estado de limpeza, etc); • Receber pedidos de ação pelo utilizador (click dos botões de ação) e efetuar ações pretendidas; • Alterar estado do animal consoante as ações do utilizador. Funcionamento da Aplicação O sistema a implementar poderá ser divido em três grandes módulo: • Animal • Display • Backup O módulo Animal representa e simula o animal virtual, armazenando o seu estado e alterando-o segundo um determinado conjunto de regras. Através do display será possível observar o estado do animal (por exemplo verificar se está subnutrido) e executar ações (por exemplo, alimentar ou exercitar o animal). Também será através desta interface que se poderá sair da aplicação. O módulo de backup permite gravar o estado do animal e relê-lo no início da aplicação. Animal Na versão intermédia do TamagoISTi, o animal simulado apenas pode executar duas ações (alimentar-se e exercitar-se), sendo o seu estado apenas composto pelo peso e estado de saúde. O estado do animal deverá então seguir as seguintes regras: • O peso do animal varia entre 0 e 100. • O animal nasce com 50 unidades de peso. • Se o peso do animal estiver a cima dos 75 ele é obeso • Se o peso do animal estiver a baixo de 25 ele está sub-nutrido • Quando o animal atinge 0 ou 100 unidades de peso, morre As ações de alimentar e exercitar o animal têm os seguintes impactos sobre o estado dele: • Alimentar o animal aumenta o peso em 10 unidades • Exercitar o animal diminui o peso em 10 unidades A passagem de tempo também afeta o estado do animal: • Quando o animal está obeso e passam duas unidades de tempo sem se exercitar, ele engorda 10 unidades, mesmo que não coma. • Quando o animal está sub-nutrido e passam duas unidades de tempo sem se alimentar, ele emagrece 10 unidades, mesmo que não se exercite. Display O display apresentará o nome do animal, o seu estado, e permitirá a interação do utilizador com a aplicação. Para tal, poderá ser dividido em 2 áreas: • apresentação do animal • botões de controle. 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). O peso deverá ser representado por uma barra. As seguintes figuras exemplificam como se poderá representar o estado do diabo da Tasmânia: Diabo sub-nutrido Diabo normal Diabo obeso 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. Os botões de controle permitirão alimentar ou exercitar o animal e sair da aplicação. Backup O estado do animal deverá ser armazenado num ficheiro chamado animal.txt Quando se executa a aplicação, esse ficheiro (animal.txt) deverá ser lido com o estado anteriormente gravado. Quando o utilizador carrega no botão sair, o ficheiro animal.txt deverá ser atualizado com o estado do animal. Se, aquando do início da aplicação, o ficheiro animal.txt não for encontrado, deverá ser pedido ao utilizador o nome do animal a ser criado. No exemplo anterior o animal chama-se Diabo. Implementação A realização da entrega intermédia é individual e será implementada na linguagem C, tal como descrita no livro The C Programming Language - The ANSI edition. 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. Esta biblioteca inclui funções para: • carregar uma imagem a partir do disco; • mostrar no ecrã uma imagem previamente carregada; • detetar teclas pressionadas; • detetar o clique do rato; • determinar a localização do clique. 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 a representação do animal. Passagem do tempo De modo 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 uma unidade de tempo se tratasse. Elementos gráficos A biblioteca SDL permite o desenho de bitmaps (ficheiros no formato .bmp) numa janela, assim, todos os elementos gráficos (por exemplo o fundo da janela contendo os botões) deverão ser criados usando um editor gráfico. Nas aulas teóricas será apresentado o código para alterar a informação apresentada na janela e para detetar os diversos eventos (cliques do rato e teclas pressionadas). Antes do início da codificação do projeto, cada aluno deverá criar os diversos ficheiros gráficos (botões, barra, animal) que serão utilizados na entrega intermédia. Os alunos também deverão fazer um esquema da disposição dos botões e imagens na janela da aplicação. Não é permitida a utilização do diabo da Tasmânia como representação do animal, os alunos deverão escolher outras imagens. A organização da janela poderá ser diferente dos exemplos apresentados. Desenvolvimento da entrega intermédia 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: • Esquematizar a organização do ecrã • Criar imagens que compõem o Display • • • • • • • • Codificar a apresentação dos botões Detetar o clique do rato nos botões Alterar o estado do animal Detetar a morte do animal Apresentar imagem correspondente ao estado do animal Apresentar barra de peso implementar passagem do tempo Implementar leitura e escrita do ficheiro de backup Fluxograma Os alunos deverão desenhar o fluxograma da aplicação principal antes de começarem a sua codificação. Mesmo que durante a codificação do programa o fluxograma seja alterado, este ajudará na estruturação do código. 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 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 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). 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. 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. Submissão do código Cada aluno deverá submeter programa desenvolvido através do sistema FENIX até 7 de Abril às 23h59. Os alunos deverão submeter um ficheiro comprimido (.zip, por exemplo) contendo o ficheiro .c correspondente ao programa desenvolvido e um ficheiro .pdf contendo o fluxograma do programa principal. Avaliação da entrega intermédia A avaliação do projeto terá em conta diversos parâmetros: • Funcionalidades implementadas • Qualidade do código produzido • Estruturação da aplicação e divisão em funções • Comentários e legibilidade do código • Tratamento de erros Apesar da nota da entrega intermédia corresponde a 10% da nota final, e não ser uma prova de avaliação eliminatória, os alunos deverão encarar este projeto como um meio de estudo e autoavaliação fundamental. De modo a tirar o máximo proveito desta prova (ao nível da aprendizagem e nota obtida) os alunos deverão começar a sua implementação o mais cedo possível, tendo tempo para aprender e resolver os problemas. Os alunos deverão contactar o corpo docente de modo a esclarecer todas as dúvidas que ocorram. Após o prazo de entrega será disponibilizada uma solução deste projeto.
Documentos relacionados
1 Introdução 2 Funcionamento da Aplicação
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 tamanh...
Leia mais