Batalha Naval - trabalho PDF

Title Batalha Naval - trabalho
Course Oficina de Computação
Institution Universidade Federal do Paraná
Pages 21
File Size 106.2 KB
File Type PDF
Total Downloads 97
Total Views 158

Summary

Relatório de trabalho - construção do jogo batalha naval em linguagem C...


Description

BATALHA NAVAL

Curitiba, 2017

1. O funcionamento geral do jogo segue a lógica: -Posicionamento das embarcações; -Ataque; -Todas as embarcações de um dos mapas foram afundadas? -Se sim, o jogo termina e é mostrado os resultados. -Se não, o Jogo volta ao modo ataque. A manipulação das strings com vetor para os nomes, tanto das embarcações como dos jogadores, dentro das structs mostraram diversos problemas, usando ponteiro e alocando memória para elas facilitou a manipulação dentro das funções. Como o programa envolve o recebimento de diversos inputs do teclado, um problema recorrente foi o "enter" no stdin, então foi necessário uma função especifica para limpa-lo. Inicialmente o jogo irá, pelas funções "iniciar.c" inicializar as matrizes colocando as coordenadas na própria matriz e os "." que representam o espaço vazio. Foi utilizado quatro matrizes, duas para cada jogador, um para as embarcações e outra para os ataques do adversário. O jogador irá posicionar as embarcações passando as coordenadas da matriz (A-J e 0-9), optou-se por mudar o caráter recebido para uma variável inteira a subtraindo, fazendo o 'A' valer um. O computador escolhe as coordenadas para a colocação das embarcações aleatoriamente pela função rand. Ambos irão passar pelas mesmas funções de verificação para então a colocação na matriz. Durante o ataque as duas matrizes são comparadas para efetivação do tiro, é verificado o que foi acertado, que irá passar para componente da struct jogador "jogada", que na função "imprimir" mostrará o resultado do tiro. Também foi usado na struct "Embarcações" um vetor com duas posições para cada navio que indicam quantas partes da embarcação foram acertadas por cada jogador. Além disso, essas variáveis são comparadas com o tamanho do navio, que caso sejam iguais, incrementa na variável presente na struct jogador que indica quantas embarcações foram afundadas. Depois de cada tiro é visto se o número de embarcações afundadas é igual ao número total delas, caso seja verdadeiro, o jogo sairá do laço atual e irá mostrar os resultados do jogo.

2. LISTAGEM DE CÓDIGO - Estruturas e funções #include"iniciar.h" /**************************************************************************** Arquivo "iniciar.c". Inicia as variaveis do jogo e as matrizes, utilizando o arquivo de cabeçalho "iniciar.h". ****************************************************************************/ void inic_COM (struct Jogador *J){ J->nome = "COMP"; J->tiros=0; J->fogo=0; J->embarcAfundadas=0; J->status='\0'; } void inic_Player (struct Jogador *J){ char ch; int i=0; clear(); header(); printf("_______________________________________________________\n"); printf("Apelido:(sem espaçoes,max 4 caracteres)\n"); ch = getchar(); ////////checa e guarda no nome adicionando '\0' no final///////////////////////////// while (((ch != '\n') && (ch != '\0')) && (inome[i]= ch; ch = getchar(); i++; } J->nome[i]= '\0'; clear(); J->tiros=0; J->fogo=0; J->embarcAfundadas=0; J->status=' '; } void inic_embarcacoes (struct embarcacoes *embarc){ int i,quem; embarc[0].nome = "Porta-aviões"; embarc[0].sigla = 'P'; embarc[0].tam = 5;

embarc[1].nome = "Embarcação de Guerra"; embarc[1].sigla = 'N'; embarc[1].tam = 4; embarc[2].nome = "Cruzador"; embarc[2].sigla = 'C'; embarc[2].tam = 3; embarc[3].nome = "Submarino"; embarc[3].sigla = 'S'; embarc[3].tam = 3; embarc[4].nome = "Destruidor"; embarc[4].sigla = 'D'; embarc[4].tam = 2; for (i=0;i%s\n",j1.nome,j2.nome); for (i=0;i...


Similar Free PDFs