Pular para o conteúdo principal

Jogo da Velha em C++


Salve Salve Blogueiros e Visitantes, 

Lembrando de alguns momentos da faculdade, lembrei do começo, quando não sabia nada sobre programação ao muitos menos o que ela significava em nossa vida. Pois bem, hoje vejo que realmente nada funciona sem computadores, programas etc... 

Gostaria de deixar para vocês baixarem um pequeno jogo da velha que fiz, bem enxuto sem muitas frescuras, também deixarei o código fonte para aqueles que quizerem aproveitar.

Feito em C com o programa DEV C++ que por sinal muito bom.

Abraços,



CÓDIGO FONTE
+++++++++++++++++++++++++++++++++++++++++++++++++++
#include
#include


int i=2,op,sequsu=0,l,c,a,b,c,acabou=0;
char matriz[4][4]={{'0',' ',' ',' '},{'0',' ',' ',' '},{'0',' ',' ',' '},{'0',' ',' ',' '}},cadastrado='n',ganhou='n';

struct cadastro         /*DECLARADO O REGRISTRO*/
{
       char nome[25];
       char sexo[10];
       char xo;
       int idade;
       int vitorias;
       } vet[2];
       
/*DESENHO================================================================================================================*/    
void desenho()
{
system("color FC");
/*  0 = Preto        8 = Cinza
    1 = Azul         9 = Azul claro
    2 = Verde        A = Verde claro
    3 = Verde-água   B = Verde-água claro
    4 = Vermelho     C = Vermelho claro
    5 = Roxo         D = Lilás
    6 = Amarelo      E = Amarelo claro
    7 = Branco       F = Branco brilhante*/

printf("\nOOOOOOOOOOOOOO  OOOOOOOOOOOOOO  OOOOOOOOOOOOO  OOOOOOOOOOOOO");
printf("\nOOOOOOOOOOOOOO  OOOOOOOOOOOOOO  OOOOOOOOOOOOO  OOOOOOOOOOOOO");
printf("\n    OOOO        OOOO      OOOO  OOOO           OOOO     OOOO");
printf("\n    OOOO        OOOO      OOOO  OOOO           OOOO     OOOO");
printf("\n    OOOO        OOOO      OOOO  OOOO   OOOOOO  OOOO     OOOO");
printf("\n    OOOO        OOOO      OOOO  OOOO   OOOOOO  OOOO     OOOO");
printf("\n    OOOO        OOOO      OOOO  OOOO     OOOO  OOOO     OOOO");
printf("\n    OOOO        OOOO      OOOO  OOOO     OOOO  OOOO     OOOO");
printf("\nOOOOOOOO        OOOOOOOOOOOOOO  OOOOOOOOOOOOO  OOOOOOOOOOOOO");
printf("\nOOOOOOOO        OOOOOOOOOOOOOO  OOOOOOOOOOOOO  OOOOOOOOOOOOO");
printf("\n                                                             ");
printf("\nOOOO       OOOO  OOOOOOOO  OOOO       OOOO   OOOO       O ");
printf("\nOOOO       OOOO  OOOOOOOO  OOOO       OOOO   OOOO      OOO");
printf("\nOOOO       OOOO  OOOO      OOOO       OOOO   OOOO     OO OO ");
printf("\n OOOO     OOOO   OOOO      OOOO       OOOOOOOOOOO    OOO OOO ");  
printf("\n  OOOO   OOOO    OOOOOOOO  OOOO       OOOOOOOOOOO   OOOOOOOOO");
printf("\n   OOOOOOOO      OOOO      OOOO       OOOOOOOOOOO  OOOOOOOOOOO");
printf("\n    OOOOOOO      OOOO      OOOO       OOOO   OOOO  OOOO   OOOO");
printf("\n     OOOOO       OOOOOOOO  OOOOOOOOO  OOOO   OOOO  OOOO   OOOO");
printf("\n      OOO        OOOOOOOO  OOOOOOOOO  OOOO   OOOO  OOOO   OOOO");
printf("\n                                                             ");
printf("\n                                                             ");       
}

/*ZERA AS MATRAIZES DA TABELA================================================================================================================*/    
zeraJogo()
{
       a=0;   
       acabou=0;
       i=2;
       ganhou='n';
       acabou=0;
       
     for (l=0; l<4;>
         for (c=0; c<4;>
         matriz[l][c]=' ';
         
         } 

/*MOSTRA TELA================================================================================================================*/    
chamaTela()
 {
  printf ("\n   C1   C2   C3 ");
  printf ("\n      |    |    ");
  printf ("\nL1 %c  | %c  | %c",matriz[1][1],matriz[1][2],matriz[1][3]);
  printf ("\n   ___|____|___ ");
  printf ("\n      |    |    ");
  printf ("\nL2 %c  | %c  | %c",matriz[2][1],matriz[2][2],matriz[2][3]);
  printf ("\n   ___|____|___ ");
  printf ("\n      |    |    ");
  printf ("\nL3 %c  | %c  | %c",matriz[3][1],matriz[3][2],matriz[3][3]);
  printf ("\n      |    |    ");

         }
                    
/*1 - CADASTRO DE JOGADORES================================================================================================================*/    
incluirJogadores()  
{
    sequsu++;
    
    if (sequsu==2)
    cadastrado='s';
    
    
    if (sequsu>2) //VERIFICA SE FIO CADASTRO MAIS DE 2 JOGADORES
    {
    printf ("\n|                       CADASTRO DE JOGADORES COMPLETO                         |");
    printf ("\n| Para cadastrar novos jogadores necessario zerar jogadores na opcao 3 do menu |");
    printf ("\n                        --Tecle para continuar--");
    getch();
    }
    else         //CADASTRO DE JOGADORES
    {
    if (sequsu==1)
    vet[1].xo='X';
    else
    vet[2].xo='O';
    printf ("\n|=============================|");
    printf ("\n|   CADASTRO DE JOGADORES     |");
    printf ("\n|      MAX: 02 JOGADORES      |\n");
    printf ("\n|=============================|\n");
    
    printf ("\nDigite o nome do Jogador %d (%c)\n=>",sequsu,vet[sequsu].xo);
           fflush(stdin);
           gets(vet[sequsu].nome);
    printf ("\n Digite o sexo do Jogado %d \n1-Masculino\n2-Feminino\n=>",sequsu);
           fflush(stdin);
           scanf("%d",&op);
    switch(op){
              case 1:
              strcpy(vet[sequsu].sexo,"MASCULINO");
              break;
                   
              case 2:
              strcpy(vet[sequsu].sexo,"FEMININO");
              break;
         
              default: 
              printf ("Digite a Opcao Correta");
                 }
    printf ("\nDigite a idade do jogador %d\n=>",sequsu);
           fflush(stdin);
           scanf ("%d",&vet[sequsu].idade);
          
           } 
    
    system ("cls");                     
                        }
                      
/*2 - VER JOGADORES================================================================================================================*/                      
verJogadores()       
{
    printf ("\n|====================================|");
    printf ("\n|    LISTAR JOGADORES CADASTRADOR    |");
    printf ("\n|====================================|\n");
 int i;
 for (i=1; i<=2; i++){
  printf ("\n\n=============");
  printf ("\n|JOGADOR %d  |" ,i);
  printf ("\n==========================================");
  printf ("\n| NOME              |=>%s",vet[i].nome);
  printf ("\n| SEXO              |=>%s",vet[i].sexo);
  printf ("\n| IDADE             |=>%d",vet[i].idade);
  printf ("\n| SIMBOLO           |=>%c",vet[i].xo);
  printf ("\n| VITORIAS          |=>%d",vet[i].vitorias);
  printf ("\n==========================================");
 }getch();                                       
 system("CLS");
}

/*3 -ZERA JOGADORES================================================================================================================*/    
zeraJogadores()   
{
 sequsu=0;
 for (i=1; i<=2; i++)
  {
   strcpy(vet[i].nome,"                        ");
   strcpy(vet[i].sexo,"          ");
   vet[i].idade=0;
   vet[i].xo=' ';        
   vet[i].vitorias=0;
               }     
    printf ("\n|=============================|");
    printf ("\n Comando Executado com Sucesso");
    printf ("\n|=============================|\n");
    getch(); 
    system("cls");
              }

/*5- COMEÇA JOGO================================================================================================================ */
comecaJogo()
{
  zeraJogo();

if (cadastrado=='n')
{
    printf ("\n|                           NAO EXISTE JOGADORES                            |");
    printf ("\n| Para jogar cadastra os jogadores no Cadastro de jogadores opcao 1 do menu |");
    printf ("\n                   --Tecle para continuar--");
    getch();
    system("cls");
}

else
{

do
{
acabou++;

if (i==2)
i--;
else 
{
i++;
a=0;
}

 
do
{
chamaTela();
b=1;
printf ("\nJogador %d-[%c]",i,vet[i].xo);
printf ("\nL=>");
scanf  ("%d",&l);
printf ("\nC=>");
scanf  ("%d",&c);
if ((l<1)>3) || (c<1)>3))
{
                     printf ("\n      ++LOCAL INVALIDO++"); //VERIFICAR SE EXISTE LOCAIS QUE USUARIO DIGITOU
                     printf ("\n--Tecle para continuar--");
                     getch();
                     system("cls");
                     b=0;
                     }
if ((matriz[l][c]=='X') || (matriz[l][c]=='O')) //VERIFICA SE LOCAL ESTÁ SENDO USADO
{
                     printf ("\n       ++LOCAL USADO++");
                     printf ("\n--Tecle para continuar--");
                     getch();
                     system("cls");
                     b=0;
                     }
if (b==1) 
{
(matriz[l][c]=vet[i].xo);
b=1;
}

}  
while(b==0);
  
  if ((matriz[1][1]==vet[i].xo) && (matriz[1][2]==vet[i].xo) && (matriz[1][3]==vet[i].xo))
     ganhou='s';
     if ((matriz[2][1]==vet[i].xo) && (matriz[2][2]==vet[i].xo) && (matriz[2][3]==vet[i].xo))                    
     ganhou='s';               
     if ((matriz[3][1]==vet[i].xo) && (matriz[3][2]==vet[i].xo) && (matriz[3][3]==vet[i].xo))                    
     ganhou='s';
     if ((matriz[1][1]==vet[i].xo) && (matriz[2][1]==vet[i].xo) && (matriz[3][1]==vet[i].xo))                    
     ganhou='s';
     if ((matriz[1][2]==vet[i].xo) && (matriz[2][2]==vet[i].xo) && (matriz[3][2]==vet[i].xo))                    
     ganhou='s';
     if ((matriz[1][3]==vet[i].xo) && (matriz[2][3]==vet[i].xo) && (matriz[3][3]==vet[i].xo))
     ganhou='s';
     if ((matriz[1][1]==vet[i].xo) && (matriz[2][2]==vet[i].xo) && (matriz[3][3]==vet[i].xo))                    
     ganhou='s';
     if ((matriz[3][1]==vet[i].xo) && (matriz[2][2]==vet[i].xo) && (matriz[1][3]==vet[i].xo))                    
     ganhou='s';

if (ganhou=='s')
{
system("cls");
chamaTela();                 
                printf ("\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                printf ("\n||        JOGADOR %d           ||",i);
                printf ("\n||         GANHOU             ||");               
                printf ("\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                printf ("\n--Tecle para continuar--");
                vet[i].vitorias++;
                a=1;
                for(c=2500; c<2700;>
                _beep(c, 8);
                getch();
                }
if ((acabou==9) && (ganhou=='n'))
{
system("cls");
chamaTela();
                printf ("\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                printf ("\n||        FIM DE JOGO         ||",i);
                printf ("\n||      NENHUM VENCEDOR       ||");               
                printf ("\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                printf ("\n--Tecle para continuar--");
                a=1;
getch();
a=1;
}

system("cls");

}
while(a==0);
}

}

/*CAPA================================================================================================================*/ 
capa()
{
        do 
  {
  desenho();

/*   scanf("%d",&i);
 scanf("%d",&a);
 
 textbackground(i);                    
 textcolor(a);*/
  printf ("\n1 - Cadastro de Jogadores");
  printf ("\n2 - Ver Jogadores");
  printf ("\n3 - Zerar Jogadores");
  printf ("\n4 - Comeca Jogo");
  printf ("\n5 - Creditos");
  printf ("\n6 - Sair\n=>");

  scanf ("%d",&op);
  system ("cls");
  switch(op)
  {
    case 1: incluirJogadores();break;
    case 2: verJogadores();break;
    case 3: zeraJogadores();break;
    case 4: comecaJogo();break;
    case 5: creditos();break;
    default: printf("valor invalido");
         }
          }
 while (op!=6);
      }

/*CREDITOS================================================================================================================*/ 
creditos()
{
    printf ("\n|==================================|");
    printf ("\n|     CREDITOS JOGO DA VELHA       |");
    printf ("\n|==================================|\n");
    printf ("\nCharles Reitz e Rafael Marciano");
    printf ("\nE-mail/MSN: charles.reitz@gmail.com");
    printf ("\n18 anos");
    printf ("\nCursando 1 fase");
    printf ("\nCentro Universitario de Jaragua do Sul -UNERJ-");
    printf ("\nTecnicas de Programacao");
    printf ("\nProfessora Joice S. Mota");
    printf ("\n\n--Tecle para continuar--");
    getch();
    system ("cls");
}

/*INICIO================================================================================================================*/ 
main()                
{
 int i;
 

 vet[1].vitorias=0;
 vet[2].vitorias=0;

capa();


  
}
+++++++++++++++++++++++++++++++++++++++++++++++++++

Link do Executavel: http://www.sendspace.com/file/f4v0t0


Postagens mais visitadas deste blog

REST Protheus Converter charset CP1252 para UTF8 com Header Accept UTF-8

O Protheus possui um tag que pode ser utilizada para conversão para UTF8 de forma transparente, basta enviar no header da requisição a TAG ACCEPT com charset=UTF-8, também pode-se adicionar o appllication/json. Accept : application/json; charset=UTF-8 ou Accept : charset=UTF-8 Isso ajuda pois não precisa mais utilizar as funções DecodeUTF8 e EncodeUT8 pois o próprio rest já vai fazer isso.

Recursividade Minha Linda! Estrutura Produtos Protheus SG1

Fato! Depois que você conhece recursividade em sua vida tudo fica mais leve (rss... ) a recursividade pode ser infinita (pode não ta!) se for infinita vai dar problema, não pode. Mas a recursividade nos ajuda a deixar nosso sistema mais flexível e dinâmico para montar uma série de regras de negócio. Hoje vou falar exatamente da SG1, tabela TOTVS Microsiga Protheus que é utilizada para montar a estrutura de um produto dentro PCP (Planejamento e Controle de Produção). Isso séria algo que a recursividade iria ajudar. Na SG1 temos o campos G1_COD (Pai) e G1_COMP (Filho). G1_COD->G1_COMP->G1_COD->G1_COMP->G1_COD->G1_COMP Seria assim o fluxo da informação. Sem mais delongas, abaixo vou deixar o script para MSSQL para apresentar esses dados. Inté! WITH ESTRUT( CODIGO, COD_PAI, COD_COMP, QTD, PERDA, DT_INI, DT_FIM ,TRT ,RECNO, NIVEL ) AS ( SELECT G1_COD PAI, G1_COD, G1_COMP, G1_QUANT, G1_PERDA, G1_INI, G1_FIM,G1_TRT,SG1.R_E_C_N_O_, 1 AS NIVEL FR

Cadastro de funções ADVPL

FWDirRemove( cDir, nType, lComplete, lKillFiles ) Função para remover diretórios, com a vantagem de remover somente o ultimo nível ou todo o caminho. cDir                   Diretório a ser removido lComplete          Remove todo o caminho (.T.) ou apenas o ultimo nível (.F.) lKillFiles             Remove os arquivos antes de tentar remover o diretório FWMakeDir( cDir, lShowMsg ) Função para criar diretório com seus subdiretórios, com a vantagem de criar todo o caminho. cDir                    Diretório a ser criado lShowMsg          Exibe ou não mensagem caso não consiga criar o diretório FwNoAccent( cString ) Retira acentos de uma string cString                 String a ser retirado os acentos Exemplo: cString := 'O avião não pôde aterrissar de manhã' cString := FwNoAccent( cString ) // Retorna : 'O aviao nao pode aterrissar de manha' FWGetSX5( cTable, cKey ) Função de retorno dos campos de uma tabela no SX5 cTable                  Tabela para pesquisa no SX5. Par