Relatorio Jogos Algoritmo
Por: geomenegasse • 6/11/2019 • Relatório de pesquisa • 4.150 Palavras (17 Páginas) • 269 Visualizações
TRABALHO PRÁTICO
Algoritmos e Estruturas de Dados I
Geovanna Menegasse Silva
Guilherme Augusto Rezende Gusmão
1. OBJETIVO:
Este projeto tem como objetivo o desenvolvimento de jogos de raciocínio lógico na linguagem C. O programa apresenta 8 jogos de forma interativa e explicativa. São estes:
1) Jogo da Corrente: o jogo apresenta um tabuleiro com 20 casas (cada casa representando um elo de uma corrente). Na sua vez, cada jogador decide se irá marcar 1 ou 2 casas, não podendo pular a vez, nem deixar espaços vazios no meio da corrente. O jogador 1 marcará suas casas com “X”s, enquanto as casas do jogador 2 serão marcadas com “O”s
A estratégia para se garantir a vitória do Jogador 1 consiste em duas partes: a criação de um “grupo controle” e análise do resto de uma divisão. Como podemos marcar apenas 1 ou 2 casas, as possibilidades de uma rodada (uma jogada para cada jogador) são as seguintes:
OX (tamanho 2) OXX (tamanho 3) OOX (tamanho 3) OOXX (tamanho 4)
Foi considerado primeiro a marcação do Jogador 2, pois estamos buscando uma estratégia para a vitória do Jogador 1, e é ele que montará este “grupo controle”, que deverá ter sempre o mesmo tamanho, e não pode se alterar ao longo do jogo. A primeira opção não funciona, pois se o Jogador 2 marcar 2 casas, qualquer movimento do Jogador 1 extrapola o grupo controle. Por outro lado, a última opção também não é viável, pois se o Jogador 2 marcar apenas 1 casa, o Jogador 2 não consegue marcar 3 casas (assim, o grupo controle não teria sempre tamanho 4). Já o tamanho 3 sempre funciona, pois para cada movimento que o Jogador 2 faça, o Jogador 1 sempre tem um movimento que o possibilite manter o tamanho 3.
Agora, basta que o jogador 1 divida o número de elos da corrente por 3, e comece marcando o resto da divisão (com a corrente de tamanho 20, ele deve iniciar marcando 2).
2) Jogo dos Sapos: o jogo tem um tabuleiro de sete posições. As três primeiras e as três últimas estão ocupadas por um sapo cada. Utilizando os movimentos de pular para uma casa para frente, ou por cima de um sapo, o jogador deve mover os três sapos da esquerda para o lado direito, e vice-versa.
A solução do jogo parte exatamente do princípio que um sapo é capaz de pular apenas por cima de um sapo, mas não por cima de dois ou mais. Iniciando-se por qualquer um dos lados, o jogador deve sempre se atentar ao fato que, movimentando certos sapos, sua próxima jogada necessariamente deixará sapos do mesmo tipo em casas consecutivas, impossibilitando a continuidade do jogo.
Exemplo de resposta: 3 5 6 4 2 1 3 5 7 6 4 2 3 5 4
3) Jogo da Senha: o jogo consiste em descobrir uma senha numérica composta de quatro dígitos de 0 a 9, todos distintos entre si. Para isso, o(s) jogador(es) digitam um palpite, e recebem uma dica, que informa quantos algarismos estão na senha, e se eles estão na posição correta ou não. Comparando os palpites e suas respectivas dicas, ganha quem conseguir colocar os quatro dígitos da senha nas posições corretas.
4) Desafio do Primos: Utilizando os números de 1 a 10, o jogador deve ordená-los de modo que a soma de dois números adjacentes sempre resulte em um número primo.
Exemplo de resposta: 10 9 8 5 6 7 4 3 2 1
5) Desafio das Portas (Monty Hall): o jogo consiste em três portas, atrás das quais há objetos: em uma delas, há um carro; atrás das outras, bodes. O jogador escolhe uma das portas, que ele acredita esconder o carro. Após isso, revela-se o conteúdo de uma das portas que não foi escolhida, e é dada ao jogador a chance de trocar de porta, ou manter a que ele havia escolhido. Alguma dessas duas opções dá ao jogador maior chance de ganhar o carro, ou trocar de porta é irrelevante nesta situação?
Como não sabemos onde está o carro, temos de considerar as três possibilidades (isto é, o carro estar atrás da porta 1, da porta 2, ou da porta 3). Além disso, consideraremos que, em qualquer dos casos, o jogador escolhe sempre a porta 1 (caso ele escolha outra porta, basta mudar a ordem das portas, juntamente aos prêmios e renomeá-las convenientemente). É importante notar também que não interessa qual porta terá seu conteúdo revelado, visto que sempre haverá um bode atrás dela, para que o jogo vá até o final. Desse modo, sendo B a porta que aberta pelo “apresentador”, C a porta que contém o carro (que, para o jogador, ainda está fechada), ? a outra porta fechada (que também conterá um bode), e em negrito a porta escolhida pelo jogador, o jogo se encontra da seguinte maneira:
C B ? ? C B ? B C
Assim sendo, ao ser perguntado se deseja mudar de porta ou não, podemos observar que, caso ele mude de porta, ele perderia o carro na 1° possibilidade, mas ganharia tanto na 2° quanto na 3°. Portanto, mudando de porta, o jogador tem 2/3 de chance de ganhar o carro.
6) Jogo do Dragão: o jogo consiste em um tabuleiro interativo, com o formato de um dragão, e uma tabela de instruções. O dragão tem, inicialmente, três caudas e três cabeças. Para vencer o jogo, é preciso remover todas as caudas e todas as cabeças do dragão, utilizando dos 4 movimentos possíveis, quantas vezes forem necessárias.
Para solucionar este problema, o jogador deve perceber que o único modo de o dragão ficar sem cabeças é removendo-as duas a duas (ou seja, devemos ter um número par de cabeças quando não houverem mais caudas). Uma forma de se obter esse resultado com o mínimo de movimentos é com a sequência de comandos cccdddbbb. Algumas permutações dessa sequência geram outras respostas também com o mínimo de movimentos.
7) Forca: o jogo consiste em uma forca normal. O jogador 1 digita uma palavra e o jogador 2 insere letras para tentar descobrir qual é a palavra. A cada erro, um membro do bonequinho é adicionado. Ao completar 7 erros, o boneco já está completo e ele é enforcado, fazendo o jogador 2 perder o jogo.
8) Campo Minado: o jogo apresenta um tabuleiro com 81 casas. Dessas casas, 71 são seguras e 10 possuem bombas. O jogador deve informar a linha e a coluna da casa que deseja abrir. Se tiver uma bomba na casa, perde o jogo. Se tiver vazio ou um número, não tem bomba, mas esse número indica quantas bombas tem por perto. O jogador ganha se abrir as 71 casas seguras sem abrir nenhuma bomba.
Obs.: o projeto contém alguns “bugs” no tratamento de erros, como por exemplo digitar letras aonde seria para digitar números. Quando isso acontece, o programa entra em loop e só sai do loop se fecharmos a janela. Além disso, alguns erros de usabilidade estão presentes visto as limitações da linguagem C e do conhecimento apenas de AEDS 1. Ao longo do curso, esse projeto será aprimorado e os “bugs” serão corrigidos. Para melhorias futuras do projeto, preferimos a linguagem Java.
...