maikonsx

JogoMemory

Dec 6th, 2016
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.28 KB | None | 0 0
  1. /Jogo da Memória
  2. //Desenvolvido por: Maicon Fuck, Jean Severino, Gabriel Moreschi, Douglas Kelseski e Diego Nóbrega
  3. //Versão Final com comentários
  4. //Programação Estruturada - IFSC-Instituto Federal de Santa Catarina
  5.  
  6. #include <stdio.h>
  7. #include <time.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. #include <sys/time.h>
  11.  
  12. //Protótipos das funções utilizadas
  13.  
  14. void mostrarcampo(int l, int c, int matriz[][6]);
  15. void startgame(int l, int c, int linha, int coluna, int linha2, int coluna2, int valor, int valor2, int acertos, int erros, int matriz[][6], int matriz2[][6]);
  16. void listarmatriz();
  17.  
  18. //Função principal do Jogo
  19.  
  20. void main(){
  21.  
  22. //Declaração das variáveis utilizadas nas funções mostrarcampo e startgame
  23. int i = 0, l, c, linha, coluna, valor, valor2, linha2, coluna2, acertos = 0, erros = 0, linha1, coluna1, opcao;
  24. int matriz2[6][6], matriz[6][6];
  25.  
  26. puts("+------------------------------------------+");
  27. puts("| __ |");
  28. puts("| | _ _ _ _| _ |//| _ _ _ _ º _ |");
  29. puts("| _|(_)(_)(_) (_)(_| | |(/_|||(_)| |(_| |");
  30. puts("| _| |");
  31. puts("| |");
  32. puts("|Maicon | Douglas | Jean | Gabriel | Diego |");
  33. puts("+------------------------------------------+");
  34.  
  35. //Laço de repetição para o menu do jogo
  36. do{
  37. puts("+------------------------------------------+");
  38. puts("| JOGO DA MEMÓRIA |");
  39. puts("| Digite uma opção: |");
  40. puts("| 1) Mostrar Jogo; |");
  41. puts("| 2) Iniciar as tentativas: |");
  42. puts("| 3) Sair |");
  43. puts("+------------------------------------------+");
  44. __fpurge(stdin);
  45. scanf("%i", &opcao);
  46.  
  47.  
  48. switch(opcao){
  49. case 1: {
  50. mostrarcampo(l, c, matriz);
  51. break;
  52. }
  53. case 2: {
  54. startgame(l, c, linha, coluna, linha2, coluna2, valor, valor2, acertos, erros, matriz, matriz2);
  55. break;
  56. }
  57. case 3:{
  58. printf("GAME OVER! \n");
  59. break;
  60. }
  61. }
  62. }while(opcao < 3); //O laço termina aqui
  63. }
  64. void mostrarcampo(int l, int c, int matriz[][6]){
  65.  
  66. int valores[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, //Declaração de um vetor com números de 1 a 18, para preenchimento do sorteio da matriz
  67. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
  68. int quantidade = 36;
  69. int sorteado;
  70.  
  71. srand( time( NULL ) ); // seed para gerar numeros aleatórios diferentes toda vez que o jogo é executado
  72.  
  73. for(l=0; l<6; l++){
  74. for(c=0; c<6; c++){
  75.  
  76. sorteado = rand() % quantidade;
  77. matriz[l][c] = valores[sorteado];
  78.  
  79. valores[sorteado] = valores[quantidade - 1];
  80. --quantidade;
  81. }
  82. }
  83. puts( "\n\tTabuleiro do Jogo:" );
  84. puts( "--------------------------------------------------" );
  85. for(l=0; l<6; l++){
  86. for(c= 0; c<6; c++){
  87.  
  88. printf( "%3i\t", matriz[l][c] );
  89. }
  90. puts("");
  91. }
  92. puts( "--------------------------------------------------" );
  93. }void startgame(int l, int c, int linha, int coluna, int linha2, int coluna2, int valor, int valor2, int acertos, int erros, int matriz[][6], int matriz2[][6]){
  94.  
  95. system("clear");
  96.  
  97. struct timeval inicio, final;
  98. int tmili;
  99. gettimeofday(&inicio, NULL);
  100.  
  101. // int matriz[6][6], campo[6][6];
  102. //Matriz preenchida com 0 para ser mostrada para o usuário
  103. puts( "--------------------------------------------------" );
  104. for(l=0; l<6; l++){
  105. for(c=0; c<6; c++){
  106. matriz2[l][c] = 0;
  107. printf(" %i ", matriz2[l][c]);
  108. }
  109. puts("");
  110. }
  111. puts( "--------------------------------------------------" );
  112. do{//Agora iniciamos as condições para comparações se o usuário irá acertar ou errar
  113.  
  114. puts("Digite a linha 1: ");
  115. scanf("%i", &linha);
  116. linha = linha - 1;
  117. puts("Digite a coluna 1: ");
  118. scanf("%i", &coluna);
  119. coluna = coluna - 1;
  120. valor = matriz[linha][coluna];
  121. printf("Valor da Linha %i, Coluna %i: %i\n\n",linha + 1, coluna + 1, valor);
  122.  
  123. puts("Digite a linha 2: \n");
  124. scanf("%i", &linha2);
  125. linha2 = linha2 - 1;
  126. puts("Digite a coluna 2: \n");
  127. scanf("%i", &coluna2);
  128. coluna2 = coluna2 - 1;
  129. valor2 = matriz[linha2][coluna2];
  130.  
  131. printf("Valor da Linha %i, Coluna %i: %i\n\n",linha2 + 1, coluna2 + 1, valor2);
  132. //lock = matriz2[linha][coluna];
  133. //lock2 = matriz2[linha2][coluna2]; //Terminar para não repetir as colunas que já foram digitadas
  134. printf("Valooores: %i %i\n", valor, valor2);
  135. if(valor == valor2){
  136. puts("+-----------------------------+");
  137. puts("|Acertou! Continue Assim!! |");
  138. puts("+-----------------------------+");
  139. acertos = acertos + 1;
  140. matriz2[linha][coluna] = matriz[linha][coluna]; //Matriz preenchida com 0 recebe o valor que ocupava a matriz com os numeros do jogo(Primeiros numeros digitados)
  141. matriz2[linha2][coluna2] = matriz[linha2][coluna2]; //Matriz preenchida com 0 recebe o valor que ocupava a matriz com os numeros do jogo(Segundos numeros digitados)
  142.  
  143. puts( "--------------------------------------------------" );//Exibição da matriz com os numeros que o jogador acertou.
  144. for(l=0; l<6; l++){
  145. for(c=0; c<6; c++){
  146. printf("%3i\t", matriz2[l][c]);
  147. }
  148. puts("");
  149. }
  150. puts( "--------------------------------------------------" );
  151. }else {
  152.  
  153. puts("+-----------------------------+");
  154. puts("| Errou, tente novamente! |");
  155. puts("+-----------------------------+");
  156. puts( "--------------------------------------------------" );//Exibição da matriz com 0, mais os numeros acertados pelo usuários, se não acertou nenhum ainda permanece zerada.
  157. for(l=0; l<6; l++){
  158. for(c=0; c<6; c++){
  159. printf("%3i\t", matriz2[l][c]);
  160. }
  161. puts("");
  162. }
  163. puts( "--------------------------------------------------" );
  164. erros = erros + 1;
  165. }
  166. printf("Acertos: %i \n", acertos);
  167. printf("Erros: %i \n", erros);
  168. }while(acertos < 18); //Enquato o numero de acertos não for 18, o jogo não termina
  169. printf("Acertos: %i\n", acertos);
  170. printf("Erros: %i\n", erros);
  171.  
  172. gettimeofday(&final, NULL);
  173. tmili = (int) (1000 * (final.tv_sec - inicio.tv_sec) + (final.tv_usec - inicio.tv_usec) / 1000);
  174. tmili = tmili/1000;
  175. printf("Tempo decorrido: %d segundos\n", tmili );
  176.  
  177. }
Advertisement
Add Comment
Please, Sign In to add comment