Ir para conteúdo
Fórum Script Brasil

Carine Reis

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que Carine Reis postou

  1. Estou construindo este jogo da velha, no entanto, gostaria de uma ajuda! Como faço para que a maquina sempre ganhe do jogador. (Resumindo, sempre dará velha ou a maquina sempre ira ganhar! O jogador nunca pode vencer!). #include<iostream> #include<stdio.h> #include<conio.h> #include<stdlib.h> #include <windows.h>//necessário para usar SetConsoleTitle #include <locale.h> //necessário para usar setlocale //area de declaracao de constantes #define lim 3 #define Jogador 'J' #define Maquina 'M' /*variáveis globais utilizadas no programa*/ int c; //variável de controle para laços char op; //opção do jogador utilizado no programa principal int vezde; //variável que define de quem é a vez para jogar int jogo; //recebe o retorno das funções que define o fim do jogo char jv[3][3]; //matriz jogo 3 X 3 //procedimento utilizado para limpeza da matriz, colocando '0' em toda a matriz void limpeza() { //printf("Em construção........"); //O codigo abaixo percorre linhas e colunas da matriz. Cada posição é atribuido o caractere '0' para retirar o "lixo". for (int w=0;w<lim;w++) for (int j=0;j<lim;j++) jv[w][j] = '0'; } //Procedimento utilizado para visualizar o conteúdo da matriz. void visualizar() { //Faz com que a estrutura da matriz apareça uma unica vez. system("cls"); //Comando usado para colocar titulo no console. SetConsoleTitle(TEXT("JOGO DA VELHA")); //Permite suporte a língua portuguesa. Garante que caracteres como “ç” e acentuação sejam exibidos normalmente no programa. setlocale(LC_ALL,"Portuguese"); int w,k; printf("\n"); printf("\n\t\t\t\t JOGO DA VELHA \n\n\n\n"); printf("\t\t\t\t C0 C1 C2 \n\n"); printf("\t\t\t\t L0 %c | %c | %c \n",jv[0][0],jv[0][1],jv[0][2]); printf("\t\t\t\t ---|---|--- \n "); printf("\t\t\t\t L1 %c | %c | %c \n",jv[1][0],jv[1][1],jv[1][2]); printf("\t\t\t\t ---|---|--- \n "); printf("\t\t\t\t L2 %c | %c | %c \n",jv[2][0],jv[2][1],jv[2][2]); printf("\n\n"); } //Esta função verifica se houve ou não ganhador, retornando true (verdadeiro) se houver,ou false (falso) se não tiver ganhador para cada jogada int velha(char jog) { //printf("Em construção........"); //O codigo abaixo pecorre as LINHAS 1, 2, 3 em seguida verifica que foi o ganhador if(jv[0][0] == jog && jv[0][1] == jog && jv[0][2] == jog) return 1; else if(jv[1][0] == jog && jv[1][1] == jog && jv[1][2] == jog) return 1; else if(jv[2][0] == jog && jv[2][1] == jog && jv[2][2] == jog) return 1; //O codigo abaixo percorre as COLUNAS 1,2,3 em seguida verifica quem foi o ganhador. else if(jv[0][0] == jog && jv[1][0] == jog && jv[2][0] == jog) return 1; else if(jv[0][1] == jog && jv[1][1] == jog && jv[2][1] == jog) return 1; else if(jv[0][2] == jog && jv[1][2] == jog && jv[2][2] == jog) return 1; //O codigo abaixo percorre as diagonais (principal,secundaria) e verifica se um dos jogadores venceu else if(jv[0][0] == jog && jv[1][1] == jog && jv[2][2] == jog) return 1; else if(jv[0][2] == jog && jv[1][1] == jog && jv[2][0] == jog) return 1; else return 0; } //Esta função recebe uma posição da matriz e verifica se esta posição já foi selecionada, retornando true (verdadeiro) se já tiver sido selecionada ou false (falso) caso contrário int posicao( int l, int c) { //printf("Em construção........"); //O laço abaixo ira percorrer toda a matriz for(int i = 0; i < 9; i++) { for(int j = 0; j < 9; j++) { // Os valores passados na função ('l','c') sao comparados com as posições; se ela for igual entra e faz uma outra comparação. if(i == l && c == j) { // Apos validar as posições da matriz ele ainda verifica se aquela posição ja foi ocupada por um valor. Se esta posição estiver com caractere diferente de '0' o e porque ela ja foi usada. logo a função irá retornar 1 'true'; if(jv[j] == '0') { return 1; } // Caso contrario a função irá retornar 0 'false' pois aquela posição ainda pode ser usada. else { return 0; } } } } } //Esta função utiliza a função random (rand) para selecionar uma nova jogada da máquina, retornando true se a jogada resultou em vitória ou false caso contrário. int maquinajoga() { int l,c,rposicao,v; rposicao = 1; do { l = rand()%3; c = rand()%3; rposicao = posicao(l,c); if (rposicao == 1) jv[l][c] = Maquina; }while (! rposicao == 1); visualizar(); v = velha(Maquina); if ( v == 1) { //Este bloco de comando faz com que o printf fique piscando na tela. int i = 10; while (i) { printf(" \n\n\n\t\t\t A MAQUINA VENCEU O JOGO! \n"); Sleep (1000); system ("cls"); Sleep (100); } return 1; } else return 0; } //Esta função faz a jogada do jogador, que seleciona uma nova jogada válida, retornando true se a jogada resultou em vitória ou false caso contrário. int jogadorjoga() { //printf("Em construção........"); // Este codigo e utilizado para a maquina. No entanto o usuario deve informar o caracter ('J') para linha e coluna. int l,c,rposicao,v; rposicao = 1; //Este laço e utilizado quando o jogador nao informa uma posicao valida ele fica repetindo as mesmas perguntas. do { //Solicita ao usuario que informe a linha e a coluna. printf("\n Informe a linha: "); scanf("%d",&l); printf("\n Informe a coluna: "); scanf("%d",&c); //Faz verificação da linha e da coluna. Se caso ja tenha sido utilizada independente se a jogada foi da maquina ou do jogador, este trecho informa se esta valido ou não. rposicao = posicao(l,c); //O codigo abaixo informa se a posiçao e igual a 1. caso seja ele atribui o caracter 'J' a matriz conforme a posição que o usuario informou. if (rposicao == 1) jv[l][c] = Jogador; } while (! rposicao == 1); //Visualiza a matriz apos a nova inserção visualizar(); //Faz o retorno da validação verifica quem venceu o jogo ou não (caso tenha dado velha). v = velha(Jogador); //Informa se o jogador venceu. if ( v == 1) { //Este bloco de comando faz com que o printf fique piscando na tela. int i = 10; while (i) { printf(" \n\n\n\t\t\t O JOGADOR VENCEU O JOGO! \n"); Sleep (2000); system ("cls"); Sleep (100); } return 1; } else return 0; } //programa principal. Jogo da Velha, esta parte do programa é a mais importante, controla de quem é a vez de jogar, chamando as funções e procedimentos necessários //para cada execução do programa. int main() { c = 1; limpeza(); //chama a função para limpeza da matriz visualizar(); //visualiza a matriz 3 X 3 com '0' //Controle para selecionar de quem é a primeira jogada MAQUINA ou JOGADOR do { printf(" Opção para início do jogo...\n\n"); printf(" M = Máquina\n"); printf(" J = Jogador\n\n"); printf(" Informe a opção desejada: "); op = getchar(); }while ( ( op != 'm' ) && ( op != 'M' ) && ( op != 'j' ) && ( op = 'J' ) ); system("cls"); if ( ( op == 'm' ) || ( op == 'M' ) ) { jogo = maquinajoga(); vezde = 1; // está variável é muito importante no programa, //fazendo com que após a máquina jogar ela sede a vez para o jogador. } else { jogo = jogadorjoga(); vezde = 0; //esta variável é muito importante no programa, //fazendo com que após o jogador jogar ele sede a vez para a maquina } //Este laço controla as jogadas e só termina quando alguém ganha ou quando der empate: OBS.: uma ótima modificação neste programa seria o jogador //selecionar se quer parar ou começar um novo jogo do { if ( vezde == 1) { jogo = jogadorjoga(); vezde = 0; } else { jogo = maquinajoga(); vezde = 1; } //Mudança na verificação sendo que se igualar a 9 jogadas e ninguem vencer dara velha. if(c == 8 && jogo == 0) printf("\n\n\t\t\t\t Deu velha! :( \n"); c++; //Mudança do laço de '!jogo' para 'jogo == 0'. }while (( c <= 8 ) && ( jogo == 0 )); getch(); return 0; }
×
×
  • Criar Novo...