int main(){ srand(time(NULL)); numeros_aleatorios(); tabuleiro(); for(;k<3;){ if (l<6){ printf("\nInsira um numero:\n"); scanf("%d",&n); system("cls"); procurar(); printf("Acertos: %d/6\n-----------------------\n",l); } else{ system("cls"); tabuleiro(); printf("Acertos: %d/6\n-----------------------\n",l); printf("\nParabens!!!\n\n"); return 0; } } system("cls"); tabuleiro(); printf("Acertos: %d/6\n-----------------------\n",l); printf("\nTentativas Excedidas.\n\n"); };
main (){ setlocale (LC_ALL, "Portuguese"); system ("color 07"); //Essse loop "ZERA" as casas do tabuleiro para qualquer novo jogo. for (i=0; i<=3; i++){ for (j=0;j<=3; j++){ casa[i][j] = '\0'; } } if (opcao == 5){ system ("cls"); cabecalho(); informa (); } else { menu1(); informa (); } opcao=0; //O loop seguinte repete o jogo enquanto se iniciarem novos jogos com os mesmos jogadores. do { //A função da estrutura de decisão abaixo é informar novamente ao programa os nomes dos //jogadores 1 e 2. O programa só passará por ela, em caso de novo jogo com jogadores iguais aos da partida anterior. if (nomeaux == 1){ strcpy (nome1, nomeaux1); strcpy (nome2, nomeaux2); cabecalho (); tabuleiro (); } //Laço de repetição que determina a duração do jogo. while (vencedor == 0 && turno < 9) { tabuleiro (); jogada (); system ("cls"); cabecalho (); tabuleiro (); for (i=1; i<=3; i++){ verificavencedor (i, 1, i, 2, i, 3); //verifica vencedor nas colunas verificavencedor (1, i, 2, i, 3, i); //verifica vencedos nas linhas } verificavencedor (1, 1, 2, 2, 3, 3); //verifica vencedor na primeira diagona verificavencedor (1, 3, 2, 2, 3, 1); //verifica vencedor na segunda diagonal } printf ("Pressione qualquer tecla para continuar...\n\n"); getch (); placar (); printf ("Pressione qualquer tecla para continuar...\n\n"); getch (); menu2(); } while (opcao == 1); printf("Obrigado por jogar TicTacToe\nDesenvolvido por José Tarciso e Olliver Felipe.\n\n Pressione qualquer tecla para sair..."); getch(); }
//Valida uma jogada em posição livre e, caso a posição informada não estivesse marcada, marca //a posição informada e, após isso, alterna o jogador que jogará o próximo turno. validajogada (){ if (casa[linha][coluna] == 'X' || casa[linha][coluna] == 'O'){ system ("cls"); cabecalho (); tabuleiro (); if (jogador == 1) printf ("\nA posição escolhida já foi marcada. \n\n%s, ainda é sua vez.\n", nome1); if (jogador == 2) printf ("\nA posição escolhida já foi marcada. \n\n%s, ainda é sua vez.\n", nome2); printf ("\nInforme as novas coordenadas da sua jogada.\n"); printf ("Linha: "); scanf ("%d", &linha); validalinha (); printf ("Coluna: "); scanf ("%d", &coluna); validacoluna(); validajogada (); } else { if (jogador == 1){ casa[linha][coluna] = 'X'; jogador = 2; } else { casa[linha][coluna] = 'O'; jogador = 1; } } }
//Obriga coluna estar entre 1 e 3. validacoluna (){ while (coluna < 1 || coluna > 3){ system ("cls"); cabecalho (); tabuleiro (); printf ("Entrada inválida!\n\n"); if (jogador == 1){ printf ("%s, ainda é sua vez.\n\n", nome1); } else { printf ("%s, ainda é sua vez. \n\n", nome2); } printf ("Por favor, escolha um valor de 1 até 3 para a posição escolhida. \n\n\n"); printf ("Coluna: "); do { valorDoScanf = 0; mensagemDeErro = 0; if(mensagemDeErro >= 1){ printf("\nVocê deve digitar um número inteiro entre 1 e 3.\n\n--->"); } fflush(stdin); valorDoScanf = scanf ("%d", &coluna); mensagemDeErro++; } while(valorDoScanf == 0); } }
void escolherPos(int player, int jogador[][3], int tab[][3]){ int celula_valida = 0, erro = 0; char celula[2]; while(!celula_valida){ // Enquanto a celula informada for inválida, continue pedidindo uma célula válida if(erro){ // Se a célula informada já foi selecionada ou inválida... system("cls"); // Limpe a tela tabuleiro(tab, jogador); //Mostre o tabuleiro printf("\n\nCelula ja selecionada ou invalida! Player %d, informe uma outra celula: ", player); fflush(stdin); gets(celula); } else{ // Primeira mensagem para o player system("cls"); tabuleiro(tab, jogador); printf("\n\nPlayer %d, informe a celula desejada: ", player); fflush(stdin); gets(celula); } erro = 0; for(int x = 0; x < 3 && !celula_valida && !erro; x++){ // Verificando se a célula informada é válida ou se já foi selecionada for(int y = 0; y < 3; y++){ if(celula[0] == 65 + x && celula[1] == 49 + y){ // 65 + 0 = A | 65 + 1 = B | 65 + 2 = C | 49 + 0 = 1 | 49 + 1 = 2 | 49 + 2 = 3 if(tab[x][y] != 1){ // Se a posição na tabela não foi marcada... tab[x][y] = 1; // Marque-a if(player == 1){ // Se for o player 1... jogador[x][y] = 1; // Marque com 1 a mesma posição na matriz jogador celula_valida = 1; // A célula informada é válida break; } else if(player == 2){ // Se for o player 2... jogador[x][y] = 2; // Marque com 2 a mesma posição na matriz jogador celula_valida = 1; // A célula informada é válida break; } } else{ // Caso a posição já foi selecionada... erro = 1; break; } } if(x == 2 && y == 2){ // Se todas as posições forem verificadas e nenhuma ação foi tomada, a céluda informada é inválida erro = 1; } } } } }
int procurar(){ int j; for(j=0;j<6;j++){ if (n == m[n]){ l++; p[n]=n; printf("Numero Correto.\n-----------------------\n"); tabuleiro(); m[n]=0; return 0; } } printf("Numero Incorreto.\n-----------------------\n"); tabuleiro(); k++; };
int main(){ int tab[3][3], jogador[3][3], jogadas = 0, player = 1, vencedor = 0; tabuleiro(tab, jogador); while(jogadas != 9 || !vencedor){ if(player == 1){ escolherPos(player, jogador, tab); jogadas++; vencedor = verifica_vencedor(jogador); player = 2; } if(vencedor == 1){ system("cls"); tabuleiro(tab, jogador); printf("\n\nO Player 1 venceu!"); break; } if(jogadas == 9){ system("cls"); tabuleiro(tab, jogador); printf("\n\nNao houve vencedor!"); break; } if(player == 2){ escolherPos(player, jogador, tab); vencedor = verifica_vencedor(jogador); jogadas++; player = 1; } if(vencedor == 2){ system("cls"); tabuleiro(tab, jogador); printf("\n\nO Player 2 venceu!"); break; } if(jogadas == 9){ system("cls"); tabuleiro(tab, jogador); printf("\n\nNao houve vencedor!"); break; } } return 0; }
//Obriga coluna estar entre 1 e 3. validacoluna (){ while (coluna < 1 || coluna > 3){ system ("cls"); cabecalho (); tabuleiro (); printf ("O número informado é inválido.\n"); printf ("Por favor, escolha um valor de 1 até 3 para a coluna escolhida: \n"); printf ("----> "); valorDoScanf = 0; mensagemDeErro = 0; do { if(mensagemDeErro >= 1){ printf("\nVocê deve digitar um número inteiro entre 1 e 3.\n\n--->"); } fflush(stdin); valorDoScanf = scanf ("%d", &coluna); mensagemDeErro++; } while(valorDoScanf == 0); } }
/* Funcao que administra o turno do jogador 1 */ void turno_p1(int m_valores[][7], int escolha, int jogada_AI){ char jogada; int j_vet, total, i, j, n; tabuleiro(m_valores); /* Este if define quem ira jogar, o player ou a IA, de acordo com a escolha passada no menu */ if((escolha == 2)||(simulando != 1)){ /* Le a posicao que quer ser realizada a jogada */ printf("\nJogador 1 favor realizar sua jogada: "); scanf(" %c", &jogada); /* Armazena a posicao na coluna de acordo com a referencia passada */ j_vet = referencia(jogada); /* Realiza a verificacao se o jogador nao esta escolhendo nenhuma casa vazia */ while(m_valores[1][j_vet] == 0 || j_vet == (-1)){ printf("\nJogada invalida, favor informar uma jogada valida: "); scanf(" %c", &jogada); j_vet = referencia(jogada); } /* j_vet para P1 vs IA */ } else{ j_vet = jogada_AI; } /* Armazena a quantidade de sementes na casa informada */ n = m_valores[1][j_vet]; /* Zera o atual */ m_valores[1][j_vet] = 0; /* Redistribui as sementes */ j = 0; while(n>0){ /* sleep(1); */ j_vet += 1; if(j_vet > 6){ i=0; j++; m_valores[i][j_vet-j] += 1; j++; if(j_vet-j == 0){ j_vet = -1; } } else{ i=1; m_valores[i][j_vet] += 1; } n -= 1; tabuleiro(m_valores); if(simulando == 0) { sleep(1); } } /* Verifica se o p1 pode pegar as sementes do p2 */ if((i == 1) && (m_valores[i][j_vet] == 1) && (m_valores[0][j_vet+1] != 0) && (j_vet != 6)){ total = m_valores[0][j_vet+1] + m_valores[1][j_vet]; m_valores[0][j_vet+1] = 0; m_valores[1][j_vet] = 0; m_valores[1][6] += total; } /* Verifica se o p1 pode jogar denovo */ if((i==1) && (j_vet == 6) && (m_vazia(m_valores) == 1)){ tabuleiro(m_valores); flag = 1; turno_p1(m_valores, escolha, jogada_AI); } else{ flag = 2; tabuleiro(m_valores); } }