poj 2993 模拟,2996的逆

本文介绍了一个使用 C++ 实现的简单程序,该程序能够根据输入的棋子位置信息,绘制出一个国际象棋棋盘布局。通过对棋盘背景颜色的交替设定及棋子位置的精确摆放,实现了棋盘的可视化效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*

2996的逆

*/

#include<iostream>

#include<cstdio>

#include<cstdlib>

#include<vector>

#include<set>

#include<queue>

#include<map>

#include<cmath>

#include<cstring>

#include<algorithm>

#include<functional>

using namespace std;

const int INF=(1<<31)-1;

const double EPS=1e-8;

char chess[10][50];

char black[8]="kqrbnp";

char white[8]="KQRBNP";

char line_t[50]="+---+---+---+---+---+---+---+---+";

char line[100];

 

void setChar(int type,int pos,int r,int c)

{

  if(type==0)

             chess[r][2+4*(c-1)]=white[pos]; 

  else

             chess[r][2+4*(c-1)]=black[pos];     

}

 

int main()

{

    //freopen("in.txt","r",stdin);

    //freopen("out.txt","w",stdout);

    int i,j,k;

    char steven[3]=":.";

    for(i=1;i<=8;i++)

    {

      chess[i][0]='|';

      for(j=1,k=1;j<=33;j+=4,k++)

      {

          if(i&1)

          {

             if(k&1)

             {

                chess[i][j]=chess[i][j+1]=chess[i][j+2]=steven[0];       

             } 

             else 

             {

                chess[i][j]=chess[i][j+1]=chess[i][j+2]=steven[1];      

             }

          }  

          else 

          {

             if(k&1)

             {

                chess[i][j]=chess[i][j+1]=chess[i][j+2]=steven[1];       

             } 

             else 

             {

                chess[i][j]=chess[i][j+1]=chess[i][j+2]=steven[0];      

             }

          } 

          chess[i][j+3]='|';             

      }

      chess[i][33]=0;

    }

 

    for(int q=0;q<2;q++)

    { 

      gets(line);

      if(line[0]=='W')

      {

         for(int i=7;i<strlen(line);)

         {

            bool flag=true;

            for(int k=0;k<5;k++)

            {

               if(line[i]==white[k])

               {

                  setChar(0,k,line[i+2]-'1'+1,line[i+1]-'a'+1); 

                  i+=4;

                  flag=false;

               }      

            } 

            if(flag)

            {

                 if(line[i]>='a'&&line[i+1]<'h')

                 {

                   setChar(0,5,line[i+1]-'1'+1,line[i]-'a'+1);

                 }   

                 i+=3;      

            }       

         }           

 

      }

      else if(line[0]=='B')

      {

         for(int i=7;i<strlen(line);)

         {

            bool flag=true;

            for(int k=0;k<5;k++)

            {

               if(line[i]==white[k])

               {

                  setChar(1,k,line[i+2]-'1'+1,line[i+1]-'a'+1); 

                  i+=4;

                  flag=false;

               }      

            } 

            if(flag)

            {

                 if(line[i]>='a'&&line[i+1]<'h')

                 {

                   setChar(1,5,line[i+1]-'1'+1,line[i]-'a'+1);

                 }   

                 i+=3;      

            }       

         }           

 

      }

    }

    printf("%s/n",line_t);

    for(int i=8;i>=1;i--)

    {

            cout<<chess[i]<<endl;

            printf("%s/n",line_t);

    }

 

    system("pause");

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值