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 Kelseski e Diego Nóbrega
- //Versão Final com comentários
- //Programação Estruturada - IFSC-Instituto Federal de Santa Catarina
- #include <stdio.h>
- #include <time.h>
- #include <stdlib.h>
- #include <string.h>
- #include <sys/time.h>
- //Protótipos das funções utilizadas
- void mostrarcampo(int l, int c, int matriz[][6]);
- 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]);
- void listarmatriz();
- //Função principal do Jogo
- void main(){
- //Declaração das variáveis utilizadas nas funções mostrarcampo e startgame
- int i = 0, l, c, linha, coluna, valor, valor2, linha2, coluna2, acertos = 0, erros = 0, linha1, coluna1, opcao;
- int matriz2[6][6], matriz[6][6];
- puts("+------------------------------------------+");
- puts("| __ |");
- puts("| | _ _ _ _| _ |//| _ _ _ _ º _ |");
- puts("| _|(_)(_)(_) (_)(_| | |(/_|||(_)| |(_| |");
- puts("| _| |");
- puts("| |");
- puts("|Maicon | Douglas | Jean | Gabriel | Diego |");
- 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) Mostrar Jogo; |");
- puts("| 2) Iniciar as tentativas: |");
- puts("| 3) Sair |");
- puts("+------------------------------------------+");
- __fpurge(stdin);
- scanf("%i", &opcao);
- switch(opcao){
- case 1: {
- mostrarcampo(l, c, matriz);
- break;
- }
- case 2: {
- startgame(l, c, linha, coluna, linha2, coluna2, valor, valor2, acertos, erros, matriz, matriz2);
- break;
- }
- case 3:{
- printf("GAME OVER! \n");
- break;
- }
- }
- }while(opcao < 3); //O laço termina aqui
- }
- void mostrarcampo(int l, int c, int matriz[][6]){
- 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
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
- 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( "\n\tTabuleiro do Jogo:" );
- puts( "--------------------------------------------------" );
- for(l=0; l<6; l++){
- for(c= 0; c<6; c++){
- printf( "%3i\t", matriz[l][c] );
- }
- puts("");
- }
- puts( "--------------------------------------------------" );
- }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]){
- system("clear");
- struct timeval inicio, final;
- int tmili;
- gettimeofday(&inicio, NULL);
- // int matriz[6][6], campo[6][6];
- //Matriz preenchida com 0 para ser mostrada para o usuário
- puts( "--------------------------------------------------" );
- for(l=0; l<6; l++){
- for(c=0; c<6; c++){
- matriz2[l][c] = 0;
- printf(" %i ", matriz2[l][c]);
- }
- puts("");
- }
- puts( "--------------------------------------------------" );
- do{//Agora iniciamos as condições para comparações se o usuário irá acertar ou errar
- puts("Digite a linha 1: ");
- scanf("%i", &linha);
- linha = linha - 1;
- puts("Digite a coluna 1: ");
- scanf("%i", &coluna);
- coluna = coluna - 1;
- valor = matriz[linha][coluna];
- printf("Valor da Linha %i, Coluna %i: %i\n\n",linha + 1, coluna + 1, valor);
- puts("Digite a linha 2: \n");
- scanf("%i", &linha2);
- linha2 = linha2 - 1;
- puts("Digite a coluna 2: \n");
- scanf("%i", &coluna2);
- coluna2 = coluna2 - 1;
- valor2 = matriz[linha2][coluna2];
- printf("Valor da Linha %i, Coluna %i: %i\n\n",linha2 + 1, coluna2 + 1, valor2);
- //lock = matriz2[linha][coluna];
- //lock2 = matriz2[linha2][coluna2]; //Terminar para não repetir as colunas que já foram digitadas
- printf("Valooores: %i %i\n", valor, valor2);
- if(valor == valor2){
- puts("+-----------------------------+");
- puts("|Acertou! Continue Assim!! |");
- puts("+-----------------------------+");
- acertos = acertos + 1;
- 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)
- 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)
- puts( "--------------------------------------------------" );//Exibição da matriz com os numeros que o jogador acertou.
- for(l=0; l<6; l++){
- for(c=0; c<6; c++){
- printf("%3i\t", matriz2[l][c]);
- }
- puts("");
- }
- puts( "--------------------------------------------------" );
- }else {
- puts("+-----------------------------+");
- puts("| Errou, tente novamente! |");
- puts("+-----------------------------+");
- puts( "--------------------------------------------------" );//Exibição da matriz com 0, mais os numeros acertados pelo usuários, se não acertou nenhum ainda permanece zerada.
- for(l=0; l<6; l++){
- for(c=0; c<6; c++){
- printf("%3i\t", matriz2[l][c]);
- }
- puts("");
- }
- puts( "--------------------------------------------------" );
- erros = erros + 1;
- }
- printf("Acertos: %i \n", acertos);
- printf("Erros: %i \n", erros);
- }while(acertos < 18); //Enquato o numero de acertos não for 18, o jogo não termina
- printf("Acertos: %i\n", acertos);
- printf("Erros: %i\n", erros);
- gettimeofday(&final, NULL);
- tmili = (int) (1000 * (final.tv_sec - inicio.tv_sec) + (final.tv_usec - inicio.tv_usec) / 1000);
- tmili = tmili/1000;
- printf("Tempo decorrido: %d segundos\n", tmili );
- }
Advertisement
Add Comment
Please, Sign In to add comment