2015年1月19日 星期一

[專題] 第十一組

123


#include "function.h"
#include 
#include 

#define Max 20

void Maps(int block[Max][17])
{
    for (int i=0; i<19;i++)
    {
        for (int j=0;j<17;j++)
        {
            if (i%2==0)
            {
                if (j%2!=0)
                {
                    block[i][j]=1;//1等於"-"
                }
                else
                {
                    block[i][j]=0;//0等於"口"
                }
            }
            else
            {
                if (j%2==0)
                {
                    block[i][j]=2;//2等於"|"
                }
                else
                {
                    block[i][j]=-1;//-1等於“空格”
                }
            }
        }
    }
    for ( int i=5 ; i<15 ; i+=2 )
    {
        for (int j=7 ; j<11 ; j+=2)
        {
            block[i][j]=-2;
        }
    }
    for (int i=2; i<16 ;i+=2)
    {
        block[9][i]=-2;
    }
    block[1][7]=3;   //3等於"\"
    block[1][9]=4;  //4等於"/"
    block[17][7]=4;
    block[17][9]=3;
    block[3][9]=3;
    block[3][7]=4;
    block[15][9]=4;
    block[15][7]=3;
    block[9][7]=-4;
    block[9][9]=-3;
    block[11][7]=-3;
    block[11][9]=-3;
    block[5][7]=-3;
    block[5][9]=-3;
    block[7][7]=-3;
    block[7][9]=-3;
}

void start()
{
    printf("                                                                 \n");
    printf("                                                                 \n");
    printf("                        /____                                    \n");
    printf("                       /    /               |  ___|_____|___       \n");
    printf("                    _______/_____           |     |     |          \n");
    printf("                   |      |      |        __|___  |_____|          \n");
    printf("                   |______|______|         /|\\    |     |         \n");
    printf("                      /_______            / | \\   |     |         \n");
    printf("                     /     /  \\ /        |  |  |  |_____|         \n");
    printf("                          /   |/         |  |  |  |     |          \n");
    printf("                         /   /|\\         |  |  |__|_____|___       \n");
    printf("                            / | \\        |  |  |                  \n");
    printf("                           /  |  \\          |     /     \\         \n");
    printf("                         \\___/              |    /       \\        \n");
    printf("\n\n\n\n\n");
    printf("                                  (1)Start                          \n");
    printf("                                  (0)Exit                           \n");

}

void Print(int block[Max][17],int option)
{
    if (option==0)
    {
  char ch='A';
  printf("                     1    2    3    4    5    6    7    8    9\n\n");
  for (int i=0; i<19 ;i++)
  {
   if (i%2==0)
   {
    printf("            %c       ",ch+i/2);
   }
   else
   {
    printf("                    ");
   }
   for (int j=0 ; j<17 ; j++ )
   {
    if (block[i][j]==1)
    {
     printf(" - ");
    }
    else if (block[i][j]==2)
    {
     printf(" | ");
    }
    else if (block[i][j]==3)
    {
     printf("\\ ");
    }
    else if (block[i][j]==4)
    {
     printf("/ ");
    }
    else if (block[i][j]==5)
    {
     printf("帥");
    }
    else if (block[i][j]==6)
    {
     printf("仕");
    }
    else if (block[i][j]==7)
    {
     printf("相");
    }
    else if (block[i][j]==8)
    {
     printf("車");
    }
    else if (block[i][j]==9)
    {
     printf("傌");
    }
    else if (block[i][j]==10)
    {
     printf("炮");
    }
    else if (block[i][j]==11)
    {
     printf("兵");
    }
    else if (block[i][j]==12)
    {
     printf("將");
    }
    else if (block[i][j]==13)
    {
     printf("士");
    }
    else if (block[i][j]==14)
    {
     printf("象");
    }
    else if (block[i][j]==15)
    {
     printf("車");
    }
    else if (block[i][j]==16)
    {
     printf("馬");
    }
    else if (block[i][j]==17)
    {
     printf("包");
    }
    else if (block[i][j]==18)
    {
     printf("卒");
    }
    else if (block[i][j]==0)
    {
     printf("口");
    }
    else if (block[i][j]==-2)
    {
     printf("  ");
    }
    else if (block[i][j]==-4)
    {
     printf("         ");
    }
    else
    {
     printf("  ");
    }
   }
   printf("\n");
  }
    }
    else
    {
            if (option==5)
            {
                printf("帥");
            }
            else if (option==6)
            {
                printf("仕");
            }
            else if (option==7)
            {
                printf("相");
            }
            else if (option==8)
            {
                printf("車");
            }
            else if (option==9)
            {
                printf("傌");
            }
            else if (option==10)
            {
                printf("炮");
            }
            else if (option==11)
            {
                printf("兵");
            }
            else if (option==12)
            {
                printf("將");
            }
            else if (option==13)
            {
                printf("士");
            }
            else if (option==14)
            {
                printf("象");
            }
            else if (option==15)
            {
                printf("車");
            }
            else if (option==16)
            {
                printf("馬");
            }
            else if (option==17)
            {
                printf("包");
            }
            else
            {
                printf("卒");
            }
    }
}

void Chess(int chess[Max][16])
{
    chess[0][0]=5;//帥
    chess[1][0]=12;//將
    for (int i=1;i<3;i++)
    {
        chess[0][i]=6;//仕
    }
    for (int i=3;i<5;i++)
    {
        chess[0][i]=7;//相
    }
    for (int i=5;i<7;i++)
    {
        chess[0][i]=8;//俥
    }
    for (int i=7;i<9;i++)
    {
        chess[0][i]=9;//傌
    }
    for (int i=9;i<11;i++)
    {
        chess[0][i]=10;//炮
    }
    for (int i=11;i<16;i++)
    {
        chess[0][i]=11;//兵
    }
    for (int i=1;i<3;i++)
    {
        chess[1][i]=13;//士
    }
    for (int i=3;i<5;i++)
    {
        chess[1][i]=14;//象
    }
    for (int i=5;i<7;i++)
    {
        chess[1][i]=15;//車
    }
    for (int i=7;i<9;i++)
    {
        chess[1][i]=16;//馬
    }
    for (int i=9;i<11;i++)
    {
        chess[1][i]=17;//包
    }
    for (int i=11;i<16;i++)
    {
        chess[1][6]=18;//卒
    }
}

void FirstMove(int block[Max][17])
{
    block[0][0]=15;
    block[0][2]=16;
    block[0][4]=14;
    block[0][6]=13;
    block[0][8]=12;
    block[0][10]=13;
    block[0][12]=14;
    block[0][14]=16;
    block[0][16]=15;
    block[4][2]=17;
    block[4][14]=17;
    block[6][0]=18;
    block[6][4]=18;
    block[6][8]=18;
    block[6][12]=18;
    block[6][16]=18;
    block[12][0]=11;
    block[12][4]=11;
    block[12][8]=11;
    block[12][12]=11;
    block[12][16]=11;
    block[14][2]=10;
    block[14][14]=10;
    block[18][0]=8;
    block[18][2]=9;
    block[18][4]=7;
    block[18][6]=6;
    block[18][8]=5;
    block[18][10]=6;
    block[18][12]=7;
    block[18][14]=9;
    block[18][16]=8;
}

void DieChess(int chess[Max][16],int side,int num)
{
    int count=0;
    for ( int i=0 ; i<16 && count!=1 ; i++ )
    {
        if (chess[side][i]==num)
        {
            chess[side][i]=0;
        }
        count+=1;
    }
}

bool Move(int num,int row1,int col1,int row2,int col2,int block [Max][17])
{
    if (num==5)
    {
        int count=0;

        if (row2<14 || row2>18 || col2<6 || col2>10)
        {
            int i=0;
            if (col1==col2)
            {
                for ( i=row1-2 ; i>=row2 && count!=1 ; i-=2 )
                {
                    if (block[i][col2]!=0)
                    {
                        count+=1;
                    }
                }
                if (count==1)
                {
                    if (block[i+2][col2]==12)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
        else
        {
            if (row1-row2==2 || row1-row2==-2)
            {
                if (col1-col2==0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else if (row1-row2==0)
            {
                if (col1-col2==2 || col1-col2==-2)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }

    }
    else if (num==6)
    {
        if (row2<14 || row2>18 || col2<6 || col2>10)
        {
            return false;
        }
        else if (row1-row2==2 || row1-row2==-2)
        {
            if (col1-col2==2 || col1-col2==-2)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
    else if (num==7)
    {
        if (row2<10 || row2>18 || col2<0 || col2>16)
        {
            return false;
        }
        else if (row1-row2==4 || row1-row2==-4)
        {
            if (col1-col2==4 || col1-col2==-4)
            {
                if (block[(row1-row2)/2+row2][(col1-col2)/2+col2]!=0)
                {
                    printf("卡象腳!!!\n");
                    return false;
                }
                else
                {
                    return true;
                }
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
    else if (num==8)
    {
        int count=0;
        if (row2<0 || row2>18 || col2<0 || col2>16)
        {
            return false;
        }
        else if (row1-row2!=0)
        {
            if (col1-col2!=0)
            {
                return false;
            }
            else
            {
                if (row1-row2>0)
                {
                    for ( int i=row1-2 ; i>=row2 ; i-=2 )
                    {
                        if (block[i][col2]!=0)
                        {
                            count+=1;
                        }
                    }
                }
                else
                {
                    for ( int i=row1+2 ; i<=row2 ; i+=2 )
                    {
                        if (block[i][col1]!=0)
                        {
                            count+=1;
                        }
                    }
                }
                if (count==0)
                {
                    return true;
                }
                else if (count==1)
                {
                    if (block[row2][col2]!=0)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
        }
        else if (col1-col2!=0)
        {
            if (row1-row2!=0)
            {
                return false;
            }
            else
            {
                if (col1-col2>0)
                {
                    for ( int i=col1-2 ; i>=col2 ; i-=2 )
                    {
                        if (block[row2][i]!=0)
                        {
                            count+=1;
                        }
                    }
                }
                else
                {
                    for ( int i=col1+2 ; i<=col2 ; i+=2 )
                    {
                        if (block[row1][i]!=0)
                        {
                            count+=1;
                        }
                    }
                }
                if (count==0)
                {
                    return true;
                }
                else if (count==1)
                {
                    if (block[row2][col2]!=0)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
        }
        else
        {
            return false;
        }
    }
    else if (num==9)
    {
        if (row2<0 || row2>18 || col2<0 || col2>16)
        {
            return false;
        }
        else
        {
            if (row1-row2==2 && col1-col2==4)
            {
                if (block[row2][col2]>11 || block[row2][col2]<5)
                {
                    if (block[row1][col1-2]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
            else if (row1-row2==2 && col1-col2==-4)
            {
                if (block[row2][col2]>11 || block[row2][col2]<5)
                {
                    if (block[row1][col1+2]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
            else if (row1-row2==-2 && col1-col2==4)
            {
                if (block[row2][col2]>11 || block[row2][col2]<5)
                {
                    if (block[row1][col1-2]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
            else if (row1-row2==-2 && col1-col2==-4)
            {
                if (block[row2][col2]>11 || block[row2][col2]<5)
                {
                    if (block[row1][col1+2]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
            else if (row1-row2==4 && col1-col2==2)
            {
                if (block[row2][col2]>11 || block[row2][col2]<5)
                {
                    if (block[row1-2][col1]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
            else if (row1-row2==4 && col1-col2==-2)
            {
                if (block[row2][col2]>11 || block[row2][col2]<5)
                {
                    if (block[row1-2][col1]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    //printf("2");
                    return false;
                }
            }
            else if (row1-row2==-4 && col1-col2==2)
            {
                if (block[row2][col2]>11 || block[row2][col2]<5)
                {
                    if (block[row1+2][col1]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
            else if (row1-row2==-4 && col1-col2==-2)
            {
                if (block[row2][col2]>11 || block[row2][col2]<5)
                {
                    if (block[row1+2][col1]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
    }
    else if (num==10)
    {
        int count=0;
        if (row2<0 || row2>18 || col2<0 || col2>16)
        {
            return false;
        }
        else
        {
            if (row1-row2!=0)
            {
                if (col1-col2==0)
                {
                    if (row1>row2)
                    {
                        for ( int i=row1-2 ; i>=row2 ; i-=2 )
                        {
                            if (block[i][col2]!=0)
                            {
                                count+=1;
                            }
                        }
                    }
                    else
                    {
                        for ( int i=row1+2 ; i<=row2 ; i+=2 )
                        {
                            if (block[i][col2]!=0)
                            {
                                count+=1;
                            }
                        }
                    }
                    if (count==0)
                    {
                        return true;
                    }
                    else if (count==2)
                    {
                        if (block[row2][col2]>11 || block[row2][col2]<5)
                        {
                            if (block[row2][col2]!=0)
                            {
                                return true;
                            }
                            else
                            {
                                return false;
                            }
                        }
                        else
                        {
                            return false;
                        }
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
            else
            {
                if (col1-col2!=0)
                {
                    if (col1>col2)
                    {
                        for ( int i=col1-2 ; i>=col2 ; i-=2 )
                        {
                            if (block[row2][i]!=0)
                            {
                                count+=1;
                            }
                        }
                    }
                    else
                    {
                        for ( int i=col1+2 ; i<=col2 ; i+=2 )
                        {
                            if (block[row2][i]!=0)
                            {
                                count+=1;
                            }
                        }
                    }
                    if (count==0)
                    {
                        return true;
                    }
                    else if (count==2)
                    {
                        if (block[row2][col2]>11 || block[row2][col2]<5)
                        {
                            if (block[row2][col2]!=0)
                            {
                                return true;
                            }
                            else
                            {
                                return false;
                            }
                        }
                        else
                        {
                            return false;
                        }
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
        }
    }
    else if (num==11)
    {
        if (row2<0 || row2>18 || col2<0 || col2>16)
        {
            return false;
        }
        else if (row1>=10)
        {
            if (col1-col2==0 && row1-row2==2)
            {
                if (block[row2][col2]>11 || block[row2][col2]==0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
        else
        {
            if (row1-row2==0)
            {
                if (col1-col2==2 || col1-col2==-2)
                {
                    if (block[row2][col2]>11 || block[row2][col2]==0)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
            else if (col1-col2==0)
            {
                if (row1-row2==2)
                {
                    if (block[row2][col2]>11 || block[row2][col2]==0)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
    }
    else if (num==12)
    {
        int count=0;

        if (row2<0 || row2>4 || col2<6 || col2>10)
        {
            int i=0;
            if (col1==col2)
            {
                for ( i=row1+2 ; i<=row2 && count!=1 ; i+=2 )
                {
                    if (block[i][col2]!=0)
                    {
                        count+=1;
                    }
                }
                if (count==1)
                {
                    if (block[i-2][col2]==5)
                    {
                        //printf("1");
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
        else
        {
            if (row1-row2==2 || row1-row2==-2)
            {
                if (col1-col2==0)
                {
                    //printf("2");
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else if (row1-row2==0)
            {
                if (col1-col2==2 || col1-col2==-2)
                {
                    //printf("3");
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
    }
    else if (num==13)
    {
        if (row2<0 || row2>4 || col2<6 || col2>10)
        {
            return false;
        }
        else if (row1-row2==2 || row1-row2==-2)
        {
            if (col1-col2==2 || col1-col2==-2)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
    else if (num==14)
    {
        if (row2<0 || row2>8 || col2<0 || col2>16)
        {
            return false;
        }
        else if (row1-row2==4 || row1-row2==-4)
        {
            if (col1-col2==4 || col1-col2==-4)
            {
                if (block[(row1-row2)/2+row2][(col1-col2)/2+col2]!=0)
                {
                    printf("卡象腳!!!\n");
                    return false;
                }
                else
                {
                    return true;
                }
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
    else if (num==15)
    {
        int count=0;
        if (row2<0 || row2>18 || col2<0 || col2>16)
        {
            return false;
        }
        else if (row1-row2!=0)
        {
            if (col1-col2!=0)
            {
                return false;
            }
            else
            {
                if (row1-row2>0)
                {
                    for ( int i=row1-2 ; i>=row2 ; i-=2 )
                    {
                        if (block[i][col2]!=0)
                        {
                            count+=1;
                        }
                    }
                }
                else
                {
                    for ( int i=row1+2 ; i<=row2 ; i+=2 )
                    {
                        if (block[i][col1]!=0)
                        {
                            count+=1;
                        }
                    }
                }
                if (count==0)
                {
                    return true;
                }
                else if (count==1)
                {
                    if (block[row2][col2]!=0)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
        }
        else if (col1-col2!=0)
        {
            if (row1-row2!=0)
            {
                return false;
            }
            else
            {
                if (col1-col2>0)
                {
                    for ( int i=col1-2 ; i>=col2 ; i-=2 )
                    {
                        if (block[row2][i]!=0)
                        {
                            count+=1;
                        }
                    }
                }
                else
                {
                    for ( int i=col1+2 ; i<=col2 ; i+=2 )
                    {
                        if (block[row1][i]!=0)
                        {
                            count+=1;
                        }
                    }
                }
                if (count==0)
                {
                    return true;
                }
                else if (count==1)
                {
                    if (block[row2][col2]!=0)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
        }
        else
        {
            return false;
        }
    }
    else if (num==16)
    {
        if (row2<0 || row2>18 || col2<0 || col2>16)
        {
            return false;
        }
        else
        {
            if (row1-row2==2 && col1-col2==4)
            {
                if ((block[row2][col2]<=11 && block[row2][col2]>=5) || block[row2][col2]==0)
                {
                    if (block[row1][col1-2]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
            else if (row1-row2==2 && col1-col2==-4)
            {
                if ((block[row2][col2]<=11 && block[row2][col2]>=5) || block[row2][col2]==0)
                {
                    if (block[row1][col1+2]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
            else if (row1-row2==-2 && col1-col2==4)
            {
                if ((block[row2][col2]<=11 && block[row2][col2]>=5) || block[row2][col2]==0)
                {
                    if (block[row1][col1-2]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
            else if (row1-row2==-2 && col1-col2==-4)
            {
                if ((block[row2][col2]<=11 && block[row2][col2]>=5) || block[row2][col2]==0)
                {
                    if (block[row1][col1+2]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
            else if (row1-row2==4 && col1-col2==2)
            {
                if ((block[row2][col2]<=11 && block[row2][col2]>=5) || block[row2][col2]==0)
                {
                    if (block[row1-2][col1]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
            else if (row1-row2==4 && col1-col2==-2)
            {
                if ((block[row2][col2]<=11 && block[row2][col2]>=5) || block[row2][col2]==0)
                {
                    if (block[row1-2][col1]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    //printf("2");
                    return false;
                }
            }
            else if (row1-row2==-4 && col1-col2==2)
            {
                if ((block[row2][col2]<=11 && block[row2][col2]>=5) || block[row2][col2]==0)
                {
                    if (block[row1+2][col1]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
            else if (row1-row2==-4 && col1-col2==-2)
            {
                if ((block[row2][col2]<=11 && block[row2][col2]>=5) || block[row2][col2]==0)
                {
                    if (block[row1+2][col1]!=0)
                    {
                        printf("卡馬腳!!!\n");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
    }
    else if (num==17)
    {
        int count=0;
        if (row2<0 || row2>18 || col2<0 || col2>16)
        {
            return false;
        }
        else
        {
            if (row1-row2!=0)
            {
                if (col1-col2==0)
                {
                    if (row1>row2)
                    {
                        for ( int i=row1-2 ; i>=row2 ; i-=2 )
                        {
                            if (block[i][col2]!=0)
                            {
                                count+=1;
                            }
                        }
                    }
                    else
                    {
                        for ( int i=row1+2 ; i<=row2 ; i+=2 )
                        {
                            if (block[i][col2]!=0)
                            {
                                count+=1;
                            }
                        }
                    }
                    if (count==0)
                    {
                        return true;
                    }
                    else if (count==2)
                    {
                        if ((block[row2][col2]<=11 && block[row2][col2]>=5) || block[row2][col2]==0)
                        {
                            if (block[row2][col2]!=0)
                            {
                                return true;
                            }
                            else
                            {
                                //printf("1");
                                return false;
                            }
                        }
                        else
                        {
                            //printf("2");
                            return false;
                        }
                    }
                    else
                    {
                        //printf("3");
                        return false;
                    }
                }
                else
                {
                    //printf("4");
                    return false;
                }
            }
            else
            {
                if (col1-col2!=0)
                {
                    if (col1>col2)
                    {
                        for ( int i=col1-2 ; i>=col2 ; i-=2 )
                        {
                            if (block[row2][i]!=0)
                            {
                                count+=1;
                            }
                        }
                    }
                    else
                    {
                        for ( int i=col1+2 ; i<=col2 ; i+=2 )
                        {
                            if (block[row2][i]!=0)
                            {
                                count+=1;
                            }
                        }
                    }
                    if (count==0)
                    {
                        return true;
                    }
                    else if (count==2)
                    {
                        if ((block[row2][col2]<=11 && block[row2][col2]>=5) || block[row2][col2]==0)
                        {
                            if (block[row2][col2]!=0)
                            {
                                return true;
                            }
                            else
                            {
                                return false;
                            }
                        }
                        else
                        {
                            return false;
                        }
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
        }
    }
    else if (num==18)
    {
        if (row2<0 || row2>18 || col2<0 || col2>16)
        {
            return false;
        }
        else if (row1<=8)
        {
            if (col1-col2==0 && row1-row2==-2)
            {
                if ((block[row2][col2]<=11 &&  block[row2][col2]>=5)|| block[row2][col2]==0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
        else
        {
            if (row1-row2==0)
            {
                if (col1-col2==2 || col1-col2==-2)
                {
                    if ((block[row2][col2]<=11 &&  block[row2][col2]>=5)|| block[row2][col2]==0)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
            else if (col1-col2==0)
            {
                if (row1-row2==-2)
                {
                    if ((block[row2][col2]<=11 &&  block[row2][col2]>=5)|| block[row2][col2]==0)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
    }
    else
    {
        return false;
    }
}


#include 
#include 
#include 

#include "function.h"

int main()
{
    int block[19][17],option=2,Error_Time=0,chess[2][16];
    char xx;
    while(option!=0)
    {
        start();
        printf("請選擇......>");
        scanf_s("%d", &option);
        xx=getchar();
        switch (option)
        {
            case 1:
            {
                int count=0,low=10,col=9;
                system("cls");
                Maps(block);
                if (count==0)
                {
                    Chess(chess);
                    FirstMove(block);
                }
                while (chess[0][0]!=0 && chess[1][0]!=0)
                {
                    system ("cls");
                    Print(block,0);
                    int time=1;
                    do
                    {
                        int num=0,time1=1,num1;
                        char input='a',x,input1='a';
                        if (count%2==0)
                        {
                            printf("請Player 1選擇要操作的棋子(先輸入大寫的英文,再輸入數字,例如:A1)...>");
                            int num3;
                            while (input1=='\n' || input1-'A'<0 || input1-'Z'>0)
                            {
                                input1=getchar();
                                if (input1!='\n' && input1-'A'>=0 && input1-'Z'<=0)
                                {
                                    scanf_s("%d",&num3);
                                    x=getchar();
                                }
                            }
                            num1=block[(input1-'A')*2][num3*2-2];
                            //printf("%d %c %d\n", block[(input1-'A')*2][num3*2-2],input1,num3);
                            if (num1>=5 && num1<=11 && num3>=1 && num3<=9 && (input1-'A')>=0 && (input1-'A')<=9)
                            {
                                time-=1;
                                while (time1!=0)
                                {
                                    printf("您的");
                                    Print(block,num1);
                                    printf("要移到哪裡?(先輸入大寫的英文,再輸入數字,例如:A1)...>");
                                    while (input=='\n' || input-'A'<0 || input-'Z'>0)
                                    {
                                        input=getchar();
                                        if (input!='\n' || input-'A'>=0 && input-'Z'<=0)
                                        {
                                            scanf_s("%d",&num);
                                            x=getchar();
                                        }
                                    }
                                    int num2=block[(input-'A')*2][num*2-2];
                                    //printf(" %d %d %d %d %d %s\n", num1,(input1-'A')*2,num3*2-2,(input-'A')*2,num*2-2,input);
                                    if (Move(num1,(input1-'A')*2,num3*2-2,(input-'A')*2,num*2-2,block))
                                    {
                                        if ((num2>=12 && num2<=18)  || num2==0)
                                        {
                                            DieChess(chess, 1, num2);
                                            block[(input-'A')*2][num*2-2]=num1;
                                            block[(input1-'A')*2][num3*2-2]=0;
                                            time1-=1;
                                        }
                                        else
                                        {
                                            printf("別吃自己人啊!!!\n");
                                            system("pause");
                                            system ("cls");
                                            Print(block,0);
                                        }
                                    }
                                    
                                    else
                                    {
                                        //printf("1");
                                        printf("錯誤棋步!\n");
                                        system("pause");
                                        system ("cls");
                                        Print(block,0);
                                    }
                                }
                            }
                            else
                            {
                                printf("這邊沒有你可以動的棋子,請重新選擇!!!(請注意大小寫)\n");
                                system("pause");
                                system ("cls");
                                Print(block,0);
                            }
                        }
                        else
                        {
                            system ("cls");
                            Print(block,0);
                            printf("請Player 2選擇要操作的棋子(先輸入大寫的英文,再輸入數字,例如:A1)...>");
                            int num3;
                            while (input1=='\n' || input1-'A'<0 || input1-'Z'>0)
                            {
                                input1=getchar();
                                if (input1!='\n' && input1-'A'>=0 && input1-'Z'<=0)
                                {
                                    scanf_s("%d",&num3);
                                    x=getchar();
                                }
                            }
                            num1=block[(input1-'A')*2][num3*2-2];
                            if (num1>=12 && num1<=18 && num<=9 && (input1-'A')>=0 && (input1-'A')<=9)
                            {
                                time-=1;
                                while (time1!=0)
                                {
                                    printf("您的");
                                    Print(block,num1);
                                    printf("要移到哪裡?(先輸入大寫的英文,再輸入數字,例如:A1)");
                                    while (input=='\n' || input-'A'<0 || input-'Z'>0)
                                    {
                                        input=getchar();
                                        if (input!='\n' && input-'A'>=0 && input-'Z'<=0)
                                        {
                                            scanf_s("%d",&num);
                                            x=getchar();
                                        }
                                    }
                                    int num2=block[(input-'A')*2][num*2-2];
                                    //printf(" %d %d %d %d %d %s\n", num1,(input1-'A')*2,num3*2-2,(input-'A')*2,num*2-2,input);
                                    if (Move(num1,(input1-'A')*2,num3*2-2,(input-'A')*2,num*2-2,block))
                                    {

                                        if ((num2>=5 && num2<=11)  || num2==0)
                                        {
                                            DieChess(chess, 1, num2);
                                            block[(input-'A')*2][num*2-2]=num1;
                                            block[(input1-'A')*2][num3*2-2]=0;
                                            time1-=1;
                                        }
                                        else
                                        {
                                            printf("別吃自己人啊!!!\n");
                                            system("pause");
                                            system ("cls");
                                            Print(block,0);
                                        }
                                    }
                                    else if (num2>=12 && num2<=18)
                                    {
                                        printf("別吃自己人啊!!!\n");
                                        system("pause");
                                        system ("cls");
                                        Print(block,0);
                                    }
                                    else
                                    {
                                        //printf("2");
                                        printf("錯誤棋步!\n");
                                        system("pause");
                                        system ("cls");
                                        Print(block,0);
                                    }
                                }
                            }
                            else
                            {
                                printf("這邊沒有你可以動的棋子,請重新選擇!!!(請注意大小寫)\n");
                                system("pause");
                                system ("cls");
                                Print(block,0);
                            }
                        }
                    }
                    while (time!=0);
                    count+=1;
                }
                if (chess[0][0]==0 || chess[1][0]==0)
                {
                    system("cls");
                    Print(block,0);
                    if (chess[1][0]==0)
                    {
                        printf(" Player 1獲勝!!!\n");
                        system("pause");
                    }

                    else
                    {
                        printf(" Player 2獲勝!!!\n");
                        system("pause");
                    }
                    printf("是否要再下一局?(輸入非0值來回到主選單,輸入0來結束)...>");
                    scanf_s("%d", &option);
                    xx=getchar();
                    if (option==0)
                    {
                        system("pause");
                        system("cls");
                        printf("\n\n\n\n\n\n\n\n\n                           下次再來挑戰吧~\n\n\n\n\n\n\n\n\n");
                        exit (0);
                    }
                }

            }
                break;
            case 0:
            {

                system("pause");
                system("cls");
                printf("\n\n\n\n\n\n\n\n\n                           下次再來挑戰吧~\n\n\n\n\n\n\n\n\n");
                exit (0);
            }
                break;
            default:
            {
                Error_Time+=1;
                system("cls");
                printf("\n\n\n\n\n\n\n\n\n                           錯誤代碼,請重新選擇!!!\n\n\n\n\n\n\n\n\n");
                system("pause");
                system("cls");
                if (Error_Time>=5)
                {
                    printf("\n\n\n\n\n\n\n\n\n                           你是來亂的喔= =\n\n\n\n\n\n\n\n\n");
                    system("pause");
                    system("cls");

                    if (Error_Time>=10)
                    {
                        printf("\n\n\n\n\n\n\n\n\n                           純心找碴啊你?滾開!!!\n\n\n\n\n\n\n\n\n");
                        system("pause");
                        system("cls");
                        exit (0);
                    }
                }

            }
                break;

        }

    }

    return 0;
}



沒有留言:

張貼留言