Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO ACADÊMICO DO AGRESTE NÚCLEO DE TECNOLOGIA CURSO DE ENGENHARIA DE PRODUÇÃO Campo Minado Alunos: Dara Alice; Deivson Lucas; Fillipe Néri. Turma: 2014.1 Disciplina: Algoritmos e Programação de Computadores Professora: Michele Mara de Araújo E. Lima Caruaru, 07 de agosto de 2014. 1 – Resumo Em busca de pôr em prática o nosso aprendizado na disciplina, fomos instruídos para projetar um Campo Minado, na linguagem C. Por ser um jogo que perdura até os dias atuais, torna-se interessante vê-lo funcionar em outras plataformas. O código mostra ao usuário um tabuleiro sem marcações, composto, em todas as posições, da letra N; lê do arquivo de entrada, criado previamente no bloco de notas, a matriz de caracteres, onde foram marcados as bombas (*) e os espaços livres (-); com a matriz de entrada lida, é calculado a matriz vizinhança, a qual também é mostrada ao usuário, com números inteiros que representam a quantidade de bombas que estão nas posições mais próximas; o usuário poderá marcar ou desmarcar os símbolos que digitou; e por último tem a opção de saída. Esses encargos são executados pelas opções de jogo, onde: Ver Tabuleiro; Marcar Símbolo; Desmarcar Símbolo; Sair. Apesar de ser uma tarefa que exige muita dedicação, é extremamente gratificante quando o código compila, e executa. Mas sem perder tempo, adiante-se, o Campo Minado está lhe esperando!! 2 – Objetivos 3 – Introdução Os jogos surgiram nas antigas civilizações e veem alegrando desde os mais antigos habitantes até os atuais. Com o intuito primordial de diversão, eles também servem para aprendizagens. Assim tornam-se as maneiras mais divertidas de aprender, pois os conhecimentos surgem da forma mais descontraída. Jogos matemáticos, lógicos, e de memória são exemplos de entretenimento educativo. Entretanto, a tecnologia tem dado um toque mais ágil, preciso e sofisticado ao mundo, e vem interferindo em diversas áreas, dentre elas, a dos jogos. Jogos antigos, deram lugar aos modernos. Alguns foram reestruturados e reaproveitados, e continuam a divertir muitos até hoje, porém outros foram exonerados e os novos ocuparam seus cargos. Um jogo que não é muito recente, mas que continua agradando seus usuários é o Campo Minado. Esse entretenimento tem sido reescrito para as mais diversas plataformas, sendo a mais popular, a sua versão que vem nativamente com a Microsoft Windows. O Campo Minado é um teste de memória e raciocínio aparentemente simples. Onde o objetivo é encontrar os quadrados vazios e evitar as minas. Apesar de serem dadas algumas dicas, o jogo exige concentração e prática, pois nas primeiras jogadas a tendência é clicar em bombas achando que a posição está livre, e acaba perdendo o jogo. A sede de conseguir abrir cada vez mais uma maior quantidade de quadradinhos, sem errar nas bombas, faz o jogador querer jogar mais e mais. Por isso um jogo “antigo” ainda faz sucesso diante de uma sociedade tão evoluída, comparada com o passado, e exigente. Este projeto visa, portanto, a criação de uma lógica e implementação dos Algoritmos em linguagem C, do jogo Campo Minado. Dessa forma, colocam-se os conhecimentos adquiridos na disciplina em prática, de uma forma mais palpável e entendível, pois é possível perceber que o aprendido toma formas antes imagináveis. 4 - Materiais e Métodos 4.1 – Materiais 4.1.1 - Computador Intel® Core™ i5 2450M CPU @ 2.50GHz, 8,00GB, 64 bitz. Windows 8 Pro; 4.1.2 - Bloco de notas, abre arquivo txt; 4.1.3 - Compilador Dev - C++, versão 5.5.3; 4.2- Métodos Elaborou-se um programa que ler uma matriz de caracteres do arquivo de entrada, onde cada asterisco representa uma bomba na coordenada lida, e traço representa um local sem bomba. O arquivo de entrada pode conter apenas tabuleiros que sejam 5x5, 7x7 ou 9x9. Elaborou-se uma função para mostrar o número de bombas na matriz vizinhança. Inicialmente apresenta-se um menu ao usuário onde o mesmo pode escolher uma das opções a seguir: Ver tabuleiro: Caso escolhida será apresentado o tabuleiro com a matriz de vizinhança, o tabuleiro com a matriz que contém as opções já jogadas, o número de bombas e o número de acertos. Marcar símbolo: Nessa opção, além dos itens anteriores, o usuário irá informar a linha e a coluna na qual ele queira marcar como bomba ou como livre. Caso ele marque corretamente, o tabuleiro será reimpresso no tabuleiro contendo a marcação do usuário, se ele marcar como livre uma posição que contenha bomba, será informado que ele perdeu, e se marcado corretamente todas as posições o programa finaliza-se e a matriz vizinhança é salva no arquivo de saída. Gerou-se funções e procedimentos para contabilizar o número de bombas que contém no arquivo, gerar a matriz de vizinhança, imprimir a matriz de vizinhança, marcar símbolos, imprimir o tabuleiro, gerar a matriz tabuleiro, imprimir o menu. 5 – Relatos Há algumas semanas, foi apresentado, aos alunos de Engenharia de Produção, quatro propostas de projetos da disciplina de Algoritmos. Apesar das interações cotidianas entre colegas, a escolha de companheiros de trabalho foi árdua. As consequências dessas escolhas perduraram até o fim do processo. Além disso, referente à programação, houveram exaustivas dificuldades. Antes do programa ser implementado em C, as ideias foram passadas para o papel, e alguns desejos da especificação do trabalho foram mal interpretados, isso fez com o que o trabalho corresse de forma desacelerada. Porém, depois de entender o que as opções do Menu exigiam, e transcrever para àquele papel a verdadeira versão do pedido, foi mais fácil traduzir a nossa linguagem para linguagem C. Entretanto pequenas falhas, como digitar return ao invés de return ,’ %&’ em vez de ‘%d’, declarar o tipo da função e quando for alocar memória escrever com tipo diferente, esquecer uns ‘ ; ‘ , e ao fazer alterações no código, do tipo tirar um trecho do código do case para criar uma rotina externa, algumas chaves sobravam e partes do código se repetiam; trouxeram problemas na parte de compilação. Outro obstáculo encontrado foi quando alterava-se um código que compilava, adicionando ou trocando algumas coisas, e depois não compilava novamente. Isso nos fez perder alguns antigos começos de código certo, até descobrirmos que algumas vezes dá para retirar as novas alterações e retomar ao anterior. Variáveis significativas ajudaram bastante, pois como trabalha-se com algumas matrizes era necessário entender qual era qual, assim, por exemplo: mv= Matriz Vizinhança; me= Matriz de Entrada; tj =Tabuleiro do Jogo. Por isso tivemos um certo cuidado, pois para gerar uma bagunça nas lógicas era muito rápido. Saindo mais da parte da compilação e analisando a da execução, sentia-se uma série de sentimentos ruins quando via-se “O programa parou de funcionar!”, isso nos fazia voltar ao DevC++ e analisar as falhas. Houve também confusões ao inserir parâmetros para a execução do programa, a princípio não sabia-se como separava-se um parâmetro do outro, testava-se com vírgula, ponto, ponto-e-vírgula, e nenhuma alteração. Até que aprendemos a separar somente por espaço. Em relação aos parâmetros ainda, preocupava-se muito em digitar corretamente até o arquivo de saída previamente criado e salvo em branco, até entender que o único que tem que se preocupar é com o de entrada. Houve muitas dificuldades e dúvidas, mas teve a ajuda dos monitores e algumas vezes da Professora, abdicamos de outras tarefas, mas foi feito o possível, em tempo ainda hábil. Algumas, ou até muitas falhas deverão ter neste código, mas é garantido o esforço de cada um dos três em busca de fazer um trabalho satisfatório. 6 – Conclusão De forma geral, foi facilmente perceptível a importância da disciplina de Algoritmos, atuando em qualquer área. Esse projeto foi o impulso para outros. Egraças a este, com o uso frenético dos comandos, das rotinas, dos parâmetros ficou mais claro as funcionalidades de cada um. Foi importante para sentirmos o poder do trabalho em grupo, pois cada um fez a sua parte, respeitando os limites do outro. Observou-se que trabalhos como esse, exige tempo e dedicação, e uma boa base prescrita durante o semestre. E por fim, conclui-se que os erros cometidos podem até compilar, mas pode dar uma falha na execução e tudo pode parar. Então, é necessário ter foco, e não desistir no primeiro obstáculo, pois virão outras condições e mesmo que não retorne, o procedimento será executado da melhor forma. 7 – Referências Bibliográficas 7.1 – MICROSOFT. Campo Minado. Windows. 2014. Disponível em: <http://windows.microsoft.com/pt-br/windows/minesweeper-how-to#1TC=windows-7>. Acessado em: 04 ago. 2014. 7.2 - SCHILDT, Herbert. C Completo e Total; Makron Books. 3. ed. São Paulo ,1997.
Compartilhar