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

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