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.