# Segundo trabalho prático de Tópicos Especiais em Programação I **Leonardo F. E. Albergaria e Rafael de O. Cozer DI/UFES** ## Visão Geral > O projeto visa recriar, de forma simplificada e utilizando a linguagem C, a interface de batalha dos clássicos jogos "Pokémon" da Nintendo. > Nesse código, visou-se, também, a implementação de um arquivo de placares, à fim de ranquear os jogadores, os quais obtém pontos a cada batalha vencida. > Como no primeiro trabalho, o código foi elaborado utilizando-se diversas TAD's. Além disso, foram utilizados novos conceitos, como listas encadeadas e ponteiros de função. ```python _.----. ____ ,' _\ ___ ___ ____ _,-' `. | | /`. \,-' | \ / | | \ |`. \ __ \ '-. | / `. ___ | \/ | '-. \ | | \. \ \ | __ | |/ ,','_ `. | | __ | \| | \ \/ /,' _`.| ,' / / / / | ,' _`.| | | \ ,-'/ / \ ,' | \/ / ,`.| / / \ | | \ \ | \_/ | `-. \ `' /| | || \_/ | |\ | \ \ \ / `-.`.___,-' | |\ /| \ / | | | \ \ `.__,'| |`-._ `| |__| \/ | `.__,'| | | | \_.-' |__| `-._ | '-.| '-.| | | `' '-._| ``` ## Sobre as bibliotecas ### 1. Jogador.h > Nessa biblioteca implementou-se os trechos de códigos relacionados aos jogadores, como a verificação de nome, a lista de pokémons do jogador, alterar variáveis relacionadas (Quantidade de pokébolas, pokémons e vitórias), bem como, obviamente, atribuir tais dados à estrutura do jogador. ### 2. Pokemon.h > Biblioteca relacionada aos pokémons e todas suas atribuições. Nesta, implementou-se as estruturas de cada um dos seis pokémons com suas respectivas variáveis, a dispatch table para seleção dos pokémon, assim como uma função para averiguar possíveis efeitos aplicáveis aos pokémon. EXTRA: Implementou-se, também, uma dispatch table para printar na tela os desenhos dos pokémon durante as batalhas. ![](https://i.imgur.com/kTr8OaK.png) ### 3. Menu.h > Biblioteca simples apenas para inicializar e printar o menu principal, bem como o menu para seleção dos pokémon iniciais. ### 4. Ataque.h > Nessa biblioteca, implementou-se os ataques dos pokémons, bem como trechos de códigos onde calcula-se os danos durante as batalhas, tendo em conta a relação de tipo dos pokémon. ### 5. Batalha.h > Aqui, implementou-se os trechos de código responsáveis por fazer a batalha acontecer, utilizando dos atributos das bibliotecas anteriores. Trabalhou-se os códigos relacionados aos turnos das batalhas, o menu de opções do jogador durante uma batalha, bem como um trecho de código responsável por gerar um número aleatório, à fim de calcular probabilidades durante as batalhas (Probabilidade de captura, fuga, crítico, efeitos aplicáveis, etc.). ### 6. Placar.h > Por fim, criou-se a biblioteca de placares, responsável por criar e alterar a lista de placares após cada partida, printando o ranking dos jogadores no arquivo de placares. ########################################################################## ## Uso dos arquivos txt ### Arquivo logs.txt > Arquivo utilizado para armazenar o histórico das batalhas. O histórico armazenado fica disponível até a próxima vez que o programa for inicializado novamente. ```cpp 1.1 - Mew vs Blastoise Mew usou Auto-Destruir Mew - 0.0% HP Blastoise - 79.3% HP leonardo perdeu! 1.2 - Pikachu vs Blastoise Blastoise usou Arma de Água Pikachu - 83.4% HP Blastoise - 79.3% HP Pikachu usou Bater Pikachu - 83.4% HP Blastoise - 73.5% HP ``` ### Arquivo placares.txt > Arquivo utilizado para ranquear os jogadores de acordo com sua pontuação obtida. > Em caso de empate, o ranqueamento é feito por ordem alfabética, independente de maiúsculas ou minusculas. ```cpp leoNArdo 6 dANIEl 3 Rafael 3 LuCas 1 ```