Ir ao conteúdo
  • Cadastre-se

C Problema envolvendo Sockets, xadrez e linguagem C.


Sandro Generoso

Posts recomendados

Olá pessoal do Clube do Hardware! Pois bem, há pouco tempo atrás eu estava desenvolvendo um jogo de xadrez em C, naquele momento eu havia dado uma parado de mexer e voltei com o projeto e inclusive terminei de fazer tudo que queria até o momento (mais um obrigado para quem tinha me ajudado). Mas andei pesquisando sobre sockets em C, achei algo incrível, até copiando códigos soltos na internet fiz um chat em C, fiquei fascinado com essa novidade, mas nem entendi muito como funciona... Enfim, gostaria de implementar esse conhecimento no meu jogo de Xadrez em C para que 2 jogadores em computadores distintos pudessem se enfrentar no jogo...

Gostaria ver se alguém aqui poderia colocar isso no meu código, ou me auxiliar para isso.

Segue o código:

#include<stdio.h>
#include"X-A-D-R-E-Z.h"
int main()
{
    int Xo2, Xd2, Yo2, Yd2, Xo, Xd;
    char Yo, Yd;
    int opcao1, opcao2;
    int promocinha;
    int resultado1 = 30, resultado2 = 30;

    char branco[50], preto[50];
    int CHEQUE;
    int cheque;
    CHEQUE = 0;
    cheque = 0;
    int sair = 0;


    printf("\n\n\t\t\t\tX A D R E Z EM C\n\n");

    printf("Jogar pelo Windows ou pelo Linux?");
    printf("\n\n1-Linux \n\n2-Windows\n\n");
    scanf("%d", &opcao1);
    switch(opcao1)
    {
        while(sair == 0)
        {
        case 1:
            system("clear");
            printf("\n\n\t\t\t\tX A D R E Z EM C\n\n");

            printf("1 - Player Vs Player\n\n");
            printf("2 - Como jogar?\n\n");
            printf("3 - Créditos\n\n");
            scanf("%d", &opcao2);
            switch(opcao2)
            {
            case 1:

                printf("Me informe o nome do jogador branco para comecarmos: \n");
                scanf("%s",branco);

                printf("\nMe informe o nome do jogador preto para seguirmos: \n");
                scanf("%s",preto);
                int chequemate = 0;
                while(chequemate==0)
                {
                    TabuleiroLinux(cheque, CHEQUE);
                    while(resultado1!=1)
                    {
                        printf("\nVez de \033[35m%s\033[0m", branco);
                        printf("\nMe diga as coordenadas da peca que voce gostaria de mexer (linha , coluna): ");
                        scanf("%d %c", &Xo, &Yo);
                        Xo2 = (Xo +(8-(2*Xo)));
                        Yo2 = Yo-97;
                        printf("\nMe diga para onde voce quer ir: ");
                        scanf("%d %c", &Xd, &Yd);
                        Xd2 = (Xd +(8-(2*Xd)));
                        Yd2 = Yd-97;
                        resultado1 = movimentoBranco(Xo2, Xd2, Yo2, Yd2, CHEQUE, cheque);
                        switch(resultado1)
                        {
                        case 0 :
                            resultado2 = 1;
                            break;

                        case 1 :
                            CHEQUE = CHEQUE2();
                            cheque = cheque1();
                            //chequemate = xequemate(cheque, CHEQUE);

                            resultado2 = 30;
                            break;
                        }
                    }

                    TabuleiroLinux(cheque, CHEQUE);
                    while(resultado2!=1)
                    {
                        printf("\nVez de \033[32m%s\033[0m", preto);
                        printf("\nMe diga as coordenadas da peca que voce gostaria de mexer (linha , coluna): ");
                        scanf("%d %c", &Xo, &Yo);
                        Xo2 = (Xo+(8-(2*Xo)));
                        Yo2 = Yo-97;
                        printf("\nMe diga para onde voce quer ir: ");
                        scanf("%d %c", &Xd, &Yd);
                        Xd2 = (Xd+(8-(2*Xd)));
                        Yd2 = Yd-97;
                        resultado2 = movimentoPreto( Xo2, Xd2, Yo2, Yd2, CHEQUE, cheque);
                        switch(resultado2)
                        {
                        case 0 :
                            resultado1 = 1;
                            break;

                        case 1 :
                            CHEQUE = CHEQUE2();
                            cheque = cheque1();
                            //chequemate = xequemate(cheque, CHEQUE);
                            resultado1 = 30;
                            break;

                        }
                    }
                }

                TabuleiroLinux(cheque, CHEQUE);
                if(chequemate == 1)
                {
                printf("\033[32m%s\033[0m é o vencedor! \033[35m%s\033[0m é o perdedor", preto, branco);
                }
                if(chequemate == 2)
                {
                printf("\033[35m%s\033[0m é o vencedor! \033[32m%s\033[0m é o perdedor", branco, preto);
                }

                printf("\n\n\n Voltar ao menu inicial? \n1-Sim\n2-Não\n");
                scanf("%d", &sair-1);

                break;

            case 2:
                system("clear");


                comojogarLinux();
                printf("\n\n\n Voltar ao menu inicial? \n1-Sim\n2-Não\n");
                scanf("%d", &sair-1);

                break;

            case 3:
                system("clear");

                creditosLinux();
                printf("\n\n\n Voltar ao menu inicial? \n1-Sim\n2-Não\n");
                scanf("%d", &sair-1);

                break;

            default:
                printf("Digite uma opção válida");

            }
        }

        break;

    case 2:

        while(sair == 0)
        {

            system("cls");

            printf("\n\n\t\t\t\tX A D R E Z EM C\n\n");

            printf("1 - Player Vs Player\n\n");
            printf("2 - Como jogar?\n\n");
            printf("3 - Creditos\n\n");
            scanf("%d", &opcao2);
            switch(opcao2)
            {
            case 1:

                printf("Me informe o nome do jogador branco para comecarmos: \n");
                scanf("%s",branco);

                printf("\nMe informe o nome do jogador preto para seguirmos: \n");
                scanf("%s",preto);
                int chequemate = 0;
                while(chequemate==0)
                {
                    TabuleiroWindows(cheque, CHEQUE);
                    while(resultado1!=1)
                    {
                        printf("\nVez de %s", branco);
                        printf("\nMe diga as coordenadas da peca que voce gostaria de mexer (linha , coluna): ");
                        scanf("%d %c", &Xo, &Yo);
                        Xo2 = (Xo+(8-(2*Xo)));
                        Yo2 = Yo-97;
                        printf("\nMe diga para onde voce quer ir: ");
                        scanf("%d %c", &Xd, &Yd);
                        Xd2 = (Xd +(8-(2*Xd)));
                        Yd2 = Yd-97;
                        resultado1 = movimentoBranco(Xo2, Xd2, Yo2, Yd2, CHEQUE, cheque);
                        switch(resultado1)
                        {
                        case 0 :
                            resultado2 = 1;
                            break;

                        case 1 :
                            CHEQUE = CHEQUE2();
                            cheque = cheque1();
                            //chequemate = xequemate(cheque, CHEQUE);
                            resultado2 = 30;
                            break;
                        }
                    }

                    TabuleiroWindows(cheque, CHEQUE);
                    while(resultado2!=1)
                    {
                        printf("\nVez de %s", preto);
                        printf("\nMe diga as coordenadas da peca que voce gostaria de mexer (linha , coluna): ");
                        scanf("%d %c", &Xo, &Yo);
                        Xo2 = (Xo+(8-(2*Xo)));
                        Yo2 = Yo-97;
                        printf("\nMe diga para onde voce quer ir: ");
                        scanf("%d %c", &Xd, &Yd);
                        Xd2 = (Xd +(8-(2*Xd)));
                        Yd2 = Yd-97;
                        resultado2 = movimentoPreto( Xo2, Xd2, Yo2, Yd2, CHEQUE, cheque);
                        switch(resultado2)
                        {
                        case 0 :
                            resultado1 = 1;
                            break;

                        case 1 :
                            CHEQUE = CHEQUE2();
                            cheque = cheque1();
                            //chequemate = xequemate(cheque, CHEQUE);
                            resultado1 = 30;
                            break;

                        }
                    }
                }


                break;

            case 2:

                comojogarWindows();
                printf("\n\n\n Voltar ao menu inicial? \n1-Sim\n2-Nao\n");
                scanf("%d", &sair-1);

                break;

            case 3:

                creditosWindows();
                printf("\n\n\n Voltar ao menu inicial? \n1-Sim\n2-Nao\n");
                scanf("%d", &sair-1);

                break;


            default:
                printf("Digite uma opcao valida");

            }

        default:
            printf("Digite uma opcao valida");
        }
    }
}

E a biblioteca "X-A-D-R-E-Z.h" que eu criei pro código não ficar absurdo de tão grande, mas acabou que a biblioteca ficou absurda de tão grande kkkkk

#include <stdio.h>
#include <stdlib.h>
char xadrez[8][8] =
{
    {'T', 'C', 'B', 'D', 'R', 'B', 'C', 'T'},
    {'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P'},
    {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
    {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
    {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
    {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
    {'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p'},
    {'t', 'c', 'b', 'd', 'r', 'b', 'c', 't'}
};


int contareibranco = 0, contatorre1branco = 0, contatorre2branco = 0;
int contareipreto = 0, contatorre1preto = 0, contatorre2preto = 0;

TabuleiroLinux(int cheque, int CHEQUE)
{
    int linha, repete, coluna;

    system("clear");
    printf("   a      b      c      d      e      f      g      h\n");
    for(linha = 0; linha < 8; linha++)

    {
        for(repete=0; repete<3; repete++)
        {
            if(repete==1)
            {
                printf("%d", linha+(8-(2*linha)));
            }
            else
            {
                printf(" ");
            }

            for(coluna = 0; coluna < 8; coluna++)
            {
                char peca = xadrez[linha][coluna];


                char letra = (((coluna+linha)%2 == 0))? printf ("█") : printf(" ");

                letra = ((repete==1)&&(peca == 'T')) ? printf("\033[32m♖\033[0m") : letra;
                letra = ((repete==1)&&(peca == 'C')) ? printf("\033[32m♘\033[0m") : letra;
                letra = ((repete==1)&&(peca == 'B')) ? printf("\033[32m♗\033[0m") : letra;
                letra = ((repete==1)&&(peca == 'D')) ? printf("\033[32m♕\033[0m") : letra;
                letra = ((repete==1)&&(peca == 'R')&&(CHEQUE==0)) ? printf("\033[32m♔\033[0m") : letra;
                letra = ((repete==1)&&(peca == 'R')&&(CHEQUE==1)) ? printf("\033[31m♔\033[0m") : letra;
                letra = ((repete==1)&&(peca == 'P')) ? printf("\033[32m♙\033[0m") : letra;
                letra = ((repete==1)&&(peca == 't')) ? printf("\033[35m♜\033[0m") : letra;
                letra = ((repete==1)&&(peca == 'c')) ? printf("\033[35m♞\033[0m") : letra;
                letra = ((repete==1)&&(peca == 'b')) ? printf("\033[35m♝\033[0m") : letra;
                letra = ((repete==1)&&(peca == 'd')) ? printf("\033[35m♛\033[0m") : letra;
                letra = ((repete==1)&&(peca == 'r')&&(cheque==0)) ? printf("\033[35m♚\033[0m") : letra;
                letra = ((repete==1)&&(peca == 'r')&&(cheque==1)) ? printf("\033[31m♚\033[0m") : letra;
                letra = ((repete==1)&&(peca == 'p')) ? printf("\033[35m♟\033[0m") : letra;
                letra = ((repete==1)&&(peca == ' ')) ? ((coluna+linha)%2==0) ? printf ("█") : printf(" ") : letra;
                letra = ((repete==0)||(repete==2))? ((coluna+linha)%2==0) ? printf ("█") : printf(" ") : letra;


                if((coluna+linha)%2==0)
                {
                    printf("█████");
                }
                else
                {
                    printf("     ");
                }
            }
            printf("\n");
        }
    }
}
TabuleiroWindows(int cheque, int CHEQUE)
{
    int linha, repete, coluna;

    system("cls");
    printf("   a      b      c      d      e      f      g      h\n");
    for(linha = 0; linha < 8; linha++)

    {
        for(repete=0; repete<3; repete++)
        {

            if(repete==1)
            {
                printf("%d", linha+(8-(2*linha)));
            }
            else
            {
                printf(" ");
            }

            for(coluna = 0; coluna < 8; coluna++)
            {
                char peca = xadrez[linha][coluna];


                char letra = (((coluna+linha)%2 == 0))? printf ("\xB2") : printf(" ");

                letra = ((repete==1)&&(peca == 'T')) ? printf("T") : letra;
                letra = ((repete==1)&&(peca == 'C')) ? printf("C") : letra;
                letra = ((repete==1)&&(peca == 'B')) ? printf("B") : letra;
                letra = ((repete==1)&&(peca == 'D')) ? printf("D") : letra;
                letra = ((repete==1)&&(peca == 'R')&&(CHEQUE==0)) ? printf("R") : letra;
                letra = ((repete==1)&&(peca == 'R')&&(CHEQUE==1)) ? printf("\033[31mR\033[0m") : letra;
                letra = ((repete==1)&&(peca == 'P')) ? printf("P") : letra;
                letra = ((repete==1)&&(peca == 't')) ? printf("t") : letra;
                letra = ((repete==1)&&(peca == 'c')) ? printf("c") : letra;
                letra = ((repete==1)&&(peca == 'b')) ? printf("b") : letra;
                letra = ((repete==1)&&(peca == 'd')) ? printf("d") : letra;
                letra = ((repete==1)&&(peca == 'r')&&(cheque==0)) ? printf("r") : letra;
                letra = ((repete==1)&&(peca == 'r')&&(cheque==1)) ? printf("\033[31mr\033[0m") : letra;
                letra = ((repete==1)&&(peca == 'p')) ? printf("p") : letra;
                letra = ((repete==1)&&(peca == ' ')) ? ((coluna+linha)%2==0) ? printf ("\xB2") : printf(" ") : letra;
                letra = ((repete==0)||(repete==2))? ((coluna+linha)%2==0) ? printf ("\xB2") : printf(" ") : letra;


                if((coluna+linha)%2==0)
                {
                    printf("\xB2\xB2\xB2\xB2\xB2");
                }
                else
                {
                    printf("     ");
                }
            }
            printf("\n");
        }
    }

}


int movimentoBranco(int Xo,int Xd,int Yo, int Yd, int CHEQUE, int cheque)
{
    //Xo = Linha origem, Xd = Linha destino, Yo = Coluna origem, Yd = Coluna destino.
    int mover = 0;
    char peca;
    char auxiliar;
    int vertical, horizontal;
    int verificador, contador=0;
    vertical = abs(Xd - Xo);
    horizontal = abs(Yd - Yo);
    peca = xadrez[Xo][Yo];
    int promocinha;

    if((Xo>=0&&Xo<8)&&(Xd>=0&&Xd<8)&&(Yo>=0&&Yo<8)&&(Yd>=0&&Yd<8))
    {
        if((xadrez[Xd][Yd]=='t')||(xadrez[Xd][Yd]=='c')||(xadrez[Xd][Yd]=='b')||(xadrez[Xd][Yd]=='d')||(xadrez[Xd][Yd]=='r')||(xadrez[Xd][Yd]=='p'))
        {
            printf("ERRO: voce nao pode comer sua propria peca!");
            return 0;
        }
        else
        {
            if(peca=='t')
            {
                if((vertical==0)&&(horizontal!=0))
                {
                    if((Yd - Yo)<0) /* ↑ */
                    {
                        for(verificador=1; verificador<abs(Yd-Yo); verificador++)
                        {
                            if (xadrez[Xo][Yo-verificador]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }
                    if((Yd - Yo)>0) /* ↓ */
                    {
                        for(verificador=1; verificador<abs(Yd-Yo); verificador++)
                        {
                            if (xadrez[Xo][Yo+verificador]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }

                }
                if((horizontal==0)&&(vertical!=0))
                {
                    if((Xd - Xo)<0) /* ← */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if (xadrez[Xo-verificador][Yo]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }
                    if((Xd - Xo)>0) /* → */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if (xadrez[Xo+verificador][Yo]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }
                }
                if(contador==0)
                {
                    mover = 1;
                }
            }
            if(peca=='c')
            {
                if((vertical==2)&&(horizontal==1))
                {
                    mover = 1;
                }
                if((vertical==1)&&(horizontal==2))
                {
                    mover = 1;
                }
            }
            if(peca=='b')
            {
                if((vertical==horizontal)&&(vertical!=0))
                {
                    if(((Xd - Xo)<0)&& ((Yd - Yo)<0)) /* ↑ + ←  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo - verificador][Yo - verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }
                    if(((Xd - Xo)<0)&& ((Yd - Yo)>0)) /* ↓ + ←  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo - verificador][Yo + verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }

                    if(((Xd - Xo)>0)&& ((Yd - Yo)<0)) /* ↑ + →  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo + verificador][Yo - verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }

                    if(((Xd - Xo)>0)&& ((Yd - Yo)>0)) /* ↓ + →  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo + verificador][Yo + verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }

                    if(contador==0)
                    {
                        mover = 1;
                    }

                }

            }
            if(peca=='d')
            {
                if((vertical==0)&&(horizontal!=0))
                {
                    if((Yd - Yo)<0) /* ↑ */
                    {
                        for(verificador=1; verificador<abs(Yd-Yo); verificador++)
                        {
                            if (xadrez[Xo][Yo-verificador]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }
                    if((Yd - Yo)>0) /* ↓ */
                    {
                        for(verificador=1; verificador<abs(Yd-Yo); verificador++)
                        {
                            if (xadrez[Xo][Yo+verificador]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }

                }
                if((horizontal==0)&&(vertical!=0))
                {
                    if((Xd - Xo)<0) /* ← */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if (xadrez[Xo-verificador][Yo]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }
                    if((Xd - Xo)>0) /* → */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if (xadrez[Xo+verificador][Yo]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }
                }
                if((vertical==horizontal)&&(vertical!=0))
                {
                    if(((Xd - Xo)<0)&& ((Yd - Yo)<0)) /* ↑ + ←  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo - verificador][Yo - verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }
                    if(((Xd - Xo)<0)&& ((Yd - Yo)>0)) /* ↓ + ←  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo - verificador][Yo + verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }

                    if(((Xd - Xo)>0)&& ((Yd - Yo)<0)) /* ↑ + →  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo + verificador][Yo - verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }

                    if(((Xd - Xo)>0)&& ((Yd - Yo)>0)) /* ↓ + →  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo + verificador][Yo + verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }
                }
                if(contador==0)
                {
                    mover = 1;
                }
            }
            if(peca=='r')
            {
                if((vertical >= 0 && vertical <= 1) && (horizontal >= 0 && horizontal <= 1))
                {
                    mover = 1;
                    contareibranco++;
                }
                if((contareibranco==0)&&(contatorre1branco==0)&&(xadrez[7][5]==' ')&&(xadrez[7][6]==' ')&&((Yd-Yo)==2)&&(vertical==0)&&(cheque==0))
                {
                    mover = 2;
                    contareibranco++;
                    contatorre1branco++;
                }
                if((contareibranco==0)&&(contatorre2branco==0)&&(xadrez[7][3]==' ')&&(xadrez[7][2]==' ')&&(xadrez[7][1]==' ')&&((Yd-Yo)==-2)&&(vertical==0)&&(cheque==0))
                {
                    mover = 3;
                    contareibranco++;
                    contatorre2branco++;
                }
            }
            if(peca=='p')
            {
                if((Xo==6) && ((Xd-Xo)==-2) && (horizontal==0) && (xadrez[Xd][Yd]==' ')&&(xadrez[5][Yd]==' '))
                {
                    mover = 1;
                }
                if(((Xd-Xo)==-1) && (horizontal==0) && (xadrez[Xd][Yd]==' '))
                {
                    mover = 1;
                }
                if(((Xd-Xo)==-1) && (horizontal==1) && (xadrez[Xd][Yd]!=' '))
                {
                    mover = 1;
                }
                if((mover==1)&&(Xd==0))
                {
                    mover = 5;
                }
            }
            if(contador == 0)
            {
                if(mover==1)
                {
                    auxiliar = xadrez[Xd][Yd];
                    xadrez[Xd][Yd] = xadrez[Xo][Yo];
                    xadrez[Xo][Yo] = ' ';
                    if(cheque1()==1)
                    {
                         xadrez[Xo][Yo] = xadrez[Xd][Yd];
                         xadrez[Xd][Yd] = auxiliar;
                         mover = 0;
                         printf("ERRO: voce nao pode se por em xeque!!\n");
                    }
                    else
                    {
                      return 1;
                    }
                }
                if(mover==0)
                {
                    printf("ERRO: movimento invalido!");
                    return 0;
                }
                if(mover==2)
                {
                    xadrez[Xd][Yd] = xadrez[Xo][Yo];
                    xadrez[Xo][Yo] = ' ';
                    xadrez[7][7] = ' ';
                    xadrez[7][5] = 't';
                    return 1;
                }
                if(mover==3)
                {
                    xadrez[Xd][Yd] = xadrez[Xo][Yo];
                    xadrez[Xo][Yo] = ' ';
                    xadrez[7][0] = ' ';
                    xadrez[7][3] = 't';
                    return 1;
                }
                if(mover==5)
                {
                    printf("Para que peca voce gostaria de ser promovido?\n\n");
                    printf("1-Dama\n\n2-Torre\n\n3-Bispo\n\n4-Cavalo\n\n");
                    scanf("%d", &promocinha);
                    switch(promocinha)
                    {
                    case 1:
                        xadrez[Xd][Yd] = 'd';
                        xadrez[Xo][Yo] = ' ';
                        break;
                    case 2:
                        xadrez[Xd][Yd] = 't';
                        xadrez[Xo][Yo] = ' ';
                        break;
                    case 3:
                        xadrez[Xd][Yd] = 'b';
                        xadrez[Xo][Yo] = ' ';
                        break;
                    case 4:
                        xadrez[Xd][Yd] = 'c';
                        xadrez[Xo][Yo] = ' ';
                        break;
                    default:
                        printf("escolha uma opcao valida");

                    }
                    return 1;
                }
            }
            else
            {
                printf("ERRO: voce nao pode pular pecas!");
                return 0;
            }
        }
    }

    else
    {
        printf("ERRO: coordenadas invalidas!");
        return 0;
    }
}

int movimentoPreto(int Xo,int Xd,int Yo, int Yd, int CHEQUE, int cheque)
{
    //Xo = Linha origem, Xd = Linha destino, Yo = Coluna origem, Yd = Coluna destino.
    int mover = 0;
    char peca;
    peca = xadrez[Xo][Yo];
    char auxiliar;

    int vertical, horizontal;
    int verificador, contador=0;
    vertical = abs(Xd - Xo);
    horizontal = abs(Yd - Yo);
    int promocinha;

    if((Xo>=0&&Xo<8)&&(Xd>=0&&Xd<8)&&(Yo>=0&&Yo<8)&&(Yd>=0&&Yd<8))
    {
        if((xadrez[Xd][Yd]=='T')||(xadrez[Xd][Yd]=='C')||(xadrez[Xd][Yd]=='B')||(xadrez[Xd][Yd]=='D')||(xadrez[Xd][Yd]=='R')||(xadrez[Xd][Yd]=='P'))
        {
            printf("ERRO: voce nao pode comer sua propria peca!");
            return 0;
        }
        else
        {
            if(peca=='T')
            {
                if((vertical==0)&&(horizontal!=0))
                {
                    if((Yd - Yo)<0) /* ↑ */
                    {
                        for(verificador=1; verificador<abs(Yd-Yo); verificador++)
                        {
                            if (xadrez[Xo][Yo-verificador]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }
                    if((Yd - Yo)>0) /* ↓ */
                    {
                        for(verificador=1; verificador<abs(Yd-Yo); verificador++)
                        {
                            if (xadrez[Xo][Yo+verificador]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }

                }
                if((horizontal==0)&&(vertical!=0))
                {
                    if((Xd - Xo)<0) /* ← */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if (xadrez[Xo-verificador][Yo]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }
                    if((Xd - Xo)>0) /* → */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if (xadrez[Xo+verificador][Yo]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }
                }
                if(contador==0)
                {
                    mover = 1;
                }
            }
            if(peca=='C')
            {
                if((vertical==2)&&(horizontal==1))
                {
                    mover = 1;
                }
                if((vertical==1)&&(horizontal==2))
                {
                    mover = 1;
                }
            }
            if(peca=='B')
            {
                if((vertical==horizontal)&&(vertical!=0))
                {
                    if(((Xd - Xo)<0)&& ((Yd - Yo)<0)) /* ↑ + ←  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo - verificador][Yo - verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }
                    if(((Xd - Xo)<0)&& ((Yd - Yo)>0)) /* ↓ + ←  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo - verificador][Yo + verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }

                    if(((Xd - Xo)>0)&& ((Yd - Yo)<0)) /* ↑ + →  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo + verificador][Yo - verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }

                    if(((Xd - Xo)>0)&& ((Yd - Yo)>0)) /* ↓ + →  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo + verificador][Yo + verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }

                    if(contador==0)
                    {
                        mover = 1;
                    }

                }

            }
            if(peca=='D')
            {
                if((vertical==0)&&(horizontal!=0))
                {
                    if((Yd - Yo)<0) /* ↑ */
                    {
                        for(verificador=1; verificador<abs(Yd-Yo); verificador++)
                        {
                            if (xadrez[Xo][Yo-verificador]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }
                    if((Yd - Yo)>0) /* ↓ */
                    {
                        for(verificador=1; verificador<abs(Yd-Yo); verificador++)
                        {
                            if (xadrez[Xo][Yo+verificador]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }
                }
                if((horizontal==0)&&(vertical!=0))
                {
                    if((Xd - Xo)<0) /* ← */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if (xadrez[Xo-verificador][Yo]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }
                    if((Xd - Xo)>0) /* → */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if (xadrez[Xo+verificador][Yo]!= ' ')
                            {
                                contador = 1;
                            }
                        }
                    }
                }
                if((vertical==horizontal)&&(vertical!=0))
                {
                    if(((Xd - Xo)<0)&& ((Yd - Yo)<0)) /* ↑ + ←  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo - verificador][Yo - verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }
                    if(((Xd - Xo)<0)&& ((Yd - Yo)>0)) /* ↓ + ←  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo - verificador][Yo + verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }

                    if(((Xd - Xo)>0)&& ((Yd - Yo)<0)) /* ↑ + →  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo + verificador][Yo - verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }

                    if(((Xd - Xo)>0)&& ((Yd - Yo)>0)) /* ↓ + →  */
                    {
                        for(verificador=1; verificador<abs(Xd-Xo); verificador++)
                        {
                            if(xadrez[Xo + verificador][Yo + verificador] != ' ')
                            {
                                contador=1;
                            }
                        }
                    }
                }

                if(contador==0)
                {
                    mover = 1;
                }
            }
            if(peca=='R')
            {
                if((vertical >= 0 && vertical <= 1) && (horizontal >= 0 && horizontal <= 1))
                {
                    mover = 1;
                    contareipreto++;
                }
                if((contareipreto==0)&&(contatorre1preto==0)&&(xadrez[0][5]==' ')&&(xadrez[0][6]==' ')&&((Yd-Yo)==2)&&(vertical==0)&&(CHEQUE==0))
                {
                    mover = 2;
                    contareipreto++;
                    contatorre1preto++;
                }
                if((contareipreto==0)&&(contatorre2preto==0)&&(xadrez[0][3]==' ')&&(xadrez[0][2]==' ')&&(xadrez[0][1]==' ')&&((Yd-Yo)==-2)&&(vertical==0)&&(CHEQUE==0))
                {
                    mover = 2;
                    contareipreto++;
                    contatorre2preto++;
                }
            }
            if(peca=='P')
            {
                if((Xo==1) && ((Xd-Xo)==2) && (horizontal==0) && (xadrez[Xd][Yd]==' ') && (xadrez[2][Yd]==' '))
                {
                    mover = 1;
                }
                if(((Xd-Xo)==1) && (horizontal==0) && (xadrez[Xd][Yd]==' '))
                {
                    mover = 1;
                }
                if(((Xd-Xo)==1) && (horizontal==1) && (xadrez[Xd][Yd]!=' '))
                {
                    mover = 1;
                }
                if((mover==1)&&(Xd==7))
                {
                    mover = 5;
                }
            }
            if(contador == 0)
            {
                if(mover==1)
                {
                    auxiliar = xadrez[Xd][Yd];
                    xadrez[Xd][Yd] = xadrez[Xo][Yo];
                    xadrez[Xo][Yo] = ' ';
                    if(CHEQUE2()==1)
                    {
                         xadrez[Xo][Yo] = xadrez[Xd][Yd];
                         xadrez[Xd][Yd] = auxiliar;
                         mover = 0;
                         printf("ERRO: voce nao pode se por em xeque!!\n");
                    }
                    else
                    {
                      return 1;
                    }
                }
                if(mover==0)
                {
                    printf("ERRO: movimento invalido!");
                    return 0;
                }
                if(mover==2)
                {
                    xadrez[Xd][Yd] = xadrez[Xo][Yo];
                    xadrez[Xo][Yo] = ' ';
                    xadrez[0][7] = ' ';
                    xadrez[0][5] = 'T';
                    return 1;
                }
                if(mover==3)
                {
                    xadrez[Xd][Yd] = xadrez[Xo][Yo];
                    xadrez[Xo][Yo] = ' ';
                    xadrez[0][0] = ' ';
                    xadrez[0][3] = 'T';
                    return 1;
                }
                if(mover==5)
                {
                    printf("Para que peca voce gostaria de ser promovido?\n\n");
                    printf("1-Dama\n\n2-Torre\n\n3-Bispo\n\n4-Cavalo\n\n");
                    scanf("%d", &promocinha);
                    switch(promocinha)
                    {
                    case 1:
                        xadrez[Xd][Yd] = 'D';
                        xadrez[Xo][Yo] = ' ';
                        break;
                    case 2:
                        xadrez[Xd][Yd] = 'T';
                        xadrez[Xo][Yo] = ' ';
                        break;
                    case 3:
                        xadrez[Xd][Yd] = 'B';
                        xadrez[Xo][Yo] = ' ';
                        break;
                    case 4:
                        xadrez[Xd][Yd] = 'C';
                        xadrez[Xo][Yo] = ' ';
                        break;
                    default:
                        printf("escolha uma opcao valida");

                    }
                    return 1;
                }
            }
            else
            {
                printf("ERRO: voce nao pode pular pecas!");
                return 0;
            }
        }
    }

    else
    {
        printf("ERRO: coordenadas invalidas!");
        return 0;
    }
}

void comojogarLinux()
{
    printf(" REGRAS DO XADREZ: \n\n Movimentação das peças:");
    printf("\n\nTorre:\n ♖ e ♜ - Movimenta na vertical ou na horizontal." );
    printf("\n\nBispo:\n ♗ e ♝ - Movimenta em diagonal.");
    printf("\n\nDama:\n ♕ e ♛ - Movimenta na vetical ou na horizontal ou na diagonal.");
    printf("\n\nRei:\n ♔ e ♚ - Movimenta para todas as direções, mas apenas uma casa por vez");
    printf("\n\nPeão:\n ♙ e ♟ - Movimenta-se para frente uma casa, para devorar uma peça adversária, uma passo para uma de suas diagonais dianteiras");
    printf(", No primeiro movimento de cada peão, pode se andar duas casas ao invés de uma.");
    printf("\n\nCavalo:\n ♘ e ♞ - É a única peça que pode 'saltar' sobre outras peças. Andando 2 casas na horizontal ou na vertical e depois mais uma num sentido perpendicular.\n\n");
    printf(" \n\n Objetivo do jogo:");
    printf("\n\nDar o XEQUE-MATE no seu adversário, que seria deixar o rei do adversário ameaçado e sem lugar para onde ir!");
}
void comojogarWindows()
{
    printf(" REGRAS DO XADREZ: \n\n Movimentacao das pecas:");
    printf("\n\nTorre:\n t e T - Movimenta na vertical ou na horizontal." );
    printf("\n\nBispo:\n b e B - Movimenta em diagonal.");
    printf("\n\nDama:\n d e D - Movimenta na vetical ou na horizontal ou na diagonal.");
    printf("\n\nRei:\n r e R - Movimenta para todas as direcoes, mas apenas uma casa por vez");
    printf("\n\nPeao:\n p e P - Movimenta-se para frente uma casa, para devorar uma peça adversária, uma passo para uma de suas diagonais dianteiras");
    printf(", No primeiro movimento de cada peao, pode se andar duas casas ao invés de uma.");
    printf("\n\nCavalo:\n c e C - A unica peca que pode 'saltar' sobre outras pecas. Andando 2 casas na horizontal ou na vertical e depois mais uma num sentido perpendicular.\n\n");
    printf(" \n\n Objetivo do jogo:");
    printf("\n\nDar o XEQUE-MATE no seu adversario, que seria deixar o rei do adversario ameaçado e sem lugar para onde ir!");
}
void creditosLinux()
{
    printf(" CRIADOR DO JOGO DE XADREZ: Sessa ibn Daher \n\n CRIADOR DA LINGUAGEM C: Dennis Ritchie \n\n PROGRAMADOR CHEFE E DESENVOLVEDOR: Sandro Generoso \n\n ANALISTA DE LÓGICA: Sandro Generoso\n\n DESIGNER GRAFICO: Sandro Generoso\n\n ENGENHEIRO DE C: Sandro Generoso\n\n ASSISTENTE DE PROGRAMAÇÃO: Sandro Generoso\n\n AGRADECIMENTOS: Departamento de Computação e Matemática - USP Ribeirão Preto\n\n");
}
void creditosWindows()
{
    printf(" CRIADOR DO JOGO DE XADREZ: Sessa ibn Daher \n\n CRIADOR DA LINGUAGEM C: Dennis Ritchie \n\n PROGRAMADOR CHEFE E DESENVOLVEDOR: Sandro Generoso \n\n ANALISTA DE LOGICA: Sandro Generoso\n\n DESIGNER GRAFICO: Sandro Generoso\n\n ENGENHEIRO DE C: Sandro Generoso\n\n ASSISTENTE DE PROGRAMACAO: Sandro Generoso\n\n AGRADECIMENTOS: Departamento de Computacao e Matematica - USP Ribeirao Preto\n\n");
}
int CHEQUE2()
{
    /*Aqui eu tentarei ver se o rei preto está em cheque*/
    int i, j, verificador, verificador2, contador=0;
    for (i=0; i<=7; i++)
    {
        for (j=0; j<=7; j++)
        {
            if(xadrez[i][j]=='t')
            {
                contador = 0;
                for(verificador=1; verificador<=i; verificador++)
                {
                    if(xadrez[i-verificador][j]=='R')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i-verificador2][j]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
                contador=0;
                for(verificador=1; verificador<=(7-i); verificador++)
                {
                    if(xadrez[i+verificador][j]=='R')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i+verificador2][j]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
                contador=0;
                for(verificador=1; verificador<=j; verificador++)
                {
                    if(xadrez[i][j-verificador]=='R')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i][j-verificador2]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
                contador=0;
                for(verificador=1; verificador<=(7-j); verificador++)
                {
                    if(xadrez[i][j+verificador]=='R')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i][j-verificador2]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
            }
            if(xadrez[i][j]=='c')
            {
                if((xadrez[i+2][j+1]=='R')||(xadrez[i+2][j-1]=='R')||(xadrez[i-2][j+1]=='R')||(xadrez[i+1][j+2]=='R')||(xadrez[i+1][j-2]=='R')||(xadrez[i-1][j+2]=='R')||(xadrez[i-1][j-2]=='R')||(xadrez[i-2][j-1]=='R'))
                {
                    return 1;
                }
            }
            if(xadrez[i][j]=='p')
            {
                if((xadrez[i-1][j-1]=='R')||(xadrez[i-1][j+1]=='R'))
                {
                    return 1;
                }
            }
            if(xadrez[i][j]=='b')
            {
                if(i>j)
                {
                    contador=0;
                    for(verificador=1; verificador<=j; verificador++)
                    {
                        if(xadrez[i-verificador][j-verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                    contador=0;
                    for(verificador=1; verificador<=(7-i); verificador++)
                    {
                        if(xadrez[i+verificador][j+verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                else
                {
                    contador = 0;
                    for(verificador=1; verificador<=i; verificador++)
                    {
                        if(xadrez[i-verificador][j-verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                    contador=0;
                    for(verificador=1; verificador<=(7-j); verificador++)
                    {
                        if(xadrez[i+verificador][j+verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                if((7-j)>i)
                {
                    contador=0;
                    for(verificador=1; verificador<=i; verificador++)
                    {
                        if(xadrez[i-verificador][j+verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                else
                {
                    contador=0;
                    for(verificador=1; verificador<=(7-j); verificador++)
                    {
                        if(xadrez[i-verificador][j+verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                if((7-i)>j)
                {
                    contador=0;
                    for(verificador=1; verificador<=(7-i); verificador++)
                    {
                        if(xadrez[i+verificador][j-verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                else
                {
                    contador=0;
                    for(verificador=1; verificador<=j; verificador++)
                    {
                        if(xadrez[i+verificador][j-verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
            }
            if(xadrez[i][j]=='d')
            {
                contador=0;
                for(verificador=1; verificador<=i; verificador++)
                {
                    if(xadrez[i-verificador][j]=='R')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i-verificador2][j]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
                contador=0;
                for(verificador=1; verificador<=(7-i); verificador++)
                {
                    if(xadrez[i+verificador][j]=='R')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i+verificador2][j]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
                contador=0;
                for(verificador=1; verificador<=j; verificador++)
                {
                    if(xadrez[i][j-verificador]=='R')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i][j-verificador2]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
                contador=0;
                for(verificador=1; verificador<=(7-j); verificador++)
                {
                    if(xadrez[i][j+verificador]=='R')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i][j-verificador2]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
                if(i>j)
                {
                    contador=0;
                    for(verificador=1; verificador<=j; verificador++)
                    {
                        if(xadrez[i-verificador][j-verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                    contador=0;
                    for(verificador=1; verificador<=(7-i); verificador++)
                    {
                        if(xadrez[i+verificador][j+verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                else
                {
                    contador = 0;
                    for(verificador=1; verificador<=i; verificador++)
                    {
                        if(xadrez[i-verificador][j-verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                    contador=0;
                    for(verificador=1; verificador<=(7-j); verificador++)
                    {
                        if(xadrez[i+verificador][j+verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                if((7-j)>i)
                {
                    contador=0;
                    for(verificador=1; verificador<=i; verificador++)
                    {
                        if(xadrez[i-verificador][j+verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                else
                {
                    contador=0;
                    for(verificador=1; verificador<=(7-j); verificador++)
                    {
                        if(xadrez[i-verificador][j+verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                if((7-i)>j)
                {
                    contador=0;
                    for(verificador=1; verificador<=(7-i); verificador++)
                    {
                        if(xadrez[i+verificador][j-verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                else
                {
                    contador=0;
                    for(verificador=1; verificador<=j; verificador++)
                    {
                        if(xadrez[i+verificador][j-verificador]=='R')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
            }
        }
    }

    return 0;
}




int cheque1()
{
    int i, j, verificador, verificador2, contador=0;
    for (i=0; i<=7; i++)
    {
        for (j=0; j<=7; j++)
        {
            if(xadrez[i][j]=='T')
            {
                contador = 0;
                for(verificador=1; verificador<=i; verificador++)
                {
                    if(xadrez[i-verificador][j]=='r')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i-verificador2][j]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
                contador=0;
                for(verificador=1; verificador<=(7-i); verificador++)
                {
                    if(xadrez[i+verificador][j]=='r')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i+verificador2][j]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
                contador=0;
                for(verificador=1; verificador<=j; verificador++)
                {
                    if(xadrez[i][j-verificador]=='r')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i][j-verificador2]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
                contador=0;
                for(verificador=1; verificador<=(7-j); verificador++)
                {
                    if(xadrez[i][j+verificador]=='r')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i][j-verificador2]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
            }
            if(xadrez[i][j]=='C')
            {
                if((xadrez[i+2][j+1]=='r')||(xadrez[i+2][j-1]=='r')||(xadrez[i-2][j+1]=='r')||(xadrez[i+1][j+2]=='r')||(xadrez[i+1][j-2]=='r')||(xadrez[i-1][j+2]=='r')||(xadrez[i-1][j-2]=='r')||(xadrez[i-2][j-1]=='r'))
                {
                    return 1;
                }
            }
            if(xadrez[i][j]=='P')
            {
                if((xadrez[i+1][j-1]=='r')||(xadrez[i+1][j+1]=='r'))
                {
                    return 1;
                }
            }
            if(xadrez[i][j]=='B')
            {
                if(i>j)
                {
                    contador=0;
                    for(verificador=1; verificador<=j; verificador++)
                    {
                        if(xadrez[i-verificador][j-verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                    contador=0;
                    for(verificador=1; verificador<=(7-i); verificador++)
                    {
                        if(xadrez[i+verificador][j+verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                else
                {
                    contador = 0;
                    for(verificador=1; verificador<=i; verificador++)
                    {
                        if(xadrez[i-verificador][j-verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                    contador=0;
                    for(verificador=1; verificador<=(7-j); verificador++)
                    {
                        if(xadrez[i+verificador][j+verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                if((7-j)>i)
                {
                    contador=0;
                    for(verificador=1; verificador<=i; verificador++)
                    {
                        if(xadrez[i-verificador][j+verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                else
                {
                    contador=0;
                    for(verificador=1; verificador<=(7-j); verificador++)
                    {
                        if(xadrez[i-verificador][j+verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                if((7-i)>j)
                {
                    contador=0;
                    for(verificador=1; verificador<=(7-i); verificador++)
                    {
                        if(xadrez[i+verificador][j-verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                else
                {
                    contador=0;
                    for(verificador=1; verificador<=j; verificador++)
                    {
                        if(xadrez[i+verificador][j-verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
            }
            if(xadrez[i][j]=='D')
            {
                contador=0;
                for(verificador=1; verificador<=i; verificador++)
                {
                    if(xadrez[i-verificador][j]=='r')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i-verificador2][j]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
                contador=0;
                for(verificador=1; verificador<=(7-i); verificador++)
                {
                    if(xadrez[i+verificador][j]=='r')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i+verificador2][j]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
                contador=0;
                for(verificador=1; verificador<=j; verificador++)
                {
                    if(xadrez[i][j-verificador]=='r')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i][j-verificador2]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
                contador=0;
                for(verificador=1; verificador<=(7-j); verificador++)
                {
                    if(xadrez[i][j+verificador]=='r')
                    {
                        for(verificador2=1; verificador2<verificador; verificador2++)
                        {
                            if(xadrez[i][j-verificador2]!=' ')
                            {
                                contador++;
                            }
                        }
                        if(contador==0)
                        {
                            return 1;
                        }
                    }
                }
                if(i>j)
                {
                    contador=0;
                    for(verificador=1; verificador<=j; verificador++)
                    {
                        if(xadrez[i-verificador][j-verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                    contador=0;
                    for(verificador=1; verificador<=(7-i); verificador++)
                    {
                        if(xadrez[i+verificador][j+verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                else
                {
                    contador = 0;
                    for(verificador=1; verificador<=i; verificador++)
                    {
                        if(xadrez[i-verificador][j-verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                    contador=0;
                    for(verificador=1; verificador<=(7-j); verificador++)
                    {
                        if(xadrez[i+verificador][j+verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                if((7-j)>i)
                {
                    contador=0;
                    for(verificador=1; verificador<=i; verificador++)
                    {
                        if(xadrez[i-verificador][j+verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                else
                {
                    contador=0;
                    for(verificador=1; verificador<=(7-j); verificador++)
                    {
                        if(xadrez[i-verificador][j+verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i-verificador2][j+verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                if((7-i)>j)
                {
                    contador=0;
                    for(verificador=1; verificador<=(7-i); verificador++)
                    {
                        if(xadrez[i+verificador][j-verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
                else
                {
                    contador=0;
                    for(verificador=1; verificador<=j; verificador++)
                    {
                        if(xadrez[i+verificador][j-verificador]=='r')
                        {
                            for(verificador2=1; verificador2<verificador; verificador2++)
                            {
                                if(xadrez[i+verificador2][j-verificador2]!=' ')
                                {
                                    contador++;
                                }
                            }
                            if(contador==0)
                            {
                                return 1;
                            }
                        }
                    }
                }
            }
        }
    }

    return 0;
}
  /*
xequemate(int cheque, int CHEQUE)
{
    int i, j;
    for (i = 0; i <= 7; i++)
    {
        for (j = 0; j<=7; j++)
        {
            if((xadrez[i][j]=='r')&&(cheque==1))
            {
               if((movimentoBranco2(i, i+1,j,j, CHEQUE, cheque)==0)&&(movimentoBranco2(i, i-1,j,j, CHEQUE, cheque)==0)&&(movimentoBranco2(i, i,j,j+1, CHEQUE, cheque)==0)&&(movimentoBranco2(i, i,j,j-1, CHEQUE, cheque)==0)&&(movimentoBranco2(i, i+1,j,j+1, CHEQUE, cheque)==0)&&(movimentoBranco2(i, i+1,j,j-1, CHEQUE, cheque)==0)&&(movimentoBranco2(i, i-1,j,j+1, CHEQUE, cheque)==0)&&(movimentoBranco2(i, i-1,j,j-1, CHEQUE, cheque)==0))
               {
                 return 1;
               }
            }
            if((xadrez[i][j]=='R')&&(CHEQUE==1))
            {
                if((movimentoPreto2(i, i+1,j,j, CHEQUE, cheque)==0)&&(movimentoPreto2(i, i-1,j,j, CHEQUE, cheque)==0)&&(movimentoPreto2(i, i,j,j+1, CHEQUE, cheque)==0)&&(movimentoPreto2(i, i,j,j-1, CHEQUE, cheque)==0)&&(movimentoPreto2(i, i+1,j,j+1, CHEQUE, cheque)==0)&&(movimentoPreto2(i, i+1,j,j-1, CHEQUE, cheque)==0)&&(movimentoPreto2(i, i-1,j,j+1, CHEQUE, cheque)==0)&&(movimentoPreto2(i, i-1,j,j-1, CHEQUE, cheque)==0))
                {
                    return 2;
                }
            }
        }

    }
    return 0;
}

int movimentoBranco2(int Xo,int Xd,int Yo, int Yd, int CHEQUE, int cheque)
{
    //Xo = Linha origem, Xd = Linha destino, Yo = Coluna origem, Yd = Coluna destino.
    int mover = 0;
    char peca;
    char auxiliar;
    int vertical, horizontal;
    int verificador, contador=0;
    vertical = abs(Xd - Xo);
    horizontal = abs(Yd - Yo);
    peca = xadrez[Xo][Yo];


    if((Xo>=0&&Xo<8)&&(Xd>=0&&Xd<8)&&(Yo>=0&&Yo<8)&&(Yd>=0&&Yd<8))
    {
        if((xadrez[Xd][Yd]=='t')||(xadrez[Xd][Yd]=='c')||(xadrez[Xd][Yd]=='b')||(xadrez[Xd][Yd]=='d')||(xadrez[Xd][Yd]=='r')||(xadrez[Xd][Yd]=='p'))
        {
                    return 0;
        }
        else
        {
            if(peca=='r')
            {
                if((vertical >= 0 && vertical <= 1) && (horizontal >= 0 && horizontal <= 1))
                {
                    mover = 1;
                    contareibranco++;
                }
                if((contareibranco==0)&&(contatorre1branco==0)&&(xadrez[7][5]==' ')&&(xadrez[7][6]==' ')&&((Yd-Yo)==2)&&(vertical==0)&&(cheque==0))
                {
                    mover = 2;
                    contareibranco++;
                    contatorre1branco++;
                }
                if((contareibranco==0)&&(contatorre2branco==0)&&(xadrez[7][3]==' ')&&(xadrez[7][2]==' ')&&(xadrez[7][1]==' ')&&((Yd-Yo)==-2)&&(vertical==0)&&(cheque==0))
                {
                    mover = 3;
                    contareibranco++;
                    contatorre2branco++;
                }
            }

            if(contador == 0)
            {
                if(mover==1)
                {
                    auxiliar = xadrez[Xd][Yd];
                    xadrez[Xd][Yd] = xadrez[Xo][Yo];
                    xadrez[Xo][Yo] = ' ';
                    if(cheque1()==1)
                    {
                         xadrez[Xo][Yo] = xadrez[Xd][Yd];
                         xadrez[Xd][Yd] = auxiliar;
                         mover = 0;
                    }
                    else
                    {
                      xadrez[Xo][Yo] = xadrez[Xd][Yd];
                      xadrez[Xd][Yd] = auxiliar;
                      return 1;
                    }
                }
                if(mover==0)
                {
                    return 0;
                }
                if(mover==2)
                {
                    xadrez[Xd][Yd] = xadrez[Xo][Yo];
                    xadrez[Xo][Yo] = ' ';
                    xadrez[7][7] = ' ';
                    xadrez[7][5] = 't';
                    return 1;
                }
                if(mover==3)
                {
                    xadrez[Xd][Yd] = xadrez[Xo][Yo];
                    xadrez[Xo][Yo] = ' ';
                    xadrez[7][0] = ' ';
                    xadrez[7][3] = 't';
                    return 1;
                }

            }
            else
            {
                return 0;
            }
        }
    }

    else
    {
        return 0;
    }
}

int movimentoPreto2(int Xo,int Xd,int Yo, int Yd, int CHEQUE, int cheque)
{
    //Xo = Linha origem, Xd = Linha destino, Yo = Coluna origem, Yd = Coluna destino.
    int mover = 0;
    char peca;
    char auxiliar;
    int vertical, horizontal;
    int verificador, contador=0;
    vertical = abs(Xd - Xo);
    horizontal = abs(Yd - Yo);
    peca = xadrez[Xo][Yo];


    if((Xo>=0&&Xo<8)&&(Xd>=0&&Xd<8)&&(Yo>=0&&Yo<8)&&(Yd>=0&&Yd<8))
    {
        if((xadrez[Xd][Yd]=='T')||(xadrez[Xd][Yd]=='C')||(xadrez[Xd][Yd]=='B')||(xadrez[Xd][Yd]=='D')||(xadrez[Xd][Yd]=='R')||(xadrez[Xd][Yd]=='P'))
        {
                    return 0;
        }
        else
        {
            if(peca=='R')
            {
                if((vertical >= 0 && vertical <= 1) && (horizontal >= 0 && horizontal <= 1))
                {
                    mover = 1;
                    contareipreto++;
                }
                if((contareibranco==0)&&(contatorre1branco==0)&&(xadrez[7][5]==' ')&&(xadrez[7][6]==' ')&&((Yd-Yo)==2)&&(vertical==0)&&(cheque==0))
                {
                    mover = 2;
                    contareipreto++;
                    contatorre1preto++;
                }
                if((contareibranco==0)&&(contatorre2branco==0)&&(xadrez[7][3]==' ')&&(xadrez[7][2]==' ')&&(xadrez[7][1]==' ')&&((Yd-Yo)==-2)&&(vertical==0)&&(cheque==0))
                {
                    mover = 3;
                    contareipreto++;
                    contatorre2preto++;
                }
            }

            if(contador == 0)
            {
                if(mover==1)
                {
                    auxiliar = xadrez[Xd][Yd];
                    xadrez[Xd][Yd] = xadrez[Xo][Yo];
                    xadrez[Xo][Yo] = ' ';
                    if(cheque1()==1)
                    {
                         xadrez[Xo][Yo] = xadrez[Xd][Yd];
                         xadrez[Xd][Yd] = auxiliar;
                         mover = 0;
                    }
                    else
                    {
                      xadrez[Xo][Yo] = xadrez[Xd][Yd];
                      xadrez[Xd][Yd] = auxiliar;
                      return 1;
                    }
                }
                if(mover==0)
                {
                    return 0;
                }
                if(mover==2)
                {
                    xadrez[Xd][Yd] = xadrez[Xo][Yo];
                    xadrez[Xo][Yo] = ' ';
                    xadrez[0][7] = ' ';
                    xadrez[0][5] = 'T';
                    return 1;
                }
                if(mover==3)
                {
                    xadrez[Xd][Yd] = xadrez[Xo][Yo];
                    xadrez[Xo][Yo] = ' ';
                    xadrez[0][0] = ' ';
                    xadrez[0][3] = 'T';
                    return 1;
                }

            }
            else
            {
                return 0;
            }
        }
    }

    else
    {
        return 0;
    }
} */

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Supondo que você saiba usar sockets, enviar dados, receber dados e manipula-los.

Eu acredito que exista duas formas de implementar: 

uma seria com servidor onde dois clientes se conectam nele, onde ele envia, calcula, etc;

outra forma seria onde um cliente inicia um servidor e lida com os dados de entrada e saída dos dois clientes.(igual cs);

 

Para lidar com os dados, use hexadecimal, ou alguma forma de dado que seja rápido e simples, e assim manipular os dados que entram e saem, seja os dados da partida, ou os clientes que conectam e desconectam.

Resumindo, você precisa criar funções para os packets, struct's para armazenar as informações, e gerenciar os socket's (iniciar, fazer bind). Aconselho a usar threads, caso use mais de 2 jogadores.

adicionado 1 minuto depois

Parece muita coisa, mas na hora que você começa a implementar, vem muitas ideias, e acaba sendo bem rápido. 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!