Jogo da Velha Bem simples

Publicado por Roberto Mello Pereira Filho 17/07/2003

[ Hits: 47.358 ]

Download JOGO-DA-VELHA.cpp




Eh um jogo da velha bem simples inclusive deve ter uns erros mas eu fiz isso pra estudar bem matrizes... vale a pena pra este estudo...
Valeus
REPOLHO

  



Esconder código-fonte

/*
   Titulo: Jogo da Velha bem simples.
   Objetivo: Estudo de Matrizes.
   Autor: REPOLHO <repolho@dsgx.org>
   
*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

char tela[3][3];
int i, j, x, y, teste=1, pl, velha=0;

void disp(void);
void testa(int pl);
void play1(void);
void play2(void); 

void main()
{//abre main()
   for(i=0;i<3;i++)//for1
      for(j=0;j<3;j++)//for2
         tela[i][j]=' ';
      
      while(teste!=0)//while1
      {//abre while teste      
         
         //if(velha!=9)
         //{//abre if velha
         if(teste!=0)
         {//abre if play1
                  
            play1();
            if(tela[x][y]==' ')//if menor
            {//abre if menor
               tela[x][y]='X';
               system("cls");
               velha++;
               testa(pl);      
            }//fecha if menor
            else
            {
               system("cls");
               printf("Jah esta sendo usada essa possisao!!\n"); 
               printf("Pressione qualquer tecla para entrar novo valor\n");
               getch();
               system("cls");
               play1();
            }
         
         
         }//fecha if play1
         if(teste!=0)
         {//abre if play2
                     
            play2();
            if(tela[x][y]==' ')
            {
               velha++;
               tela[x][y]='O';
               system("cls");
               testa(pl);   
            }
            else
            {
               system("cls");
               printf("Jah esta sendo usada essa possisao!!\n"); 
               printf("Pressione qualquer tecla para entrar novo valor\n");
               getch();
               system("cls");
               play2();
            }
         
         
         }//fecha if play2
         //}//fecha if velha
         /*else
         {
            disp();
            printf("Deu VELHA!!!");
         }*/
        }//fecha while teste





}//fecha main()

void disp(void)
{//abre tela()
   printf("   1   2   3   Y\n");
   printf(" 1 %c | %c | %c \n",tela[0][0],tela[0][1],tela[0][2]);
   printf("  ---|---|--- \n ");
   printf("2 %c | %c | %c \n",tela[1][0],tela[1][1],tela[1][2]);
   printf("  ---|---|--- \n ");
   printf("3 %c | %c | %c \n",tela[2][0],tela[2][1],tela[2][2]);

   printf("X\n");



}//fecha tela()

void testa(int pl)
{//abre teste
   /*-------------TESTA NA HORIZONTAL--------*/
         if(x==0)
         if((tela[0][0]==tela[0][1]) && (tela[0][1]==tela[0][2]))
         {//if1
            disp();
            printf("JOGADOR **%i** GANHOU!! \n",pl);
         teste=0;
         }//if1
         
         if(x==1)
         if((tela[1][0]==tela[1][1]) && (tela[1][1]==tela[1][2]))
         {//if2
            disp();
            printf("JOGADOR **%i** GANHOU!! \n",pl);
            teste=0;
         }//if2
         if(x==2)
         if((tela[2][0]==tela[2][1]) && (tela[2][1]==tela[2][2]))
         {//if3
            disp();
            printf("JOGADOR **%i** GANHOU!! \n",pl);
            teste=0;
         }//if3
         /*----------TESTA NA VERTICAL--------*/

         if(y==0)
         if((tela[0][0]==tela[1][0]) && (tela[1][0]==tela[2][0]))
         {//if1
            disp();
            printf("JOGADOR **%i** GANHOU!! \n",pl);
            teste=0;
         }//if1
         
         if(y==1)
         if((tela[0][1]==tela[1][1]) && (tela[1][1]==tela[2][1]))
         {//if2
            disp();
            printf("JOGADOR **%i** GANHOU!! \n",pl);
            teste=0;
         }//if2
         if(y==2)
         if((tela[0][2]==tela[1][2]) && (tela[1][2]==tela[2][2]))
         {//if3
            disp();
            printf("JOGADOR **%i** GANHOU!! \n",pl);
            teste=0;
         }//if3
         
          
         if(((x==0)&&(y==0))||((x==1)&&(y==1))||((x==2)&&(y==2)))
         {
         if((tela[0][0]==tela[1][1]) && (tela[0][0]==tela[2][2]))
         {
            disp();
            printf("JOGADOR **%i** GANHOU!! \n",pl);
            teste=0;
         }
         }
         
         
         if(((x==0)&&(y==2))||((x==1)&&(y==1))||((x==2)&&(y==0)))
         {
         if((tela[0][2]==tela[1][1]) && (tela[0][2]==tela[2][0]))
         {
            disp();
            printf("JOGADOR **%i** GANHOU!! \n",pl);
            teste=0;
         }
         }
         


}//fecha teste

void play1(void)
{//abre play1
   disp();
   printf("Jogador 1: Digite a coordenada **X**: ");
   scanf("%i",&x);
   printf("Jogador 1: Digite a coordenada **Y**: ");
   scanf("%i",&y);
   pl=1;
   x--;
   y--;
      
}//fecha play1

void play2(void)
{//abre play2
   disp();      
   printf("Jogador 2: Digite a coordenada **X**: ");
   scanf("%i",&x);
   printf("Jogador 2: Digite a coordenada **Y**: ");
   scanf("%i",&y);
   pl=2;
   x--;
   y--;

}//fecha play2

Scripts recomendados

Bhaskara - Cálculo de raízes de equações do segundo grau

Ordenar vetor com algoritmo Insertion Sort

Verificacao

Implementação de limpar a tela em C

Convertendo dias para anos.


  

Comentários
[1] Comentário enviado por voodoo em 11/03/2004 - 14:04h

Voce tiro esse programa do livro C completo e Total neh?

[2] Comentário enviado por repolho em 11/03/2004 - 16:24h

Nao, apenas peguei a ideia do livro, caso vc compare os codigos nao tem nada a ver um com outro :P

[3] Comentário enviado por amorus em 21/06/2004 - 07:35h

É muito interessante para estudar como o próprio repolho disse.

[4] Comentário enviado por repolho em 21/06/2004 - 11:48h

fico feliz que tenha gostado.
Grato

[5] Comentário enviado por chapolin_dark em 12/08/2004 - 21:36h

Seu codigo fonte esta errado do jogo da velha .

[6] Comentário enviado por fdavid em 15/04/2006 - 14:15h

Tente seguir o padrao ANSI C... este diz que mesmo que a função main não precise retornar nada, declarea como int:

int main()
{
return 0
}

Retorne zero mesmo não seja necessário, Linus faz assim tbm se quiser um nome de peso para confirmar esta informação, veja o kernel source.

[7] Comentário enviado por Ezekias2013 em 08/11/2016 - 10:30h


[1] Comentário enviado por voodoo em 11/03/2004 - 14:04h

Voce tiro esse programa do livro C completo e Total neh?

Essa linguagem não é C++ como no título??



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts