Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Programa Jogo da Velha
- Práticas de Fundamentos de Programação
- prof.: Filipe Costa Fernandes - 1ºsemestre/2017
- INSTRUÇÕES NO ENUNCIADO EM PDF
- */
- #include<stdio.h>
- #include<conio.h>
- #include<stdlib.h>
- #include<locale.h>
- //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()
- {
- int linha, coluna;
- for (linha=0;linha<lim; linha++)
- {
- for(coluna=0; coluna<lim; coluna++)
- jv [linha][coluna]=0;
- }
- printf("\t 0 1 2\n\n");
- printf("\t _________________________\n");
- printf("\t0 | | | |\n");
- printf("\t | | | | \n");
- printf("\t | %d | %d | %d |\n",jv[0][0],jv[0][1],jv[0][2]);
- printf("\t | | | | \n");
- printf("\t |_______|_______|_______|\n");
- printf("\t | | | |\n");
- printf("\t | | | |\n");
- printf("\t1 | %d | %d | %d | \n",jv[1][0],jv[1][1],jv[1][2]);
- printf("\t | | | | \n");
- printf("\t |_______|_______|_______|\n");
- printf("\t | | | |\n");
- printf("\t | | | |\n");
- printf("\t2 | %d | %d | %d | \n",jv[2][0],jv[2][1],jv[2][2]);
- printf("\t | | | | \n");
- printf("\t |_______|_______|_______|\n");
- printf("\n\n\n");
- printf("\n\n\n");
- }
- //procedimento utilizado para visualizar o conteúdo da matriz
- void visualizar()
- {
- int w,k;
- printf("\n");
- for (w=0;w<lim;w++)
- {
- for (k=0;k<lim;k++)
- printf("\t%c",jv[w][k]);
- 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........");
- //ESSE SERÁ O RESULTADO , CHECAR SE HOUVE GANHADOR NA PARTIDA;
- /*
- int x,o;
- if((jv[0][0]==x&& jv[0][1]==x && jv[0][2]==1 + vez)|| // | |
- (jv[0][0]==x && jv[1][0]==x && jv[2][0]== 1 + vez)|| // jv[0][0] | jv[0][1] | jv[0][2]
- (jv[0][0]==x && jv[1][1]==x && jv[2][2]== 1 + vez)|| // ---------|----------|------------
- (jv[0][2]==x && jv[0][1]==x && jv[0][0]== 1 + vez)|| // jv[1][0] | jv[1][1] | jv[1][2]
- (jv[2][0]==x && jv[1][0]==x && jv[0][0]== 1 + vez)|| // ---------|----------|------------
- (jv[2][2]==x && jv[1][1]==x && jv[0][0]== 1 + vez)|| // jv[2][0] | jv[2][1] | jv[2][2]
- (jv[0][1]==x && jv[1][1]==x && jv[2][1]== 1 + vez)|| //
- (jv[0][2]==x && jv[1][2]==x && jv[2][2]== 1 + vez)|| //
- (jv[0][2]==x && jv[1][1]==x && jv[2][0]== 1 + vez)|| //
- (jv[1][0]==x && jv[1][1]==x && jv[1][2]== 1 + vez)|| //
- (jv[2][0]==x && jv[2][1]==x && jv[2][2]== 1 + vez)|| //
- (jv[2][1]==x && jv[1][1]==x && jv[0][1]== 1 + vez)|| //
- (jv[2][2]==x && jv[1][2]==x && jv[0][2]== 1 + vez)|| //
- (jv[2][0]==x && jv[1][1]==x && jv[0][2]== 1 + vez)|| //
- (jv[1][2]==x && jv[1][1]==x && jv[1][0]== 1 + vez)|| //
- (jv[2][2]==x && jv[2][1]==x && jv[2][0]== 1 + vez))
- printf("Jogador Vencedor!!");
- else
- if((jv[0][0]==x && jv[0][1]==x && jv[0][2]==x)||
- (jv[0][0]==x && jv[1][0]==x && jv[2][0]==x)||
- (jv[0][0]==x && jv[1][1]==x && jv[2][2]==x)||
- (jv[0][2]==x && jv[0][1]==x && jv[0][0]==x)||
- (jv[2][0]==x && jv[1][0]==x && jv[0][0]==x)||
- (jv[2][2]==x && jv[1][1]==x && jv[0][0]==x)||
- (jv[0][1]==x && jv[1][1]==x && jv[2][1]==x)||
- (jv[0][2]==x && jv[1][2]==x && jv[2][2]==x)||
- (jv[0][2]==x && jv[1][1]==x && jv[2][0]==x)||
- (jv[1][0]==x && jv[1][1]==x && jv[1][2]==x)||
- (jv[2][0]==x && jv[2][1]==x && jv[2][2]==x)||
- (jv[2][1]==x && jv[1][1]==x && jv[0][1]==x)||
- (jv[2][2]==x && jv[1][2]==x && jv[0][2]==x)||
- (jv[2][0]==x && jv[1][1]==x && jv[0][2]==x)||
- (jv[1][2]==x && jv[1][1]==x && jv[1][0]==x)||
- (jv[2][2]==x && jv[2][1]==x && jv[2][0]==x))
- printf("Jogador Vencedor!!");
- else
- printf("Não houve ganhador, JOGUEM DE NOVO!!");*/
- }
- //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("Escolha a coluna: ");
- scanf("%d",&c);
- printf("Escolha a linha: ");
- scanf("%d",&l);
- jv[3][3] = jv[l][c];
- if(c > 3 || c < 0)
- {
- if(l > 3 || l < 0)
- printf("Opção Inválida");
- }
- //printf("Em construção........");
- }
- //esta função utiliza a função random (rand) para selecionar uma nova jogada da máquina,
- //retornando true (verdadeiro) se a jogada resultou em vitória ou false (falso) 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)
- jv[l][c] = Maquina;
- }while ( rposicao );
- visualizar();
- v = velha(Maquina);
- if ( v )
- {
- printf(" A MAQUINA VENCEU O JOGO..........\n");
- return 1;
- }
- else return 0;
- }
- //esta função faz a jogada do jogador, que seleciona uma nova jogada válida,
- //retornando true (verdadeiro) se a jogada resultou em vitória ou false (falso) caso contrário }
- int jogadorjoga()
- {
- //printf("Em construção........");
- }
- //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()
- {
- setlocale(LC_ALL,"Portuguese");
- 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");
- printf(" m = máquina\n");
- printf(" j = jogador\n");
- op = getchar();
- }while ( ( op != 'm' ) && ( op != 'M' ) && ( op != 'j' ) && ( op = 'J' ) );
- 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 )
- {
- jogo = jogadorjoga();
- vezde = 0;
- }
- else
- {
- jogo = maquinajoga();
- vezde = 1;
- }
- c++;
- }while (( c <= 8 ) && ( !jogo ));
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement