欢迎光临散文网 会员登陆 & 注册

16,在读,初学,只整出个这?

2023-03-12 09:31 作者:丙氨酸史莱姆  | 我要投稿

#include<iostream>//已用编程时间(不算纸上规划):7h50min

using namespace std;

int main()

{

   int c,win=0;//用try修正错误

   cout << "输入棋盘长,应为三到十的整形" << endl;

   cin >> c;

   const int X=c+1;

   cout << "输入棋盘宽,规则同上"<< endl;

   cin >> c;

   const int Y=c+1;

   int ch [Y][X];

   int ba [Y][X];

   int j=0,i=0;

   for(i=0;i<Y;i++)

           for(j=0;j<X;j++)

               ch [i][j]=0;

   for(i=0;i<Y;i++)

           for(j=0;j<X;j++)

               ba [i][j]=0;

   cout << "是否快速布棋?请输入对应整形代号,若无则直接进入手动布棋" << endl;//目前仅支持快速布棋

   cout << "已支持:" << endl;

   cout <<"1.经典中国象棋9*8" << endl;//拓展部分

   label:

   cin >> c;//此前应用try修正错误,此后应加入while判断

   switch (c)

   {

   case 1://将来要改成为:" << c <<endl;

       ch [0][0]=-7;//0123456789换行0123456789……

       ch [0][3]=-2;

       ch [0][X-4]=2;

       ch [0][X-1]=7;

       ch [1][0]=-3;

       ch [1][2]=-4;

       ch [1][X-3]=4;

       ch [1][X-1]=3;

       ch [2][0]=-5;

       ch [2][3]=-2;

       ch [2][X-4]=2;

       ch [2][X-1]=5;

       ch [3][0]=-6;

       ch [3][X-1]=6;

       ch [4][0]=-1;

       ch [4][3]=-2;

       ch [4][X-4]=2;

       ch [4][X-1]=1;

       ch [Y-1][0]=-7;

       ch [Y-1][3]=-2;

       ch [Y-1][X-4]=2;

       ch [Y-1][X-1]=7;

       ch [Y-2][0]=-3;

       ch [Y-2][2]=-4;

       ch [Y-2][X-3]=4;

       ch [Y-2][X-1]=3;

       ch [Y-3][0]=-5;

       ch [Y-3][3]=-2;

       ch [Y-3][X-4]=2;

       ch [Y-3][X-1]=5;

       ch [Y-4][0]=-6;

       ch [Y-4][X-1]=6;

       ba [4][1]=-1;

       ba [4][X-2]=1;

       cout << "成功" << endl;

       goto label;

   default:

       int A,B,T;

       cout << "角色表输入,行列任意一个为负数时退出" << endl;

       do//异常数据未处理

       {

           cout << "输入种" << endl;

           cin >> T;

           cout << "输入行" << endl;

           cin >> A;

           cout << "输入列" << endl;

           cin >> B;

           ch [B][A]=T;

           cout << "成功" << endl;

       }

       while(A>=0&&B>=0);

   }

   char op [Y][X];//未开发废弃

   int s;//边,右先(算筹中负数为黑筹)

   int x,y,t,a,b,ty,cheng;

   s=1;

   win=0;

   lablee://从while改为for再改成label

   

         //未被执行

       op [Y][X]=ch [Y][X];//暂时废弃

       for(i=0;i<Y;i++)//TM的这个累加器整了我近两半个小时

           {

           for(j=0;j<X;j++)

               cout << ch [i][j] << "|";

           cout << endl;

           }

           cout << "请输入选子横坐标" << endl;

           cin >> x;

           cout << "请输入选子纵坐标" << endl;

           cin >> y;

           if(x<=X && x>=0 && y<=Y && y>=0)

           {

               t=ch [y][x];

               if((t>0 && s>0)||(t<0 && s<0))

               {

                   cout << "请输入您的目标格横坐标" << endl;

                   cin >> a;

                   cout << "请输入您的目标格纵坐标" << endl;

                   cin >> b;

                   if(a!=x||b!=y)

                   {

                       if(a<=X && a>=0 && b<=Y && b>=0)

                           cheng=1;

                       else

                           cheng=0;//与后面的无意义链接

                       switch(cheng)

                       {

                       case 1://凭啥if可以正常用而swich非要常量表达式?

                           ty=ch [b][a];

                           if((ty<=0 && s>0)||(ty>=0 && s<0))

                           {

                               

                               ch[b][a]=ch[y][x];

                               ch[y][x]=0;

                               cout << "移动!" << endl;

                               switch(s){  

                               case 1:{

                                   s=-1;

                                   cout<<"左边"<<endl;

                                   break;

                                   }

                               default:{              

                                   s=1;

                                   cout<<"右边"<<endl;

                                   }

                               }

                               switch(ty)

                               

                               {

                               case 1:

                                   win=-1;

                               case -1:

                                   win=1;

                               default:

                                   cout << "游戏继续" << endl;

                               }

                           }

                           else

                               cout << "同类!" << endl;

//                               switch(1)

//                               {

//                               case(ty=t):

//                               

//                               }

                           break;

                       default://这里感觉怪怪的

                           cout << "坐标错误!强制换边" << endl;

                       }

                   }

                   

//                   else

//                       cout << "范围错误!" << endl;

               }

               else{

                   cout << "阵营错误!" <<endl;

                   win=0;

                   }

           }

           else{

               cout << "坐标错误" << endl;

               win=0;

               }//输出被埋伏笔了,这个do是真的烦,找不到问题但是多加一个框就好了也不知道是为啥

//   if(win=0)

       

       cout<<"边为"<<s<<endl;

       if(win!=0){

           cout << "胜利一方是" << win << endl;

  

           cout << "Hello World!" << endl;//你还留着这一段呢?

           return 0;

       }

       goto lablee;

   

   

   //循环,摆烂了

   

}

16,在读,初学,只整出个这?的评论 (共 条)

分享到微博请遵守国家法律