Baixe o app para aproveitar ainda mais
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.
Compartilhar