Buscar

Relatório - Marlon

Prévia do material em texto

MINISTÉRIO DA EDUCAÇÃO 
UNIVERSIDADE FEDERAL DO AMAZONAS – UFAM 
INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA – ICET 
CAMPUS UNIVERSITÁRIO MOYSÉS BENARRÓS ISRAEL 
BACHARELADO EM ENGENHARIA DE SOFTWARE 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
TRABALHO FINAL DE IPE2 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ITACOATIARA-AM 
2020
 
2 
 
MINISTÉRIO DA EDUCAÇÃO 
UNIVERSIDADE FEDERAL DO AMAZONAS – UFAM 
INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA – ICET 
CAMPUS UNIVERSITÁRIO MOYSÉS BENARRÓS ISRAEL 
BACHARELADO EM ENGENHARIA DE SOFTWARE 
 
 
 
 
 
 
MARLON DEIVID LOPES DA SILVA 
 
 
 
 
TRABALHO FINAL DE IPE2 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ITACOATIARA-AM 
2020 
Trabalho referente ao assunto de Introdução a 
Programação Estruturada 2, apresentado, como 
requisito para obtenção de nota parcial, do 
segundo período do segundo semestre de 2020, 
solicitado pelo professor Alternei de Souza Brito, 
ministrante da disciplina de Introdução a 
Programação Estruturada 2, no Curso de 
Bacharelado em Engenharia de Software, do 
Instituto de Ciências Exatas e Tecnologia – ICET. 
 
3 
 
Introdução 
O jogo da velha é um jogo e/ou passatempo popular. É um jogo 
extremamente simples, que não traz grandes dificuldades para seus jogadores 
e é facilmente aprendido. A referência mais antiga que se tem desse passatempo 
surgiu em escavações no templo de Kurna, do século XIV antes de Cristo, no 
Egito. Achados arqueológicos, porém, mostram que ele foi desenvolvido 
independentemente em diferentes regiões do planeta, como na China antiga e 
na América pré-colombiana. Sabe-se também que faz parte dos jogos 
conhecidos como “família do moinho” ou “trilha” – nos quais o objetivo é 
posicionar as peças de modo que formem uma linha reta. Há também versões 
em que variam os números de linhas e colunas, geralmente três ou cinco. 
Conhecido praticamente em todo mundo, o jogo varia de nome conforme a 
região. Na China de 500 a. C., era conhecido como luk isut k-i. Nos países de 
língua inglesa, chama-se tic-tac-toé. 
 
 
4 
 
Objetivos 
Meu objetivo é criar um programa em C faça um jogo da velha, como o 
que jogamos em um papel. Dois usuários irão se identificar, e cada um vai ter 
sua vez de jogada, podendo ter duas possibilidades, ou um deles sai vencedor, 
ou haverá um empate. Utilizando funções e os comandos do C, vou criar o 
programa que fara essa interação com o usuário, limitando eles a seguir as 
regras do jogo e competindo para tentarem vencer, desafiando para várias 
jogadas seguidas e no final haverá uma estatística de quantas jogadas foram 
feitas e quantas cada um deles venceu. 
Detalhes da implementação 
Foram criadas variáveis globais que serviram como contadora e puderam 
fazer interação em mais de uma função, facilitando assim a contagem de quantas 
partidas foram jogadas e também vezes cada jogador ganhou, além também de 
variáveis para fazer a porcentagem de vitória de cada jogador. 
 
Figura 1: Variáveis Globais. 
Estrutura de dados utilizada 
Crie apenas uma struct contendo duas variáveis que ficarão responsáveis 
por armazenar o nome dos dois jogadores que irão jogar, para no final, quando 
forem ver as estatísticas do jogo, possam ver quantas vezes eles ganharam. 
 
Figura 2: Struct com informações do usuários. 
 
 
5 
 
 
Funções 
A 1ª função que eu criei foi a que ficou responsável por fazer a criação da 
matriz, com variáveis contadores que delimitaram cada linha e coluna que seria 
utilizada no código, além de uma matriz denominada jg com uma dimensão de 
3x3 e duas variáveis globais definidas no começo do programa. 
 
Figura 3: Criação da matriz. 
A 2ª função ficou responsável pela impressão da matriz, utilizando o 
mesmo princípio da 1ª função, ela tem variáveis que vão delimitar o tamanho da 
matriz, utiliza também variáveis contadores para definir onde cada elemento 
pode ser inserido. O printf define o número da linha e da coluna onde o usuário 
irá escolher onde inserir o elemento. Os for são para estabelecer qual linha e 
colina está sendo imprimida e os if servem para definir onde cada elemento 
poderá ser inserido e por fim, o printf para mostrar na tela todo o layout já criado. 
 
Figura 4: Impressão da matriz. 
 
6 
 
A 3ª função ira determinar qual se o caractere que irá ser inserido no 
nosso jogo da velha será o “X” ou “O”, caso seja um desses caracteres, ele irá 
retornar 1, que determinara que a condição é verdadeira. 
 
Figura 5: Validação dos caracteres. 
A 4ª função ira determinar as coordenadas que os usuários poderão 
digitar, para a inserção dos elementos, caso o valor digitado seja verdadeiro, ira 
retornar 1. 
 
Figura 6: Validar as coordenadas. 
A 5ª função irá verificar se a posição que o usuário quer inserir o elemento 
está vazia ou não, se essa condição for verdadeira, então o usuário poderá 
inserir o valor, caso contrário, terá que escolher uma outra posição. 
 
Figura 7: Verificação da posição. 
A 6ª função irá fazer uma verificação de cada uma das três linhas da 
matriz, comparando o caractere de cada posição com o seguinte. E essa função 
que determinara se o jogador venceu nas linhas da matriz, verificando o “X” e o 
“O” de suas linhas. 
 
7 
 
Como podemos ver no código, ele possui três variáveis, ambas sendo 
contadoras, duas delas (i e j), ficarão responsáveis por determinar índice que 
será verificada e a outra (g), ficara responsável por verificar se o jogador venceu 
em uma das três linhas existente na matriz. 
Ela também usa a função val, que irá verificar os caracteres que existes 
em cada posição e fazer a sua comparação de cada linha e ver se todos os 
elementos nela presente são iguais, caso a condição for verdadeira, a variável g 
irar receber um incremento e ao será comparada, se for igual a 3, irá retornar 1, 
que sinalizara que a linha comparada foi vencedora. 
 
Figura 8: Verificação de quem ganhou nas linhas da matriz. 
A 7ª função tem semelhança com a função mencionada anteriormente, só 
que ela ficara responsável por fazer verificar se o jogador venceu nas colunas 
da matriz, percorrendo cada uma das colunas existentes na matriz. 
Como podemos ver no código, ele possui três variáveis, ambas sendo 
contadoras, duas delas (i e j), ficarão responsáveis por determinar índice que 
será verificada e a outra (g), ficara responsável por verificar se o jogador venceu 
em uma das três linhas existente na matriz. 
Ela também usa a função val, que irá verificar os caracteres existes em 
cada posição e fazer a sua comparação de cada coluna e ver se todos os 
elementos nela presente são iguais, caso a condição for verdadeira, a variável g 
irar receber um incremento e ao será comparada, se for igual a 3, irá retornar 1, 
que sinalizara que a coluna comparada foi vencedora. 
 
8 
 
 
Figura 9: Verificação de quem ganhou na coluna da matriz. 
A 8ª função ira percorrer e comparar cada elemento existente em cada 
diagonal, verificando qual jogador venceu na diagonal que está sendo 
comparada. 
Como podemos ver no código, ele possui duas variáveis, ambas sendo 
contadoras, uma delas (i), ficara responsável por determinar o índice que será 
verificada e a outra (g), ficara responsável por verificar se o jogador venceu em 
uma das três linhas existente na matriz. 
Ela também usa a função val, que irá verificar os caracteres existes em 
cada posição e fazer a sua comparação de cada diagonal principal e ver se todos 
os elementos nela presente são iguais, caso a condição for verdadeira, a variável 
g irar receber um incremento e ao será comparada, se for igual a 3, irá retornar 
1, que sinalizara que a diagonal principal comparada foi vencedora. 
 
Figura 10: Verificação de quem ganhou na diagonal principal da matriz. 
 
9 
 
A 9ª função ira percorrer e comparar os elementos existentes na diagonal 
secundária, verififcando qual foi o jogador que venceu. 
Como podemos ver no código,ele possui duas variáveis, ambas sendo 
contadoras, uma delas (i), ficara responsável por determinar o índice que será 
verificada e a outra (g), ficara responsável por verificar se o jogador venceu em 
uma das três linhas existente na matriz. 
Ela também usa a função val, que irá verificar os caracteres existes em 
cada posição e fazer a sua comparação de cada diagonal segundaria e ver se 
todos os elementos nela presente são iguais, caso a condição for verdadeira, a 
variável g irar receber um incremento e ao será comparada, se for igual a 3, irá 
retornar 1, que sinalizara que a diagonal secundaria comparada foi vencedora. 
 
Figura 11: Verificação de quem ganhou na diagonal secundaria da matriz. 
A 10ª função que ficara responsável por fazer toda interação com o 
usuário, começando por mostrar para o usuário a matriz impressa na tela, logo 
após, terá uma variável contadora que irá determinar qual jogador fará a jogada, 
essa variável contadora está ligada com a função imprimir, se ela for ímpar, o 
jogador 1 fara sua jogada e se for par, o jogador 2 fara sua jogada. Logo após 
isso, será pedido do jogador a linha e a coluna em que ele deseja inserir o 
elemento, ele só poderá sair dessa parte se digitar um valor válido, caso 
contrário, não conseguirá sair dela. Após isso, uma variável irá receber o valor 
da função coorVal, que verificará que se a posição para inserção do elemento é 
válida, se sim, v irá receber um incremento da função posiVazia, que irá retornar 
1, caso a posição em que o usuário deseja inserir o elemento esteja disponível. 
Após isso a variável ord verificara qual elemento será inserido na matriz, se “X” 
 
10 
 
ou “O”, sofrendo um incremento em cada jogada de um usuário. Após isso, a 
variável g receberá um incremento dos valores de retorno das funções glin, gcol, 
gdiagpri e gdiagsec, verificando se o número de jogadas, se ela for diferente de 
0, então mostrada qual jogador venceu e armazenado o número de vitórias em 
uma variável contadora, caso contrário, mostrará que a jogada terminou em 
empate. No final, será feita a porcentagem de partidas vencidas por cada um dos 
jogadores. 
 
11 
 
 
Figura 12: Função de interação com o usuário. 
 
 
12 
 
A 11ª função também entrará em interação com o usuário, só que ela e 
quem fara a primeira interação, perguntando o nome do usuário e se ele quer 
continuar jogando, dará início a matriz vazia que aparecerá para o usuário, 
chamando a função iniciarMatriz e logo após a função jogar. Após o fim de cada 
jogada, o usuário poderá optar por continuar jogando ou parar o jogo, caso ele 
opte por parar, será mostrado as estatísticas do jogo, mostrando quantas 
partidas houveram e quantas jogadas cada um deles venceu, além também da 
porcentagem de vitória de cada um deles. 
 
Figura 13: Função principal do programa. 
Recursos principais: 
A fácil interação com o usuário pode ser colocada como principal recurso 
desse código. Como o C é uma linguagem de alto nível, fica muito fácil qualquer 
 
13 
 
um interagir com esse jogo, tendo os recursos necessários para o usuário saber 
o que fazer, dentro do código.

Continue navegando