Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Jogo da Memória
- //Desenvolvido por: Maicon Fuck, Jean Severino, Gabriel Moreschi, Douglas Kelczeski e Diego Nóbrega
- //Versão Final
- //Programação Estruturada - IFSC-Instituto Federal de Santa Catarina
- //Declaração das bibliotecas utilizadas:
- #include <stdio.h>
- #include <time.h>
- #include <stdlib.h>
- #include <string.h>
- #include <sys/time.h>
- void mostrarcampo(int l, int c, int matriz[][6]);
- void startgame(int l, int c, int matriz[][6], int matriz2[][6]);
- void opcoesusuario(int matriz[][6], int matriz2[][6], int l, int c);
- void ajuda();
- //Função principal do Jogo
- void main() {
- system("clear");
- int i, l, c, opcao;
- int matriz[6][6];
- int matriz2[6][6];
- puts("+--------------------------------------------------+");
- puts("| __ |");
- puts("| | _ _ _ _| _ |");
- puts("| __|(_)(_)(_) (_)(_| |");
- puts("| _| |");
- puts("| ___ ___ |");
- puts("| | _ | | _,| |//| _ _ _ _ º _ |");
- puts("| ||_|| |(_)| | |(/_|||(_)| |(_| |");
- puts("| |___| |___| |");
- puts("| ___ ___ |");
- puts("| | _,| | _ | |");
- puts("| |(_)| ||_|| |");
- puts("| |___| |___| |");
- puts("| |");
- puts("+--------------------------------------------------+");
- //Laço de repetição para o menu do jogo
- do {
- puts("+--------------------------------------------------+");
- puts("| JOGO DA MEMÓRIA |");
- puts("| Digite uma opção: |");
- puts("| 1) Iniciar o Jogo: |");
- puts("| 2) Ajuda |");
- puts("| 3) Sair |");
- puts("+--------------------------------------------------+");
- scanf("%i", & opcao);
- switch (opcao) {
- case 1:{
- mostrarcampo(l, c, matriz);
- puts("+--------------------------------------------------+");
- printf("|Você tem 30 segundos para memorizar os valores! |\n");
- puts("+--------------------------------------------------+");
- sleep(30); //o campo de valores ficará por 30 segundos na tela, para o jogador gravar alguns numeros.
- startgame(l, c, matriz, matriz2);
- opcoesusuario(matriz, matriz2, l, c);
- break;
- }
- case 2:{
- ajuda();
- break;
- }
- case 3:{
- puts("+-------------------------------------+");
- printf("| GAME OVER! |\n");
- puts("+-------------------------------------+");
- break;
- }
- }
- } while (opcao < 3); //O laço termina aqui
- }
- void mostrarcampo(int l, int c, int matriz[][6]) {
- int valores[] = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, //Declaração de um vetor com números de 1 a 18, para preenchimento do sorteio da matriz
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82 };
- int quantidade = 36;
- int sorteado;
- srand(time(NULL)); // seed para gerar numeros aleatórios diferentes toda vez que o jogo é executado
- for (l = 0; l < 6; l++) {
- for (c = 0; c < 6; c++) {
- sorteado = rand() % quantidade;
- matriz[l][c] = valores[sorteado];
- valores[sorteado] = valores[quantidade - 1];
- --quantidade;
- }
- }
- puts("Tabuleiro do Jogo:");
- puts("+--------------------------------------------------+");
- for (l = 0; l < 6; l++) {
- for (c = 0; c < 6; c++){
- if(c == 0){
- printf("|");
- }
- printf("%3i\t", matriz[l][c]);
- if(c == 5){
- printf(" | ");
- }
- }
- puts("");
- }
- puts("+--------------------------------------------------+");
- }
- void startgame(int l, int c, int matriz[][6], int matriz2[][6]) {
- int cont = 0, armaz, armaz2, erros, acertos = 0, linha, linha2, conta;
- for(conta = 0; conta < 100; conta++){
- system("clear");//Diversas vezes será limpada a tela, para evitar consulta na matriz de numeros.
- }
- //Matriz preenchida com numeros de 0 a 35 para ser mostrada para o usuário
- puts("+--------------------------------------------------+");
- for (l = 0; l < 6; l++) {
- for (c = 0; c < 6; c++){
- matriz2[l][c] = cont;
- cont = cont+1;
- if(c == 0){
- printf("|");
- }
- printf("%3i\t", matriz2[l][c]);
- if(c == 5){
- printf(" | ");
- }
- }
- puts("");
- }
- puts("+--------------------------------------------------+");
- }
- void opcoesusuario(int matriz[][6], int matriz2[][6], int l, int c){
- int cont = 0, armaz, armaz2, erros = 0, acertos = 0, linha = 100, linha2 = 100, trava = 0, trava2 = 0, minutos, segundos;
- struct timeval inicio, final;
- int tmili;
- gettimeofday(&inicio, NULL);
- do {
- do{
- printf("Digite o 1º valor que deseja revelar: \n");
- scanf("%i", &linha);
- do{
- printf("Digite o 2º valor que deseja revelar: \n");
- scanf("%i", &linha2);
- }while(linha2 == linha && linha2 == linha2);
- }while(linha == trava && linha2 == trava2);
- for(l=0; l<6;l++){//Matriz para encontrar a posição da 1ª escolha do jogador.
- for(c=0; c<6; c++){
- if(linha == matriz2[l][c]){
- armaz = matriz[l][c];
- //printf("%i\n", matriz[l][c]);
- }
- }
- }
- puts("+----------------------+");
- printf("|Primeiro Valor: %i |\n", armaz);
- puts("+----------------------+");
- for (l = 0; l < 6; l++) {//Matriz para encontrar a posição da 2ª escolha do jogador.
- for (c = 0; c < 6; c++) {
- if(linha2 == matriz2[l][c]){
- armaz2 = matriz[l][c];
- //printf("%i\n", matriz[l][c]);
- }
- }
- }
- puts("+----------------------+");
- printf("|Segundo Valor: %i |\n", armaz2);
- puts("+----------------------+");
- if (armaz == armaz2) {//compara se os valores são iguais, se sim imprime acerto e adiciona +1 na contagem, se não imprime erro e adiciona +1 na contagem.
- puts("+-----------------------------+");
- puts("|Acertou! Continue Assim!! |");
- puts("+-----------------------------+");
- acertos = acertos + 1;
- for(l=0; l<6; l++){//Matrizes para substituir os valores escolhidos pelos numeros da matriz principal
- for(c=0; c<6; c++){
- if(linha == matriz2[l][c]){
- matriz2[l][c] = matriz[l][c];
- }
- }
- }
- for(l=0; l<6; l++){
- for(c=0; c<6; c++){
- if(linha2 == matriz2[l][c]){
- matriz2[l][c] = matriz[l][c];
- }
- }
- }
- puts("+--------------------------------------------------+"); //Exibição da matriz com os numeros que o jogador acertou.
- for (l = 0; l < 6; l++) {
- for (c = 0; c < 6; c++) {
- if(c == 0){
- printf("|");
- }
- printf("%3i\t", matriz2[l][c]);
- if(c == 5){
- printf(" | ");
- }
- }
- puts("");
- }
- puts("+--------------------------------------------------+");
- trava = linha;
- trava2 = linha2;
- } else {
- puts("+-----------------------------+");
- puts("| Errou, tente novamente! |");
- puts("+-----------------------------+");
- puts("+--------------------------------------------------+"); //Exibição da matriz com os numeros acertados pelo usuários, se não acertou nenhum ainda permanece como estava.
- for (l = 0; l < 6; l++) {
- for (c = 0; c < 6; c++) {
- printf("%3i\t", matriz2[l][c]);
- }
- puts("");
- }
- puts("+--------------------------------------------------+");
- erros = erros + 1;
- }
- puts("+---------------------+");
- printf("|Acertos:%i |\n", acertos);
- puts("+---------------------+");
- puts("+---------------------+");
- printf("|Erros:%i |\n", erros);
- puts("+---------------------+");
- } while (acertos < 18);
- gettimeofday( & final, NULL);
- tmili = (int)(1000 * (final.tv_sec - inicio.tv_sec) + (final.tv_usec - inicio.tv_usec) / 1000);
- minutos = tmili / 60000; //minuto em milisegundos!
- segundos = (tmili-(minutos*60000))/1000;
- printf("O tempo foi de %i minutos e %i segundos!\n", minutos, segundos);
- }
- void ajuda(){
- puts("+--------------------------------------------------+");
- puts("| AJUDA SOBRE o JOGO! |");
- puts("| O jogo consiste em conseguir encontrar os pares |");
- puts("| de valores iguais. Portanto, você deve escolher |");
- puts("| os valores que deseja revelar na matriz com |");
- puts("| números de 0 a 35, se os números forem iguais |");
- puts("| você acerta um par, ao contrário terá que tentar |");
- puts("| novamente. O jogo só é finalizado quando todos |");
- puts("| os pares de números forem revelados! |");
- puts("+--------------------------------------------------+");
- }
Advertisement
Add Comment
Please, Sign In to add comment