C++国际象棋程序

#include  <iostream>
#include  <cstdlib>
#include  <cmath>
#include  <windows.h>
using namespace std;

int AXIS[8][8]=
{{338,334,322,337,331,322,334,338},
 {336,336,336,336,336,336,336,336},
 {0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},
 {80,80,80,80,80,80,80,80},
 {82,78,66,81,75,66,78,82}};
short Y_AXIS_1,Y_AXIS_2,LOOP_1,LOOP_2,LOOP_3;
char X_AXIS_1,X_AXIS_2;
bool LOOP_4;

void FUNCTION_SWHICH(void)
{
    AXIS[Y_AXIS_2][X_AXIS_2]=AXIS[Y_AXIS_1][X_AXIS_1];
    AXIS[Y_AXIS_1][X_AXIS_1]=0;
}

void FUNCTION_P_WHITE(void)
{
    if(Y_AXIS_1 == 1 && X_AXIS_1 == X_AXIS_2 && AXIS[Y_AXIS_2][X_AXIS_2] == 0)
    {
        if(Y_AXIS_2 == 2 || Y_AXIS_2 == 3)
        {
            FUNCTION_SWHICH();
        }
    }
    else if(X_AXIS_1 == X_AXIS_2 && AXIS[Y_AXIS_2][X_AXIS_2] == 0)
    {
        if(Y_AXIS_2 == Y_AXIS_1)
        {
            FUNCTION_SWHICH();
        }
    }
    else if(X_AXIS_2 == X_AXIS_1 || X_AXIS_2 == X_AXIS_1+1)
    {
        if(AXIS[Y_AXIS_2][X_AXIS_2] != 0)
        {
            if(Y_AXIS_2 == Y_AXIS_1)
            {
                FUNCTION_SWHICH();
            }
        }
    }
}

void FUNCTION_P_BLACK(void)
{
    if(Y_AXIS_1 == 6 && X_AXIS_1 == X_AXIS_2 && AXIS[Y_AXIS_2][X_AXIS_2] == 0)
    {
        if(Y_AXIS_2 == 4 || Y_AXIS_2 == 5)
        {
            FUNCTION_SWHICH();
        }
    }
    else if(X_AXIS_1 == X_AXIS_2 && AXIS[Y_AXIS_2][X_AXIS_2] == 0)
    {
        if(Y_AXIS_2+1 == Y_AXIS_1)
        {
            FUNCTION_SWHICH();
        }
    }
    else if(X_AXIS_2 == X_AXIS_1 || X_AXIS_2 == X_AXIS_1+1)
    {
        if(AXIS[Y_AXIS_2][X_AXIS_2] != 0)
        {
            if(Y_AXIS_2+1 == Y_AXIS_1)
            {
                FUNCTION_SWHICH();
            }
        }
    }
}

void FUNCTION_R(void)
{
    if(X_AXIS_1 == X_AXIS_2)
    {
        if(Y_AXIS_1-Y_AXIS_2 < 0)
        {
            for(LOOP_1=1;LOOP_1 <= Y_AXIS_2-Y_AXIS_1;LOOP_1++)
            {
                if(AXIS[Y_AXIS_1+LOOP_1][X_AXIS_1] == 0)
                {
                    AXIS[Y_AXIS_1+LOOP_1-1][X_AXIS_1]=0;
                    AXIS[Y_AXIS_1+LOOP_1][X_AXIS_2]=338;
                }
                else
                {
                    AXIS[Y_AXIS_1+LOOP_1-1][X_AXIS_1]=0;
                    AXIS[Y_AXIS_1+LOOP_1][X_AXIS_2]=338;
                    break;
                }
            }
        }
        if(Y_AXIS_1-Y_AXIS_2 > 0)
        {
            for(LOOP_1=1;LOOP_1 <= Y_AXIS_1-Y_AXIS_2;LOOP_1++)
            {
                if(AXIS[Y_AXIS_1-LOOP_1][X_AXIS_1] == 0)
                {
                    AXIS[Y_AXIS_1-LOOP_1+1][X_AXIS_1]=0;
                    AXIS[Y_AXIS_1-LOOP_1][X_AXIS_2]=338;
                }
                else
                {
                    AXIS[Y_AXIS_1-LOOP_1+1][X_AXIS_1]=0;
                    AXIS[Y_AXIS_1-LOOP_1][X_AXIS_2]=338;
                    break;
                }
            }
        }
    }
    if(Y_AXIS_1 == Y_AXIS_2)
    {
        if(X_AXIS_1-X_AXIS_2 < 0)
        {
            for(LOOP_1=1;LOOP_1 <= X_AXIS_2-X_AXIS_1;LOOP_1++)
            {
                if(AXIS[Y_AXIS_1][X_AXIS_1+LOOP_1] == 0)
                {
                    AXIS[Y_AXIS_1][X_AXIS_1+LOOP_1-1]=0;
                    AXIS[Y_AXIS_2][X_AXIS_1+LOOP_1]=338;
                }
                else
                {
                    AXIS[Y_AXIS_1][X_AXIS_1+LOOP_1-1]=0;
                    AXIS[Y_AXIS_2][X_AXIS_1+LOOP_1]=338;
                    break;
                }
            }
        }
        if(X_AXIS_1-X_AXIS_2 > 0)
        {
            for(LOOP_1=1;LOOP_1 <= X_AXIS_1-X_AXIS_2;LOOP_1++)
            {
                if(AXIS[Y_AXIS_1][X_AXIS_1-LOOP_1] == 0)
                {
                    AXIS[Y_AXIS_1][X_AXIS_1-LOOP_1+1]=0;
                    AXIS[Y_AXIS_2][X_AXIS_1-LOOP_1]=338;
                }
                else
                {
                    AXIS[Y_AXIS_1][X_AXIS_1-LOOP_1+1]=0;
                    AXIS[Y_AXIS_2][X_AXIS_1-LOOP_1]=338;
                    break;
                }
            }
        }
    }
}

void FUNCTION_N(void)
{
    if(X_AXIS_2 == X_AXIS_1 && Y_AXIS_2 == Y_AXIS_1-2 || X_AXIS_2 == X_AXIS_1+1 && Y_AXIS_2 == Y_AXIS_1-2)
    {
        FUNCTION_SWHICH();
    }
    else if(X_AXIS_2 == X_AXIS_1 && Y_AXIS_2 == Y_AXIS_1+2 || X_AXIS_2 == X_AXIS_1+1 && Y_AXIS_2 == Y_AXIS_1+2)
    {
        FUNCTION_SWHICH();
    }
    else if(Y_AXIS_2 == Y_AXIS_1 && X_AXIS_2 == X_AXIS_1-2 || Y_AXIS_2 == Y_AXIS_1+1 && X_AXIS_2 == X_AXIS_1-2)
    {
        FUNCTION_SWHICH();
    }
    else if(Y_AXIS_2 == Y_AXIS_1 && X_AXIS_2 == X_AXIS_1+2 || Y_AXIS_2 == Y_AXIS_1+1 && X_AXIS_2 == X_AXIS_1+2)
    {
        FUNCTION_SWHICH();
    }
}

void FUNCTION_B(void)
{
    if(Y_AXIS_2-Y_AXIS_1 < 0)
    {
        if(X_AXIS_2-X_AXIS_1 < 0)
        {
            for(LOOP_1=1;LOOP_1 <= sqrt((X_AXIS_1-X_AXIS_2)*(Y_AXIS_1-Y_AXIS_2));LOOP_1++)
            {
                if(AXIS[Y_AXIS_1-LOOP_1][X_AXIS_1-LOOP_1] == 0)
                {
                    AXIS[Y_AXIS_1-LOOP_1+1][X_AXIS_1-LOOP_1+1]=0;
                    AXIS[Y_AXIS_1-LOOP_1][X_AXIS_1-LOOP_1]=322;
                }
                else
                {
                    AXIS[Y_AXIS_1-LOOP_1+1][X_AXIS_1-LOOP_1+1]=0;
                    AXIS[Y_AXIS_1-LOOP_1][X_AXIS_1-LOOP_1]=322;
                    break;
                }
            }
        }
        if(X_AXIS_2-X_AXIS_1 > 0)
        {
            for(LOOP_1=1;LOOP_1 <= sqrt((X_AXIS_2-X_AXIS_1)*(Y_AXIS_1-Y_AXIS_2));LOOP_1++)
            {
                if(AXIS[Y_AXIS_1-LOOP_1][X_AXIS_1+LOOP_1] == 0)
                {
                    AXIS[Y_AXIS_1-LOOP_1+1][X_AXIS_1+LOOP_1-1]=0;
                    AXIS[Y_AXIS_1-LOOP_1][X_AXIS_1+LOOP_1]=322;
                }
                else
                {
                    AXIS[Y_AXIS_1-LOOP_1+1][X_AXIS_1+LOOP_1-1]=0;
                    AXIS[Y_AXIS_1-LOOP_1][X_AXIS_1+LOOP_1]=322;
                    break;
                }
            }
        }
    }
    if(Y_AXIS_2-Y_AXIS_1 > 0)
    {
        if(X_AXIS_2-X_AXIS_1 < 0)
        {
            for(LOOP_1=1;LOOP_1 <= sqrt((X_AXIS_1-X_AXIS_2)*(Y_AXIS_2-Y_AXIS_1));LOOP_1++)
            {
                if(AXIS[Y_AXIS_1+LOOP_1][X_AXIS_1-LOOP_1] == 0)
                {
                    AXIS[Y_AXIS_1+LOOP_1-1][X_AXIS_1-LOOP_1+1]=0;
                    AXIS[Y_AXIS_1+LOOP_1][X_AXIS_1-LOOP_1]=322;
                }
                else
                {
                    AXIS[Y_AXIS_1+LOOP_1-1][X_AXIS_1-LOOP_1+1]=0;
                    AXIS[Y_AXIS_1+LOOP_1][X_AXIS_1-LOOP_1]=322;
                    break;
                }
            }
        }
        if(X_AXIS_2-X_AXIS_1 > 0)
        {
            for(LOOP_1=1;LOOP_1 <= sqrt((X_AXIS_2-X_AXIS_1)*(Y_AXIS_2-Y_AXIS_1));LOOP_1++)
            {
                if(AXIS[Y_AXIS_1+LOOP_1][X_AXIS_1+LOOP_1] == 0)
                {
                    AXIS[Y_AXIS_1+LOOP_1-1][X_AXIS_1+LOOP_1-1]=0;
                    AXIS[Y_AXIS_1+LOOP_1][X_AXIS_1+LOOP_1]=322;
                }
                else
                {
                    AXIS[Y_AXIS_1+LOOP_1-1][X_AXIS_1+LOOP_1-1]=0;
                    AXIS[Y_AXIS_1+LOOP_1][X_AXIS_1+LOOP_1]=322;
                    break;
                }
            }
        }
    }
}

void FUNCTION_K(void)
{
    if(X_AXIS_2 == X_AXIS_1+1 && Y_AXIS_2 == Y_AXIS_1+1 || X_AXIS_2 == X_AXIS_1 && Y_AXIS_2 == Y_AXIS_1+1 || X_AXIS_2 == X_AXIS_1 && Y_AXIS_2 == Y_AXIS_1+1)
    {
        FUNCTION_SWHICH();
    }
    if(X_AXIS_2 == X_AXIS_1+1 && Y_AXIS_2 == Y_AXIS_1 || X_AXIS_2 == X_AXIS_1 && Y_AXIS_2 == Y_AXIS_1 || X_AXIS_2 == X_AXIS_1 && Y_AXIS_2 == Y_AXIS_1)
    {
        FUNCTION_SWHICH();
    }
    if(X_AXIS_2 == X_AXIS_1+1 && Y_AXIS_2 == Y_AXIS_1 || X_AXIS_2 == X_AXIS_1 && Y_AXIS_2 == Y_AXIS_1 || X_AXIS_2 == X_AXIS_1 && Y_AXIS_2 == Y_AXIS_1)
    {
        FUNCTION_SWHICH();
    }
}

int main(void)
{
    for(LOOP_3=1;LOOP_3 == 1;LOOP_3+=0)
    {
        system("cls");
        for(LOOP_1=0;LOOP_1 <= 7;LOOP_1++)
        {
            for(LOOP_2=0;LOOP_2 <= 7;LOOP_2++)
            {
                if(AXIS[LOOP_1][LOOP_2] > 300 && AXIS[LOOP_1][LOOP_2] < 400)
                {
                    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                        FOREGROUND_INTENSITY |
                        FOREGROUND_RED |
                        FOREGROUND_GREEN |
                        FOREGROUND_BLUE);
                    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                        BACKGROUND_INTENSITY |
                        FOREGROUND_INTENSITY |
                        BACKGROUND_RED |
                        BACKGROUND_GREEN |
                        BACKGROUND_BLUE);
                }
                else
                {
                    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                        FOREGROUND_INTENSITY);
                    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                        FOREGROUND_INTENSITY |
                        FOREGROUND_RED |
                        FOREGROUND_GREEN |
                        FOREGROUND_BLUE);
                }
                cout << (char)(AXIS[LOOP_1][LOOP_2]);
            }
            cout << endl;
        }
        cout << LOOP_4 << ":";
        cin >> X_AXIS_1 >> Y_AXIS_1 >> X_AXIS_2 >> Y_AXIS_2;
        X_AXIS_1-='a';
        X_AXIS_2-='a';
        Y_AXIS_1-=1;
        Y_AXIS_2-=1;
        if(X_AXIS_1 >= 0 && X_AXIS_1 <= 7 && Y_AXIS_1 >= 0 && Y_AXIS_1 <= 7)
        {
            if(X_AXIS_2 >= 0 && X_AXIS_2 <= 7 && Y_AXIS_2 >= 0 && Y_AXIS_2 <= 7)
            {
                if(AXIS[Y_AXIS_1][X_AXIS_1] == 336 || AXIS[Y_AXIS_1][X_AXIS_1] == 80)
                {
                    if(LOOP_4 == 0)
                    {
                        FUNCTION_P_WHITE();
                    }
                    else if(LOOP_4 == 1)
                    {
                        FUNCTION_P_BLACK();
                    }
                }
                else if(AXIS[Y_AXIS_1][X_AXIS_1] == 338 || AXIS[Y_AXIS_1][X_AXIS_1] == 82)
                {
                    FUNCTION_R();
                }
                else if(AXIS[Y_AXIS_1][X_AXIS_1] == 334 || AXIS[Y_AXIS_1][X_AXIS_1] == 78)
                {
                    FUNCTION_N();
                }
                else if(AXIS[Y_AXIS_1][X_AXIS_1] == 322 || AXIS[Y_AXIS_1][X_AXIS_1] == 66)
                {
                    FUNCTION_B();
                }
                else if(AXIS[Y_AXIS_1][X_AXIS_1] == 331 || AXIS[Y_AXIS_1][X_AXIS_1] == 75)
                {
                    FUNCTION_K();
                }
                else if(AXIS[Y_AXIS_1][X_AXIS_1] == 337 || AXIS[Y_AXIS_1][X_AXIS_1] == 81)
                {
                    FUNCTION_N();
                    FUNCTION_B();
                }
            }
        }
        if(LOOP_4 == 0)
        {
            LOOP_4=1;
        }
        else LOOP_4=0;
    }
    return 0;
}

“一个可以运行 的C++语言国际象棋程序,几年前编的答辩程序,莫得注释,我也忘了写的是嘛,王车易位没写,烂尾坟立个碑。”

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值