zoukankan      html  css  js  c++  java
  • 用C++完成三国杀(无GUI)

    最近的工作和学习相对来说比较累,没有时间去研究比较深的原理性的专业知识,但是为了将我多年修炼的编程内功继续保持下去,我总会去写一些很有趣的东西,昨天休息在家我就用一天的时间完成了C++版的三国杀,虽然很搓,但还是想开源,希望刚学习C++的新手有所帮助。。。高手的话可以忽略我的存在。。。呵呵。。。

    View Code
       1 #include<iostream>
       2 #include<time.h>
       3 #include<stdio.h>
       4 #include <stdlib.h>
       5 using namespace std;
       6 struct pai
       7 {
       8 int paifu;
       9 int huase;
      10 int yanse;
      11 int dianshu;
      12 int leixing;
      13 int changdu;
      14 void Kanpai()
      15 {
      16 if(paifu==0||paifu==1);
      17 else
      18 printf("牌副参数错误!\n");
      19 switch(huase)
      20 {
      21 case 0:cout<<"黑桃";break;
      22 case 1:cout<<"红桃";break;
      23 case 2:cout<<"草花";break;
      24 case 3:cout<<"方片";break;
      25 case -1:cout<<"无色";break;
      26 default:printf("花色错误!\n");break;
      27 }
      28 switch(dianshu)
      29 {
      30 case 0:cout<<"A ";break;
      31 case 1:cout<<"2 ";break;
      32 case 2:cout<<"3 ";break;
      33 case 3:cout<<"4 ";break;
      34 case 4:cout<<"5 ";break;
      35 case 5:cout<<"6 ";break;
      36 case 6:cout<<"7 ";break;
      37 case 7:cout<<"8 ";break;
      38 case 8:cout<<"9 ";break;
      39 case 9:cout<<"10 ";break;
      40 case 10:cout<<"J ";break;
      41 case 11:cout<<"Q ";break;
      42 case 12:cout<<"K ";break;
      43 case -1:cout<<"无点数";break;
      44 default:printf("点数错误!\n");break;
      45 }
      46 switch(leixing)
      47 {
      48 case 101:cout<<"【杀】"<<endl;break;
      49 case 102:cout<<"【闪】"<<endl;break;
      50 case 103:cout<<"【桃】"<<endl;break;
      51 case 201:cout<<"【过河拆桥】"<<endl;break;
      52 case 202:cout<<"【顺手牵羊】"<<endl;break;
      53 case 203:cout<<"【无中生有】"<<endl;break;
      54 case 204:cout<<"【决斗】"<<endl;break;
      55 case 205:cout<<"【借刀杀人】"<<endl;break;
      56 case 206:cout<<"【桃园结义】"<<endl;break;
      57 case 207:cout<<"【五谷丰登】"<<endl;break;
      58 case 208:cout<<"【南蛮入侵】"<<endl;break;
      59 case 209:cout<<"【万箭齐发】"<<endl;break;
      60 case 210:cout<<"【无懈可击】"<<endl;break;
      61 case 251:cout<<"【乐不思蜀】"<<endl;break;
      62 case 252:cout<<"【闪电】"<<endl;break;
      63 case 301:cout<<"【诸葛连弩(1)】"<<endl;break;
      64 case 302:cout<<"【雌雄双股剑(2)】"<<endl;break;
      65 case 303:cout<<"【青釭剑(2)】"<<endl;break;
      66 case 304:cout<<"【青龙偃月刀(3)】"<<endl;break;
      67 case 305:cout<<"【丈八蛇矛(3)】"<<endl;break;
      68 case 306:cout<<"【贯石斧(3)】"<<endl;break;
      69 case 307:cout<<"【方天画戟(4)】"<<endl;break;
      70 case 308:cout<<"【麒麟弓(5)】"<<endl;break;
      71 case 331:cout<<"【八卦阵】"<<endl;break;
      72 case 361:cout<<"【赤兔(-1)】"<<endl;break;
      73 case 362:cout<<"【大宛(-1)】"<<endl;break;
      74 case 363:cout<<"【紫辛(-1)】"<<endl;break;
      75 case 381:cout<<"【爪黄飞电(+1)】"<<endl;break;
      76 case 382:cout<<"【的卢(+1)】"<<endl;break;
      77 case 383:cout<<"【绝影(+1)】"<<endl;break;
      78 default:printf("类型参数错误!");break;
      79 }
      80 }
      81 };
      82 void Qishixipai(pai A[2][4][13],pai paidui[104])
      83 {
      84 int i,m,x,y,z,a[104]={0};
      85 srand((unsigned)time(NULL));
      86 for(i=1;i<=104;i++)
      87 {
      88 while(a[m=rand()%104]);
      89 a[m]=i;
      90 }
      91 for(i=0;i<=103;i++)
      92 {
      93 x=(a[i]-1)/52;
      94 y=((a[i]-1)-52*x)/13;
      95 z=(a[i]-1)%13;
      96 paidui[i]=A[x][y][z];
      97 }
      98 }
      99 void Xipai(pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)
     100 {
     101 int i,m,a[104]={0};
     102 srand((unsigned)time(NULL));
     103 for(i=1;i<=(*qipaishu);i++)
     104 {
     105 while(a[m=rand()%(*qipaishu)]);
     106 a[m]=i;
     107 }
     108 for(i=0;i<=((*qipaishu)-1);i++)
     109 {
     110 paidui[i]=qipaidui[a[i]];
     111 qipaidui[a[i]].leixing=-1;
     112 (*paiduishu)++;
     113 (*qipaishu)--;
     114 }
     115 for(i=(*paiduishu);i<=103;i++)paidui[i].leixing=-1;
     116 }
     117 pai Mo1pai(pai A[104],int *x,pai B[104],int*y,int *b)
     118 {
     119 pai p;
     120 if((*x)==0)Xipai(A,x,B,y);
     121 else if((*x)<0)printf("摸牌参数错误!");
     122 else;
     123 p=A[104-(*x)];
     124 (*x)--;
     125 (*b)++;
     126 return(p);
     127 }
     128 struct wujiang
     129 {
     130 char name;
     131 int tili;
     132 int tilishangxian;
     133 int shoupaishangxian;
     134 int huihekaishi;
     135 int panding;
     136 int mopai;
     137 int chupai;
     138 int qipai;
     139 int huihejieshu;
     140 int juese;
     141 pai shoupai[20];
     142 int shoupaishu;
     143 pai zhuangbei[4];
     144 int zhuangbeishu;
     145 pai pandingpai[3];
     146 int pandingshu;
     147 int juli[1];
     148 void Kanshoupai()
     149 {
     150 printf("玩家当前手牌:\n");
     151 if(shoupaishu)
     152 {
     153 int m;
     154 for(m=0;m<=(shoupaishu-1);m++)
     155 {
     156 printf("%d ",m);
     157 (shoupai[m]).Kanpai();
     158 }
     159 }
     160 else printf("空城!\n");
     161 printf("\n");
     162 }
     163 void Kanzhuangbei()
     164 {
     165 if(juese)printf("玩家");
     166 else printf("电脑");
     167 printf("当前装备:\n");
     168 printf("0 武器: ");
     169 if((zhuangbei[0]).leixing==-1)printf("空\n");
     170 else (zhuangbei[0]).Kanpai();
     171 printf("1 防具: ");
     172 if((zhuangbei[1]).leixing==-1)printf("空\n");
     173 else (zhuangbei[1]).Kanpai();
     174 printf("2 进攻马: ");
     175 if((zhuangbei[2]).leixing==-1)printf("空\n");
     176 else (zhuangbei[2]).Kanpai();
     177 printf("3 防御马: ");
     178 if((zhuangbei[3]).leixing==-1)printf("空\n");
     179 else (zhuangbei[3]).Kanpai();
     180 printf("\n");
     181 }
     182 void Kanpandingpai()
     183 {
     184 if(juese)printf("玩家");
     185 else printf("电脑");
     186 printf("当前判定区:\n");
     187 if((pandingpai[0]).leixing==-1)printf("空\n");
     188 else
     189 {
     190 printf("0 ");
     191 (pandingpai[0]).Kanpai();
     192 if((pandingpai[1]).leixing==-1);
     193 else
     194 {
     195 printf("1 ");
     196 (pandingpai[1]).Kanpai();
     197 if((pandingpai[2]).leixing==-1);
     198 else
     199 {
     200 printf("2 ");
     201 (pandingpai[2]).Kanpai();
     202 }
     203 }
     204 }
     205 }
     206 };
     207 void Mopai(int*shoupaishu,pai shoupai[20],pai A[104],int *x,pai B[104],int*y,int juese)
     208 {
     209 if(juese)printf("玩家从牌堆摸2张牌\n");
     210 else printf("电脑从牌堆摸2张牌\n");
     211 pai p;
     212 p=Mo1pai(A,x,B,y,shoupaishu);
     213 shoupai[*shoupaishu-1]=p;
     214 pai q;
     215 q=Mo1pai(A,x,B,y,shoupaishu);
     216 shoupai[*shoupaishu-1]=q;
     217 int m;
     218 if(juese)
     219 {
     220 printf("玩家当前手牌:\n");
     221 for(m=0;m<=(*shoupaishu-1);m++)
     222 {
     223 printf("%d ",m);
     224 (shoupai[m]).Kanpai();
     225 }
     226 }
     227 printf("牌堆还剩%d张牌!\n\n",*x);
     228 }
     229 void Qishishoupai(wujiang *w,pai A[104],int *x,pai B[104],int*y)
     230 {
     231 pai a;
     232 a=Mo1pai(A,x,B,y,&((*w).shoupaishu));
     233 (*w).shoupai[(*w).shoupaishu-1]=a;
     234 pai b;
     235 b=Mo1pai(A,x,B,y,&((*w).shoupaishu));
     236 (*w).shoupai[(*w).shoupaishu-1]=b;
     237 pai c;
     238 c=Mo1pai(A,x,B,y,&((*w).shoupaishu));
     239 (*w).shoupai[(*w).shoupaishu-1]=c;
     240 pai d;
     241 d=Mo1pai(A,x,B,y,&((*w).shoupaishu));
     242 (*w).shoupai[(*w).shoupaishu-1]=d;
     243 int m;
     244 if((*w).juese)printf("玩家从牌堆摸4张牌\n");
     245 else printf("电脑从牌堆摸4张牌\n");
     246 if((*w).juese)
     247 {
     248 printf("玩家当前手牌:\n");
     249 for(m=0;m<=((*w).shoupaishu-1);m++)
     250 {
     251 printf("%d ",m);
     252 ((*w).shoupai[m]).Kanpai();
     253 }
     254 }
     255 printf("牌堆还剩%d张牌!\n\n",*x);
     256 }
     257 void Panding(pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)
     258 {
     259 paidui[*paiduishu].Kanpai();
     260 qipaidui[*qipaishu]=paidui[*paiduishu];
     261 (*paiduishu)--;
     262 (*qipaishu)++;
     263 }
     264 pai Zhangba(wujiang*w,pai qipaidui[104],int*qipaishu)
     265 {
     266 int x,y;
     267 pai p;
     268 for(;;)
     269 {
     270 int i,j;
     271 printf("请输入任意两张手牌之前的编号,以空格隔开,以回车结束!\n");
     272 scanf("%d",&x);
     273 scanf("%d",&y);
     274 if((x>=0)&&(x<(*w).shoupaishu)&&(y>=0)&&(y<(*w).shoupaishu-1))
     275 {
     276 switch((((*w).shoupai[x].huase)%2)+(((*w).shoupai[y].huase)%2))
     277 {
     278 case 0:p.yanse=0;break;
     279 case 2:p.yanse=1;break;
     280 case 1:p.yanse=2;break;
     281 default:printf("【丈八蛇矛】函数参数错误!\n");
     282 }
     283 qipaidui[*qipaishu]=(*w).shoupai[x];
     284 (*w).shoupai[x].leixing=-1;
     285 ((*w).shoupaishu)--;
     286 (*qipaishu)++;
     287 qipaidui[*qipaishu]=(*w).shoupai[y];
     288 (*w).shoupai[y].leixing=-1;
     289 ((*w).shoupaishu)--;
     290 (*qipaishu)++; printf("弃牌数:%d",*qipaishu);
     291 for(i=0;i<=(((*w).shoupaishu)+1);i++)
     292 {
     293 if((*w).shoupai[i].leixing==-1)
     294 {
     295 for(j=i+1;j<=(((*w).shoupaishu)+2);j++)
     296 (*w).shoupai[j-1]=(*w).shoupai[j];
     297 i--;
     298 }
     299 }
     300 printf("玩家把:\n");
     301 qipaidui[(*qipaishu)-2].Kanpai();
     302 qipaidui[(*qipaishu)-1].Kanpai();
     303 printf("当作一张");
     304 switch(p.yanse)
     305 {
     306 case 0:printf("黑色");break;
     307 case 2:printf("红色");break;
     308 case 1:printf("无色");break;
     309 default:printf("绿色");break;
     310 }
     311 printf("无点数的【杀】");
     312 p.dianshu=-1;
     313 p.leixing=101;
     314 return p;
     315 break;
     316 }
     317 printf("你将两张空气当作一张空气属性的【杀】使用或打出!\n");
     318 }
     319 }
     320 int Xuanpai(wujiang*w,int t)
     321 {
     322 int x;
     323 if((*w).juese)
     324 {
     325 for(;;)
     326 {
     327 printf("出牌请输入手牌之前的编号,以回车结束!\n如果你想结束出牌阶段,请输入“-1”,以回车结束!\n");
     328 scanf("%d",&x);
     329 if((x>=-1&&x<((*w).shoupaishu))||((x==100)&&((*w).zhuangbei[0].leixing==305)))
     330 {
     331 return x;
     332 break;
     333 }
     334 printf("你打出了一张空气!\n");
     335 }
     336 }
     337 else return t;
     338 }
     339 pai Panpai(wujiang*w1,int*sha,int y,pai qipaidui[104],int*qipaishu)
     340 {
     341 pai p,q;
     342 p.leixing=0;
     343 q.leixing=-1;
     344 if(y==-1)return q;
     345 else
     346 {
     347 if(y==100)
     348 {
     349 if((*sha)>0)
     350 {
     351 q=Zhangba(w1,qipaidui,qipaishu);
     352 printf("使用!\n");
     353 return q;
     354 }
     355 else
     356 {
     357 printf("当前回合使用【杀】的次数已用尽,你也不能使用【丈八蛇矛】效果!\n");
     358 return p;
     359 }
     360 }
     361 switch((*w1).shoupai[y].leixing)
     362 {
     363 case 101:
     364 if(((*sha)>0)||((*w1).zhuangbei[0].leixing==301))
     365 {
     366 if(((*w1).zhuangbei[0].leixing==301))printf("武器【诸葛连弩】效果被触发!\n");
     367 return (*w1).shoupai[y];
     368 break;
     369 }
     370 else
     371 {
     372 if((*w1).juese)printf("当前回合使用【杀】的次数已用尽,你不能使用【杀】!\n");
     373 return p;break;
     374 }
     375 case 102:
     376 if((*w1).juese)
     377 printf("当前不需要响应任何操作,你不能主动打出【闪】!\n");
     378 return p;break;
     379 case 103:
     380 if(((*w1).tili)<((*w1).tilishangxian))
     381 {
     382 return (*w1).shoupai[y];
     383 break;
     384 }
     385 else
     386 {
     387 if((*w1).juese)
     388 printf("你并未受伤,不能对自己使用【桃】!\n");
     389 }
     390 return p;break;
     391 case 210:
     392 if((*w1).juese)
     393 printf("当前不需要响应任何锦囊,你不能主动打出【无懈可击】!\n");
     394 return p;break;
     395 case 201:
     396 case 202:
     397 case 203:
     398 case 204:
     399 case 205:
     400 case 206:
     401 case 207:
     402 case 208:
     403 case 209:
     404 case 251:
     405 case 252:
     406 case 301:
     407 case 302:
     408 case 303:
     409 case 304:
     410 case 305:
     411 case 306:
     412 case 307:
     413 case 308:
     414 case 331:
     415 case 361:
     416 case 362:
     417 case 363:
     418 case 381:
     419 case 382:
     420 case 383:return (*w1).shoupai[y];break;
     421 default:printf("手牌类型参数错误!\n");return p;break;
     422 }
     423 }
     424 }
     425 int Mubiao(pai p,wujiang *w1,wujiang *w2,int*sha)
     426 {
     427 int x;
     428 switch(p.leixing)
     429 {
     430 case 101:
     431 if((*w1).juese)
     432 {
     433 printf("请选择【杀】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
     434 scanf("%d",&x);
     435 if(x==0)
     436 {
     437 if((*w1).zhuangbei[0].changdu>=(*w1).juli[0])
     438 {
     439 (*sha)--;
     440 return((*w2).juese);
     441 }
     442 else
     443 {
     444 printf("武器长度不够!\n");
     445 return -2;
     446 }
     447 }
     448 else
     449 {
     450 printf("目标错误!\n");
     451 return -2;
     452 }
     453 }
     454 else
     455 {
     456 if((*w1).zhuangbei[0].changdu>=(*w1).juli[0])
     457 {
     458 (*sha)--;
     459 return((*w2).juese);
     460 }
     461 else return -2;
     462 }
     463 break;
     464 case 103:return((*w1).juese);break;
     465 case 201:
     466 if((*w1).juese)
     467 {
     468 printf("请选择【过河拆桥】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
     469 scanf("%d",&x);
     470 if(x==0)
     471 {
     472 if((*w2).shoupaishu||(*w2).zhuangbeishu||(*w2).pandingshu)return((*w2).juese);
     473 else
     474 {
     475 printf("目标没有牌!\n");
     476 return -2;
     477 }
     478 }
     479 else
     480 {
     481 printf("目标错误!\n");
     482 return -2;
     483 }
     484 }
     485 else return((*w2).juese);
     486 break;
     487 case 202:
     488 if((*w1).juese)
     489 {
     490 printf("请选择【顺手牵羊】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
     491 scanf("%d",&x);
     492 if(x==0)
     493 {
     494 if(((*w2).shoupaishu||(*w2).zhuangbeishu||(*w2).pandingshu)&&((*w1).juli[0]<=1))return((*w2).juese);
     495 else
     496 {
     497 printf("目标没有牌!\n");
     498 return -2;
     499 }
     500 }
     501 else
     502 {
     503 printf("目标错误!\n");
     504 return -2;
     505 }
     506 }
     507 else
     508 {
     509 if((*w1).juli[0]<=1)return((*w2).juese);
     510 else return -2;
     511 }
     512 break;
     513 case 203:
     514 return((*w1).juese);break;
     515 case 204:
     516 if((*w1).juese)
     517 {
     518 printf("请选择【决斗】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
     519 scanf("%d",&x);
     520 if(x==0)return((*w2).juese);
     521 else
     522 {
     523 printf("目标错误!\n");
     524 return -2;
     525 }
     526 }
     527 else return((*w2).juese);
     528 break;
     529 case 205:
     530 int y;
     531 if((*w1).juese)
     532 {
     533 printf("请选择【借刀杀人】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
     534 scanf("%d",&x);
     535 if(x!=0)
     536 {
     537 printf("目标错误!\n");
     538 return -2;
     539 }
     540 else
     541 {
     542 if(((*w2).zhuangbei[0]).leixing<=300||((*w2).zhuangbei[0]).leixing>=331)
     543 {
     544 printf("目标装备区里没有武器!\n");
     545 return -2;
     546 }
     547 else
     548 {
     549 printf("请选择【杀】的目标!\n提示:【杀】的目标必须在【借刀杀人】的目标的攻击范围之内!\n输入目标前的编号,以回车结束!\n0 玩家\n");
     550 scanf("%d",&y);
     551 if(y!=0)
     552 {
     553 printf("目标错误!\n");
     554 return -2;
     555 }
     556 else
     557 {
     558 if(((*w2).zhuangbei[0].changdu)<(*w2).juli[0])
     559 {
     560 printf("武器距离不够!\n");
     561 return -2;
     562 }
     563 else
     564 return((*w2).juese);
     565 }
     566 }
     567 }
     568 }
     569 else
     570 {
     571 if(((*w2).zhuangbei[0]).leixing<=300||((*w2).zhuangbei[0]).leixing>=331)return -2;
     572 else
     573 {
     574 if(((*w2).zhuangbei[0].changdu)<(*w2).juli[0])return -2;
     575 else return((*w2).juese);
     576 }
     577 }
     578 break;
     579 case 206:
     580 case 207:return 99;break;
     581 case 208:
     582 case 209:return 100;break;
     583 case 251:
     584 if((*w1).juese)
     585 {
     586 printf("请选择【乐不思蜀】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
     587 scanf("%d",&x);
     588 if(x==0)
     589 {
     590 int i;
     591 for(i=0;i<=2;i++)
     592 {
     593 if((*w2).pandingpai[i].leixing==251)
     594 i=-1;
     595 break;
     596 }
     597 if(i==-1)
     598 {
     599 printf("目标判定区里不能同时存在两张相同的延时类锦囊!\n");
     600 return -2;
     601 }
     602 else return((*w2).juese);
     603 }
     604 else
     605 {
     606 printf("目标错误!\n");
     607 return -2;
     608 }
     609 }
     610 else
     611 {
     612 int i;
     613 for(i=0;i<=2;i++)
     614 {
     615 if((*w2).pandingpai[i].leixing==251)
     616 i=-1;
     617 break;
     618 }
     619 if(i==-1)return -2;
     620 else return((*w2).juese);
     621 }
     622 break;
     623 case 252:
     624 int i;
     625 for(i=0;i<=2;i++)
     626 {
     627 if((*w1).pandingpai[i].leixing==252)
     628 i=-1;
     629 break;
     630 }
     631 if(i==-1)
     632 {
     633 if((*w1).juese)printf("目标判定区里不能同时存在两张相同的延时类锦囊!\n");
     634 return -2;
     635 }
     636 else return ((*w1).juese);
     637 break;
     638 case 301:
     639 case 302:
     640 case 303:
     641 case 304:
     642 case 305:
     643 case 306:
     644 case 307:
     645 case 308:
     646 case 331:
     647 case 361:
     648 case 362:
     649 case 363:
     650 case 381:
     651 case 382:
     652 case 383:return((*w1).juese);break;
     653 default:return -2;break;
     654 }
     655 }
     656 void Da1pai(wujiang *w1,wujiang*w2,pai qipaidui[104],int *qipaishu,int x)
     657 {
     658 int i;
     659 if((x<0||x>=((*w1).shoupaishu))&&x!=100)
     660 printf("你的牌呢?!\n");
     661 else
     662 {
     663 switch(((*w1).shoupai)[x].leixing)
     664 {
     665 case 101:
     666 case 102:
     667 case 103:
     668 case 201:
     669 case 202:
     670 case 203:
     671 case 204:
     672 case 205:
     673 case 206:
     674 case 207:
     675 case 208:
     676 case 209:
     677 case 210:
     678 qipaidui[*qipaishu]=((*w1).shoupai)[x];
     679 for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
     680 ((*w1).shoupaishu)--;
     681 (*qipaishu)++;
     682 break;
     683 case 251:
     684 for(i=1;i>=0;i--)(*w2).pandingpai[i+1]=(*w2).pandingpai[i];
     685 (*w2).pandingpai[0]=(*w1).shoupai[x];
     686 for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
     687 ((*w1).shoupaishu)--;
     688 ((*w2).pandingshu)++;
     689 break;
     690 case 252:
     691 for(i=1;i>=0;i--)(*w1).pandingpai[i+1]=(*w1).pandingpai[i];
     692 (*w1).pandingpai[0]=(*w1).shoupai[x];
     693 for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
     694 ((*w1).shoupaishu)--;
     695 ((*w1).pandingshu)++;
     696 break;
     697 case 301:
     698 case 302:
     699 case 303:
     700 case 304:
     701 case 305:
     702 case 306:
     703 case 307:
     704 case 308:
     705 if((*w1).zhuangbei[0].leixing==-1)((*w1).zhuangbeishu)++;
     706 else
     707 {
     708 qipaidui[*qipaishu]=((*w1).zhuangbei)[0];
     709 (*qipaishu)++;
     710 }
     711 (*w1).zhuangbei[0]=(*w1).shoupai[x];
     712 for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
     713 ((*w1).shoupaishu)--;
     714 break;
     715 case 331:
     716 if((*w1).zhuangbei[1].leixing==-1)((*w1).zhuangbeishu)++;
     717 else
     718 {
     719 qipaidui[*qipaishu]=((*w1).zhuangbei)[1];
     720 (*qipaishu)++;
     721 }
     722 (*w1).zhuangbei[1]=(*w1).shoupai[x];
     723 for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
     724 ((*w1).shoupaishu)--;
     725 break;
     726 case 361:
     727 case 362:
     728 case 363:
     729 if((*w1).zhuangbei[2].leixing==-1)((*w1).zhuangbeishu)++;
     730 else
     731 {
     732 qipaidui[*qipaishu]=((*w1).zhuangbei)[2];
     733 (*qipaishu)++;
     734 }
     735 (*w1).zhuangbei[2]=(*w1).shoupai[x];
     736 for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
     737 ((*w1).shoupaishu)--;
     738 break;
     739 case 381:
     740 case 382:
     741 case 383:
     742 if((*w1).zhuangbei[3].leixing==-1)((*w1).zhuangbeishu)++;
     743 else
     744 {
     745 qipaidui[*qipaishu]=((*w1).zhuangbei)[3];
     746 (*qipaishu)++;
     747 }
     748 (*w1).zhuangbei[3]=(*w1).shoupai[x];
     749 for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
     750 ((*w1).shoupaishu)--;
     751 break;
     752 default:break;
     753 }
     754 }
     755 }
     756 void Miaoshu(pai p,int juese,int duixiang)
     757 {
     758 if(juese==0)printf("电脑");
     759 else if(juese==1)printf("玩家");
     760 else printf("角色参数错误!\n");
     761 if(p.leixing<=300&&p.leixing>100)
     762 {
     763 switch(duixiang)
     764 {
     765 case -1:printf("打出");break;
     766 case 0:printf("对电脑使用");break;
     767 case 1:printf("对玩家使用");break;
     768 case 99:printf("使用");break;
     769 case 100:printf("对所有人使用");break;
     770 default:printf("对象参数错误\n");break;
     771 }
     772 }
     773 else if(p.leixing>=301&&p.leixing<=400)
     774 printf("装备");
     775 else printf("你出的是什么东西?\n");
     776 p.Kanpai();
     777 if(!juese&&(p.leixing==101||p.leixing==204||p.leixing==205||p.leixing==207||p.leixing==208||p.leixing==209))printf("请响应!\n");
     778 }
     779 int Wuxie(pai *p,wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu,int a)
     780 {
     781 int x;
     782 if((*w1).juese)
     783 {
     784 printf("是否使用【无懈可击】响应?\n\n");
     785 for(;;)
     786 {
     787 (*w1).Kanshoupai();
     788 printf("如果要使用【无懈可击】请输入手牌之前编号,不需要请输入“-1”,以回车结束!\n");
     789 scanf("%d",&x);
     790 if(x==-1)
     791 {
     792 for(x=0;x<((*w2).shoupaishu);x++)
     793 {
     794 if((*w2).shoupai[x].leixing==210)
     795 {
     796 printf("电脑使用");
     797 ((*w2).shoupai)[x].Kanpai();
     798 printf("对象是");
     799 (*p).Kanpai();
     800 (*p)=((*w2).shoupai)[x];
     801 qipaidui[*qipaishu]=((*w2).shoupai)[x];
     802 for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
     803 ((*w2).shoupaishu)--;
     804 (*qipaishu)++;
     805 a++;
     806 break;
     807 }
     808 }
     809 break;
     810 }
     811 else if((*w1).shoupai[x].leixing==210)
     812 {
     813 printf("玩家使用");
     814 ((*w1).shoupai)[x].Kanpai();
     815 printf("对象是");
     816 (*p).Kanpai();
     817 (*p)=((*w1).shoupai)[x];
     818 qipaidui[*qipaishu]=((*w1).shoupai)[x];
     819 for(int i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
     820 ((*w1).shoupaishu)--;
     821 (*qipaishu)++;
     822 (*w1).Kanshoupai();
     823 a++;
     824 break;
     825 }
     826 else printf("你确定你使用的是【无懈可击】?\n");
     827 }
     828 }
     829 else
     830 {
     831 printf("是否使用【无懈可击】响应?\n");
     832 for(;;)
     833 {
     834 (*w2).Kanshoupai();
     835 printf("如果要使用【无懈可击】请输入手牌之前编号,不需要请输入“-1”,以回车结束!\n");
     836 scanf("%d",&x);
     837 if(x==-1)break;
     838 else if((*w2).shoupai[x].leixing==210)
     839 {
     840 printf("玩家使用");
     841 ((*w2).shoupai)[x].Kanpai();
     842 printf("对象是");
     843 (*p).Kanpai();
     844 (*p)=((*w2).shoupai)[x];
     845 qipaidui[*qipaishu]=((*w2).shoupai)[x];
     846 for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
     847 ((*w2).shoupaishu)--;
     848 (*qipaishu)++;
     849 (*w2).Kanshoupai();
     850 a++;
     851 break;
     852 }
     853 else printf("你确定你使用的是【无懈可击】?\n");
     854 }
     855 }
     856 return a;
     857 }
     858 int Qiutao(wujiang*w,pai qipaidui[104],int*qipaishu)
     859 {
     860 int x;
     861 if((*w).juese)
     862 {
     863 for(;;)
     864 {
     865 printf("如果要使用【桃】请输入手牌之前的编号,不需要请输入“-1”,以回车结束!\n");
     866 scanf("%d",&x);
     867 if(x==-1)
     868 {
     869 return -1;
     870 break;
     871 }
     872 else if((*w).shoupai[x].leixing==103)
     873 {
     874 qipaidui[*qipaishu]=((*w).shoupai)[x];
     875 for(int i=x+1;i<=((*w).shoupaishu);i++)((*w).shoupai)[i-1]=((*w).shoupai)[i];
     876 ((*w).shoupaishu)--;
     877 (*qipaishu)++;
     878 return 0;
     879 break;
     880 }
     881 else printf("你确定你使用的是【桃】?\n");
     882 }
     883 }
     884 else
     885 {
     886 for(x=0;x<((*w).shoupaishu);x++)
     887 {
     888 if((*w).shoupai[x].leixing==103)
     889 {
     890 qipaidui[*qipaishu]=((*w).shoupai)[x];
     891 for(int i=x+1;i<=((*w).shoupaishu);i++)((*w).shoupai)[i-1]=((*w).shoupai)[i];
     892 ((*w).shoupaishu)--;
     893 (*qipaishu)++;
     894 return 0;
     895 break;
     896 }
     897 }
     898 return -1;
     899 }
     900 }
     901 int Binsi(wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu)
     902 {
     903 if(((*w2).tili)>0)return 0;
     904 else
     905 {
     906 int i;
     907 if((*w1).juese)
     908 {
     909 for(;;)
     910 {
     911 printf("电脑濒死,是否使用【桃】?\n");
     912 i=Qiutao(w1,qipaidui,qipaishu);
     913 if(i==0)((*w2).tili)++;
     914 if((i==-1)||((*w2).tili>0))break;
     915 }
     916 if((*w2).tili>0)return 0;
     917 else
     918 {
     919 for(;;)
     920 {
     921 i=Qiutao(w2,qipaidui,qipaishu);
     922 if(i==0)((*w2).tili)++;
     923 if((i==-1)||((*w2).tili>0))break;
     924 }
     925 if((*w2).tili>0)return 0;
     926 else return -1;
     927 }
     928 }
     929 else
     930 {
     931 for(;;)
     932 {
     933 printf("玩家濒死,是否使用【桃】?\n");
     934 i=Qiutao(w2,qipaidui,qipaishu);
     935 if(i==0)((*w2).tili)++;
     936 if((i==-1)||((*w2).tili>0))break;
     937 }
     938 if((*w2).tili>0)return 0;
     939 else return -1;
     940 }
     941 }
     942 }
     943 int Shan(wujiang*w1,wujiang*w2,pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)
     944 {
     945 int x;
     946 if((*w2).juese)
     947 {
     948 if(((*w2).zhuangbei[1].leixing==331)&&((*w1).zhuangbei[0].leixing!=303))
     949 {
     950 for(;;)
     951 {
     952 int m;
     953 printf("是否发动【八卦阵】防具效果?\n0 否\n1 是\n请输入选项之前的编号,以回车结束!\n");
     954 scanf("%d",&m);
     955 if(m==1)
     956 {
     957 Panding(paidui,paiduishu,qipaidui,qipaishu);
     958 if(qipaidui[(*qipaishu)-1].huase%2)
     959 {
     960 printf("【八卦阵】判定成功!\n");
     961 return 0;
     962 }
     963 }
     964 else if(m==0)
     965 {
     966 printf("【八卦阵】判定失败!\n");
     967 break;
     968 }
     969 else printf("你确定你输入的是“0”或“1”?\n");
     970 }
     971 }
     972 else if(((*w2).zhuangbei[1].leixing==331)&&((*w1).zhuangbei[0].leixing==303))printf("【青釭剑】锁定技被触发!\n");
     973 for(;;)
     974 {
     975 printf("请输入手牌之前的编号,或者输入“-1”放弃打出【闪】,以回车结束!\n");
     976 scanf("%d",&x);
     977 if(x==-1)
     978 {
     979 return -1;
     980 break;
     981 }
     982 else if((*w2).shoupai[x].leixing==102)
     983 {
     984 printf("玩家打出");
     985 ((*w2).shoupai)[x].Kanpai();
     986 qipaidui[*qipaishu]=((*w2).shoupai)[x];
     987 for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
     988 ((*w2).shoupaishu)--;
     989 (*qipaishu)++;
     990 return 0;
     991 break;
     992 }
     993 else printf("你确定你打出的是【闪】?\n");
     994 }
     995 }
     996 else
     997 {
     998 if(((*w2).zhuangbei[1].leixing==331)&&((*w1).zhuangbei[0].leixing!=303))
     999 {
    1000 Panding(paidui,paiduishu,qipaidui,qipaishu);
    1001 if(qipaidui[(*qipaishu)-1].huase%2)
    1002 {
    1003 printf("【八卦阵】判定成功!\n");
    1004 return 0;
    1005 }
    1006 else printf("【八卦阵】判定失败!\n");
    1007 }
    1008 else if(((*w2).zhuangbei[1].leixing==331)&&((*w1).zhuangbei[0].leixing==303))printf("【青釭剑】锁定技被触发!\n");
    1009 int i;
    1010 for(x=0;x<((*w2).shoupaishu);x++)
    1011 {
    1012 if((*w2).shoupai[x].leixing==102)
    1013 {
    1014 printf("电脑打出");
    1015 ((*w2).shoupai)[x].Kanpai();
    1016 qipaidui[*qipaishu]=((*w2).shoupai)[x];
    1017 for(i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    1018 ((*w2).shoupaishu)--;
    1019 (*qipaishu)++;
    1020 return 0;
    1021 break;
    1022 }
    1023 }
    1024 return -1;
    1025 }
    1026 }
    1027 int Sha(wujiang *w1,wujiang*w2,pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)
    1028 {
    1029 int x;
    1030 if((*w2).juese)
    1031 {
    1032 printf("请打出【闪】响应【杀】!否则你将受到1点伤害!\n");
    1033 x=Shan(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
    1034 if(x==-1)
    1035 {
    1036 int i;
    1037 ((*w2).tili)--;
    1038 printf("电脑对玩家造成1点伤害!\n");
    1039 i=Binsi(w1,w2,qipaidui,qipaishu);
    1040 return i;
    1041 }
    1042 else if(x==0&&((*w1).zhuangbei[0].leixing==306))
    1043 {
    1044 int i;
    1045 if(((*w1).shoupaishu)>=2)
    1046 {
    1047 printf("电脑弃掉:\n");
    1048 ((*w1).shoupai)[0].Kanpai();
    1049 qipaidui[*qipaishu]=((*w1).shoupai)[0];
    1050 for(i=1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    1051 ((*w1).shoupaishu)--;
    1052 (*qipaishu)++;
    1053 ((*w1).shoupai)[0].Kanpai();
    1054 qipaidui[*qipaishu]=((*w1).shoupai)[0];
    1055 for(i=1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    1056 ((*w1).shoupaishu)--;
    1057 (*qipaishu)++;
    1058 printf("发动【贯石斧】武器效果使【杀】造成伤害!\n");
    1059 ((*w2).tili)--;
    1060 i=Binsi(w1,w2,qipaidui,qipaishu);
    1061 return i;
    1062 }
    1063 else return 0;
    1064 }
    1065 else if(x==0&&((*w1).zhuangbei[0].leixing==304))
    1066 {
    1067 int i;
    1068 for(x=0;x<((*w1).shoupaishu);x++)
    1069 {
    1070 if((*w1).shoupai[x].leixing==101)
    1071 {
    1072 printf("电脑发动【青龙偃月刀】效果对玩家使用");
    1073 ((*w1).shoupai)[x].Kanpai();
    1074 qipaidui[*qipaishu]=((*w1).shoupai)[x];
    1075 for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    1076 ((*w1).shoupaishu)--;
    1077 (*qipaishu)++;
    1078 i=Sha(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
    1079 return i;
    1080 break;
    1081 }
    1082 }
    1083 return 0;
    1084 }
    1085 }
    1086 else//往上是玩家被使用【杀】 往下是电脑被使用【杀】
    1087 {
    1088 x=Shan(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
    1089 if(x==-1)
    1090 {
    1091 if((*w1).zhuangbei[0].leixing==308)
    1092 {
    1093 for(;;)
    1094 {
    1095 printf("是否发动【麒麟弓】武器效果?\n0 否\n1 是\n");
    1096 scanf("%d",&x);
    1097 if(x==1)
    1098 {
    1099 if(((*w2).zhuangbei[2].leixing==-1)&&((*w2).zhuangbei[3].leixing==-1))
    1100 {
    1101 printf("电脑根本没有马,射你妹的马啊!\n");
    1102 break;
    1103 }
    1104 else
    1105 {
    1106 for(;;)
    1107 {
    1108 printf("0 ");
    1109 ((*w2).zhuangbei[2]).Kanpai();
    1110 printf("1 ");
    1111 ((*w2).zhuangbei[3]).Kanpai();
    1112 printf("请选择要弃掉的马,输入之前的编号,以回车结束!\n");
    1113 scanf("%d",&x);
    1114 if((x==0)&&((*w2).zhuangbei[2].leixing!=-1))
    1115 {
    1116 printf("你弃掉了电脑的");
    1117 ((*w2).zhuangbei)[2].Kanpai();
    1118 qipaidui[*qipaishu]=((*w2).zhuangbei)[2];
    1119 ((*w2).zhuangbeishu)--;
    1120 (*qipaishu)++;
    1121 ((*w2).zhuangbei)[2].leixing=-1;
    1122 ((*w2).juli[0])++;
    1123 break;
    1124 }
    1125 else if((x==1)&&((*w2).zhuangbei[3].leixing!=-1))
    1126 {
    1127 printf("你弃掉了电脑的");
    1128 ((*w2).zhuangbei)[3].Kanpai();
    1129 qipaidui[*qipaishu]=((*w2).zhuangbei)[3];
    1130 ((*w2).zhuangbeishu)--;
    1131 (*qipaishu)++;
    1132 ((*w2).zhuangbei)[3].leixing=-1;
    1133 ((*w1).juli[0])--;
    1134 break;
    1135 }
    1136 else printf("射你妹的马!");
    1137 }
    1138 break;
    1139 }
    1140 }
    1141 else if(x==0)break;
    1142 else printf("键盘上的“0”和“1”被你吃了吗?\n");
    1143 }
    1144 }
    1145 int i;
    1146 ((*w2).tili)--;
    1147 printf("玩家对电脑造成1点伤害!\n");
    1148 i=Binsi(w1,w2,qipaidui,qipaishu);
    1149 return i;
    1150 }
    1151 else if(x==0&&((*w1).zhuangbei[0].leixing==306))
    1152 {
    1153 for(;;)
    1154 {
    1155 printf("是否发动【贯石斧】武器效果?\n0 否\n1 是\n");
    1156 scanf("%d",&x);
    1157 if(x==1)
    1158 {
    1159 int i;
    1160 if((*w1).shoupaishu+(*w1).zhuangbeishu<=2)
    1161 {
    1162 printf("你除了【贯石斧】以外连2张牌都没有,发动你妹的效果!\n");
    1163 break;
    1164 }
    1165 else
    1166 {
    1167 printf("请分别弃掉两张牌!\n");
    1168 for(i=0;i<=2;i++)
    1169 {
    1170 for(;;)
    1171 {
    1172 printf("请选择区域:\n0 手牌\n1 装备\n");
    1173 scanf("%d",&x);
    1174 if(x==0&&((*w1).shoupaishu==0))printf("你根本没有手牌,弃你妹啊!\n");
    1175 else if(x==1&&((*w1).zhuangbeishu==1))printf("你根本没有别的装备,弃你妹啊!\n");
    1176 else if(x>=0&&x<=1)break;
    1177 else printf("键盘上的“0”和“1”被你吃了吗?\n");
    1178 }
    1179 if(x==0)
    1180 {
    1181 for(;;)
    1182 {
    1183 (*w1).Kanshoupai();
    1184 printf("弃牌请输入手牌之前的编号,以回车结束!\n");
    1185 scanf("%d",&x);
    1186 if(x>=0&&x<((*w1).shoupaishu))break;
    1187 else printf("弃你妹的手牌!\n");
    1188 }
    1189 printf("你弃掉了");
    1190 ((*w1).shoupai)[x].Kanpai();
    1191 qipaidui[*qipaishu]=((*w1).shoupai)[x];
    1192 for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    1193 ((*w1).shoupaishu)--;
    1194 (*qipaishu)++;
    1195 }
    1196 else
    1197 {
    1198 for(;;)
    1199 {
    1200 (*w1).Kanzhuangbei();
    1201 printf("请输入装备之前的编号,以回车键结束!\n");
    1202 scanf("%d",&x);
    1203 if((((*w1).zhuangbei[x]).leixing!=-1)&&(x>=0)&&(x<=3))
    1204 {
    1205 printf("你弃掉了");
    1206 ((*w1).zhuangbei)[x].Kanpai();
    1207 qipaidui[*qipaishu]=((*w1).zhuangbei)[x];
    1208 ((*w1).zhuangbeishu)--;
    1209 (*qipaishu)++;
    1210 ((*w1).zhuangbei)[x].leixing=-1;
    1211 break;
    1212 }
    1213 else printf("弃你妹的装备!\n");
    1214 }
    1215 }
    1216 }
    1217 }
    1218 printf("玩家发动【贯石斧】武器效果使【杀】造成伤害!\n");
    1219 ((*w2).tili)--;
    1220 i=Binsi(w1,w2,qipaidui,qipaishu);
    1221 return i;
    1222 break;
    1223 }
    1224 else if(x==0)break;
    1225 else printf("键盘上的“0”和“1”被你吃了吗?\n");
    1226 }
    1227 }
    1228 else if(x==0&&((*w1).zhuangbei[0].leixing==304))
    1229 {
    1230 for(;;)
    1231 {
    1232 printf("是否发动【青龙偃月刀】武器效果?\n0 否\n1 是\n");
    1233 scanf("%d",&x);
    1234 if(x==1)
    1235 {
    1236 for(;;)
    1237 {
    1238 printf("请对电脑使用一张【杀】!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
    1239 (*w1).Kanshoupai();
    1240 scanf("%d",&x);
    1241 if(x==-1)
    1242 {
    1243 return 0;
    1244 break;
    1245 }
    1246 else if((*w1).shoupai[x].leixing==101)
    1247 {
    1248 int i;
    1249 printf("玩家对电脑使用");
    1250 ((*w1).shoupai)[x].Kanpai();
    1251 qipaidui[*qipaishu]=((*w1).shoupai)[x];
    1252 for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    1253 ((*w1).shoupaishu)--;
    1254 (*qipaishu)++;
    1255 i=Sha(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
    1256 return i;
    1257 break;
    1258 }
    1259 else printf("你确定你打出的是【杀】?\n");
    1260 }
    1261 }
    1262 else if(x==0)
    1263 {
    1264 return 0;
    1265 break;
    1266 }
    1267 else printf("你确定你输入的是“0”或“1”?\n");
    1268 }
    1269 }
    1270 else return 0;
    1271 }
    1272 return 0;
    1273 }
    1274 void Tao(wujiang*w1)//【桃】函数
    1275 {
    1276 ((*w1).tili)++;
    1277 if((*w1).juese)printf("玩家");
    1278 else printf("电脑");
    1279 printf("恢复了1点体力!\n");
    1280 if(((*w1).tili)>((*w1).tilishangxian))printf("你被撑死了!\n");
    1281 }
    1282 void Chai(wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu)
    1283 {
    1284 int i,x,y;
    1285 if((*w1).juese)
    1286 {
    1287 for(;;)
    1288 {
    1289 if((*w2).shoupaishu+(*w2).zhuangbeishu+(*w2).pandingshu==0)
    1290 {
    1291 printf("对方空城,拆你妹啊!\n");
    1292 break;
    1293 }
    1294 else
    1295 {
    1296 printf("请选择想拆的区域,输入选项之前的编号,以回车结束!\n0 手牌\n1 装备区\n2 判定区\n");
    1297 scanf("%d",&x);
    1298 if(x==0&&((*w2).shoupaishu==0))printf("你拆掉了一张空气!\n");
    1299 else if(x==1&&((*w2).zhuangbeishu==0))printf("你拆掉了一张空气!\n");
    1300 else if(x==2&&((*w2).pandingshu==0))printf("你拆掉了一张空气!\n");
    1301 else if(x>=0&&x<=2)break;
    1302 else printf("你拆掉了太空区里的一张牌!\n");
    1303 }
    1304 }
    1305 switch(x)
    1306 {
    1307 case 0:
    1308 srand((unsigned)time(NULL));
    1309 y=rand()%((*w2).shoupaishu);
    1310 printf("你弃掉了电脑的");
    1311 ((*w2).shoupai)[y].Kanpai();
    1312 qipaidui[*qipaishu]=((*w2).shoupai)[y];
    1313 for(i=y+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    1314 ((*w2).shoupaishu)--;
    1315 (*qipaishu)++;
    1316 break;
    1317 case 1:
    1318 for(;;)
    1319 {
    1320 (*w2).Kanzhuangbei();
    1321 printf("请输入装备之前的编号,以回车键结束!\n");
    1322 scanf("%d",&y);
    1323 if((((*w2).zhuangbei[y]).leixing!=-1)&&(y>=0)&&(y<=3))
    1324 {
    1325 printf("你弃掉了电脑的");
    1326 ((*w2).zhuangbei)[y].Kanpai();
    1327 qipaidui[*qipaishu]=((*w2).zhuangbei)[y];
    1328 ((*w2).zhuangbeishu)--;
    1329 (*qipaishu)++;
    1330 ((*w2).zhuangbei)[y].leixing=-1;
    1331 if(!y)((*w2).zhuangbei)[y].changdu=1;
    1332 else if(y==2)((*w2).juli[0])++;
    1333 else if(y==3)((*w1).juli[0])--;
    1334 break;
    1335 }
    1336 else printf("你弃掉了一张空气!\n");
    1337 }
    1338 break;
    1339 case 2:
    1340 for(;;)
    1341 {
    1342 (*w2).Kanpandingpai();
    1343 printf("请输入判定牌之前的编号,以回车键结束!\n");
    1344 scanf("%d",&y);
    1345 if((*w2).pandingpai[y].leixing!=-1)
    1346 {
    1347 printf("你弃掉了电脑的");
    1348 ((*w2).pandingpai)[y].Kanpai();
    1349 qipaidui[*qipaishu]=((*w2).pandingpai)[y];
    1350 ((*w2).pandingshu)--;
    1351 (*qipaishu)++;
    1352 ((*w2).pandingpai)[y].leixing=-1;
    1353 break;
    1354 }
    1355 else printf("你弃掉了一张空气!\n");
    1356 }
    1357 break;
    1358 default:break;
    1359 }
    1360 }
    1361 else
    1362 {
    1363 if((*w2).zhuangbeishu)
    1364 {
    1365 if((*w2).zhuangbei[1].leixing!=-1)
    1366 {
    1367 printf("电脑弃掉了玩家的");
    1368 ((*w2).zhuangbei)[1].Kanpai();
    1369 qipaidui[*qipaishu]=((*w2).zhuangbei)[1];
    1370 ((*w2).zhuangbeishu)--;
    1371 (*qipaishu)++;
    1372 ((*w2).zhuangbei)[1].leixing=-1;
    1373 }
    1374 else if((*w2).zhuangbei[3].leixing!=-1)
    1375 {
    1376 printf("电脑弃掉了玩家的");
    1377 ((*w2).zhuangbei)[3].Kanpai();
    1378 qipaidui[*qipaishu]=((*w2).zhuangbei)[3];
    1379 ((*w2).zhuangbeishu)--;
    1380 (*qipaishu)++;
    1381 ((*w2).zhuangbei)[3].leixing=-1;
    1382 ((*w1).juli[0])--;
    1383 }
    1384 else if((*w2).zhuangbei[0].leixing!=-1)
    1385 {
    1386 printf("电脑弃掉了玩家的");
    1387 ((*w2).zhuangbei)[0].Kanpai();
    1388 qipaidui[*qipaishu]=((*w2).zhuangbei)[0];
    1389 ((*w2).zhuangbeishu)--;
    1390 (*qipaishu)++;
    1391 ((*w2).zhuangbei)[0].leixing=-1;
    1392 ((*w2).zhuangbei)[0].changdu=1;
    1393 }
    1394 else
    1395 {
    1396 printf("电脑弃掉了玩家的");
    1397 ((*w2).zhuangbei)[2].Kanpai();
    1398 qipaidui[*qipaishu]=((*w2).zhuangbei)[2];
    1399 ((*w2).zhuangbeishu)--;
    1400 (*qipaishu)++;
    1401 ((*w2).zhuangbei)[2].leixing=-1;
    1402 ((*w2).juli[0])++;
    1403 }
    1404 }
    1405 else
    1406 {
    1407 srand((unsigned)time(NULL));
    1408 y=rand()%((*w2).shoupaishu);
    1409 printf("电脑弃掉了玩家的手牌");
    1410 ((*w2).shoupai)[y].Kanpai();
    1411 qipaidui[*qipaishu]=((*w2).shoupai)[y];
    1412 for(i=y+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    1413 ((*w2).shoupaishu)--;
    1414 (*qipaishu)++;
    1415 }
    1416 }
    1417 }
    1418 void Qian(wujiang *w1,wujiang *w2)
    1419 {
    1420 int i,x,y;
    1421 if((*w1).juese)
    1422 {
    1423 for(;;)
    1424 {
    1425 if((*w2).shoupaishu+(*w2).zhuangbeishu+(*w2).pandingshu==0)
    1426 {
    1427 printf("对方空城啦!你牵走了一张寂寞!\n");
    1428 break;
    1429 }
    1430 else
    1431 {
    1432 printf("请选择想牵的区域,输入选项之前的编号,以回车结束!\n0 手牌\n1 装备区\n2 判定区\n");
    1433 scanf("%d",&x);
    1434 if(x==0&&((*w2).shoupaishu==0))printf("你牵走了一张空气!\n");
    1435 else if(x==1&&((*w2).zhuangbeishu==0))printf("你牵走了一张空气!\n");
    1436 else if(x==2&&((*w2).pandingshu==0))printf("你牵走了一张空气!\n");
    1437 else if(x>=0&&x<=2)break;
    1438 else printf("你牵走了太空区里的一张牌!\n");
    1439 }
    1440 }
    1441 switch(x)
    1442 {
    1443 case 0:
    1444 srand((unsigned)time(NULL));
    1445 y=rand()%((*w2).shoupaishu);
    1446 printf("你牵走了电脑的");
    1447 ((*w2).shoupai)[y].Kanpai();
    1448 (*w1).shoupai[(*w1).shoupaishu]=((*w2).shoupai)[y];
    1449 for(i=y+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    1450 ((*w2).shoupaishu)--;
    1451 ((*w1).shoupaishu)++;
    1452 break;
    1453 case 1:
    1454 for(;;)
    1455 {
    1456 (*w2).Kanzhuangbei();
    1457 printf("请输入装备之前的编号,以回车键结束!\n");
    1458 scanf("%d",&y);
    1459 if((((*w2).zhuangbei[y]).leixing!=-1)&&(y>=0)&&(y<=3))
    1460 {
    1461 printf("你牵走了电脑的");
    1462 ((*w2).zhuangbei)[y].Kanpai();
    1463 (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[y];
    1464 ((*w2).zhuangbeishu)--;
    1465 ((*w1).shoupaishu)++;
    1466 ((*w2).zhuangbei)[y].leixing=-1;
    1467 if(!y)((*w2).zhuangbei[y]).changdu=1;
    1468 else if(y==2)((*w2).juli[0])++;
    1469 else if(y==3)((*w1).juli[0])--;
    1470 break;
    1471 }
    1472 else printf("你弃掉了一张空气!\n");
    1473 }
    1474 break;
    1475 case 2:
    1476 for(;;)
    1477 {
    1478 (*w2).Kanpandingpai();
    1479 printf("请输入判定牌之前的编号,以回车键结束!\n");
    1480 scanf("%d",&y);
    1481 if((*w2).pandingpai[y].leixing!=-1)
    1482 {
    1483 printf("你牵走了电脑的");
    1484 ((*w2).pandingpai)[y].Kanpai();
    1485 (*w1).shoupai[(*w1).shoupaishu]=((*w2).pandingpai)[y];
    1486 ((*w2).pandingshu)--;
    1487 ((*w1).shoupaishu)++;
    1488 ((*w2).pandingpai)[y].leixing=-1;
    1489 break;
    1490 }
    1491 else printf("你牵走了一张空气!\n");
    1492 }
    1493 break;
    1494 default:break;
    1495 }
    1496 }
    1497 else
    1498 {
    1499 if((*w2).zhuangbeishu)
    1500 {
    1501 if((*w2).zhuangbei[1].leixing!=-1)
    1502 {
    1503 printf("电脑牵走了玩家的");
    1504 ((*w2).zhuangbei)[1].Kanpai();
    1505 (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[1];
    1506 ((*w2).zhuangbeishu)--;
    1507 ((*w1).shoupaishu)++;
    1508 ((*w2).zhuangbei)[1].leixing=-1;
    1509 }
    1510 else if((*w2).zhuangbei[3].leixing!=-1)
    1511 {
    1512 printf("电脑牵走了玩家的");
    1513 ((*w2).zhuangbei)[3].Kanpai();
    1514 (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[3];
    1515 ((*w2).zhuangbeishu)--;
    1516 ((*w1).shoupaishu)++;
    1517 ((*w2).zhuangbei)[3].leixing=-1;
    1518 ((*w1).juli[0])--;
    1519 }
    1520 else if((*w2).zhuangbei[0].leixing!=-1)
    1521 {
    1522 printf("电脑牵走了玩家的");
    1523 ((*w2).zhuangbei)[0].Kanpai();
    1524 (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[0];
    1525 ((*w2).zhuangbeishu)--;
    1526 ((*w1).shoupaishu)++;
    1527 ((*w2).zhuangbei)[0].leixing=-1;
    1528 ((*w2).zhuangbei)[0].changdu=1;
    1529 }
    1530 else
    1531 {
    1532 printf("电脑牵走了玩家的");
    1533 ((*w2).zhuangbei)[2].Kanpai();
    1534 (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[2];
    1535 ((*w2).zhuangbeishu)--;
    1536 ((*w1).shoupaishu)++;
    1537 ((*w2).zhuangbei)[2].leixing=-1;
    1538 ((*w2).juli[0])--;
    1539 }
    1540 }
    1541 else
    1542 {
    1543 srand((unsigned)time(NULL));
    1544 y=rand()%((*w2).shoupaishu);
    1545 printf("电脑牵走了玩家的手牌");
    1546 ((*w2).shoupai)[y].Kanpai();
    1547 (*w1).shoupai[(*w1).shoupaishu]=((*w2).shoupai)[y];
    1548 for(i=y+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    1549 ((*w2).shoupaishu)--;
    1550 ((*w1).shoupaishu)++;
    1551 }
    1552 }
    1553 }
    1554 void Wuzhong(wujiang*w1,pai A[104],int *x,pai B[104],int*y)
    1555 {
    1556 Mopai(&((*w1).shoupaishu),(*w1).shoupai,A,x,B,y,(*w1).juese);
    1557 }
    1558 int Juedou(wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu)
    1559 {
    1560 int i,j,x;
    1561 if((*w1).juese)
    1562 {
    1563 for(;;)
    1564 {
    1565 j=0;
    1566 for(x=0;x<((*w2).shoupaishu);x++)
    1567 {
    1568 if((*w2).shoupai[x].leixing==101)
    1569 {
    1570 printf("电脑打出");
    1571 ((*w2).shoupai)[x].Kanpai();
    1572 qipaidui[*qipaishu]=((*w2).shoupai)[x];
    1573 for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    1574 ((*w2).shoupaishu)--;
    1575 (*qipaishu)++;
    1576 j=1;
    1577 break;
    1578 }
    1579 }
    1580 if(!j)
    1581 {
    1582 printf("玩家对电脑造成1点伤害!\n");
    1583 ((*w2).tili)--;
    1584 i=Binsi(w1,w2,qipaidui,qipaishu);
    1585 return i;
    1586 break;
    1587 }
    1588 j=0;
    1589 for(;;)
    1590 {
    1591 printf("请打出一张【杀】响应【决斗】,否则你将受到1点伤害!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
    1592 if(((*w1).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
    1593 (*w1).Kanshoupai();
    1594 scanf("%d",&x);
    1595 if(x==-1)
    1596 {
    1597 int i;
    1598 ((*w1).tili)--;
    1599 printf("电脑对玩家造成1点伤害!\n");
    1600 i=Binsi(w2,w1,qipaidui,qipaishu);
    1601 return i;
    1602 break;
    1603 }
    1604 else if(((*w1).zhuangbei[0].leixing==305)&&x==100)
    1605 {
    1606 pai p=Zhangba(w1,qipaidui,qipaishu);
    1607 p.paifu=-1;
    1608 printf("打出!\n");
    1609 j=1;
    1610 break;
    1611 }
    1612 else if((*w1).shoupai[x].leixing==101)
    1613 {
    1614 printf("玩家打出");
    1615 ((*w1).shoupai)[x].Kanpai();
    1616 qipaidui[*qipaishu]=((*w1).shoupai)[x];
    1617 for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    1618 ((*w1).shoupaishu)--;
    1619 (*qipaishu)++;
    1620 j=1;
    1621 break;
    1622 }
    1623 else printf("你确定你打出的是【杀】?\n");
    1624 }
    1625 }
    1626 }
    1627 else
    1628 {
    1629 for(;;)
    1630 {
    1631 j=0;
    1632 for(;;)
    1633 {
    1634 printf("请打出一张【杀】响应【决斗】,否则你将受到1点伤害!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
    1635 if(((*w1).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
    1636 (*w2).Kanshoupai();
    1637 scanf("%d",&x);
    1638 if(x==-1)
    1639 {
    1640 int i;
    1641 ((*w2).tili)--;
    1642 printf("电脑对玩家造成1点伤害!\n");
    1643 i=Binsi(w1,w2,qipaidui,qipaishu);
    1644 return i;
    1645 break;
    1646 }
    1647 else if(((*w2).zhuangbei[0].leixing==305)&&x==100)
    1648 {
    1649 pai p=Zhangba(w2,qipaidui,qipaishu);
    1650 p.paifu=-1;
    1651 printf("打出!\n");
    1652 j=1;
    1653 break;
    1654 }
    1655 else if((*w2).shoupai[x].leixing==101)
    1656 {
    1657 printf("玩家打出");
    1658 ((*w2).shoupai)[x].Kanpai();
    1659 qipaidui[*qipaishu]=((*w2).shoupai)[x];
    1660 for(i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    1661 ((*w2).shoupaishu)--;
    1662 (*qipaishu)++;
    1663 j=1;
    1664 break;
    1665 }
    1666 else printf("你确定你打出的是【杀】?\n");
    1667 }
    1668 j=0;
    1669 for(x=0;x<((*w1).shoupaishu);x++)
    1670 {
    1671 if((*w1).shoupai[x].leixing==101)
    1672 {
    1673 printf("电脑打出");
    1674 ((*w1).shoupai)[x].Kanpai();
    1675 qipaidui[*qipaishu]=((*w1).shoupai)[x];
    1676 for(int i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    1677 ((*w1).shoupaishu)--;
    1678 (*qipaishu)++;
    1679 j=1;
    1680 break;
    1681 }
    1682 }
    1683 if(!j)
    1684 {
    1685 printf("玩家对电脑造成1点伤害!\n");
    1686 ((*w2).tili)--;
    1687 i=Binsi(w2,w1,qipaidui,qipaishu);
    1688 return i;
    1689 break;
    1690 }
    1691 }
    1692 }
    1693 }
    1694 int Jiedao(wujiang*w1,wujiang*w2,pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)
    1695 {
    1696 int i,j=0,x;
    1697 if((*w1).juese)
    1698 {
    1699 for(x=0;x<((*w2).shoupaishu);x++)
    1700 {
    1701 if((*w2).shoupai[x].leixing==101)
    1702 {
    1703 printf("电脑对玩家使用");
    1704 ((*w2).shoupai)[x].Kanpai();
    1705 qipaidui[*qipaishu]=((*w2).shoupai)[x];
    1706 for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    1707 ((*w2).shoupaishu)--;
    1708 (*qipaishu)++;
    1709 j=1;
    1710 break;
    1711 }
    1712 }
    1713 if(j)
    1714 {
    1715 i=Sha(w2,w1,paidui,paiduishu,qipaidui,qipaishu);
    1716 return i;
    1717 printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
    1718 }
    1719 else
    1720 {
    1721 printf("电脑放弃使用【杀】,玩家获得电脑的武器");
    1722 (*w2).zhuangbei[0].Kanpai();
    1723 (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[0];
    1724 ((*w2).zhuangbeishu)--;
    1725 ((*w1).shoupaishu)++;
    1726 ((*w2).zhuangbei)[0].leixing=-1;
    1727 ((*w2).zhuangbei)[0].changdu=1;
    1728 (*w1).Kanshoupai();
    1729 return 0;
    1730 }
    1731 }
    1732 else
    1733 {
    1734 for(;;)
    1735 {
    1736 printf("请对电脑使用一张【杀】,否则电脑将获得你的武器!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
    1737 if(((*w2).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
    1738 (*w2).Kanshoupai();
    1739 scanf("%d",&x);
    1740 if(x==-1)break;
    1741 else if(((*w2).zhuangbei[0].leixing==305)&&x==100)
    1742 {
    1743 pai p=Zhangba(w2,qipaidui,qipaishu);
    1744 p.paifu=-1;
    1745 printf("使用!\n");
    1746 j=1;
    1747 break;
    1748 }
    1749 else if((*w2).shoupai[x].leixing==101)
    1750 {
    1751 printf("玩家对电脑使用");
    1752 ((*w2).shoupai)[x].Kanpai();
    1753 qipaidui[*qipaishu]=((*w2).shoupai)[x];
    1754 for(i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    1755 ((*w2).shoupaishu)--;
    1756 (*qipaishu)++;
    1757 j=1;
    1758 break;
    1759 }
    1760 else printf("你确定你使用的是【杀】?\n");
    1761 }
    1762 if(j)
    1763 {
    1764 i=Sha(w2,w1,paidui,paiduishu,qipaidui,qipaishu);
    1765 return i;
    1766 printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
    1767 }
    1768 else
    1769 {
    1770 printf("玩家放弃使用【杀】,电脑获得玩家的武器");
    1771 ((*w2).zhuangbei)[0].Kanpai();
    1772 (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[0];
    1773 ((*w2).zhuangbeishu)--;
    1774 ((*w1).shoupaishu)++;
    1775 ((*w2).zhuangbei)[0].leixing=-1;
    1776 ((*w2).zhuangbei)[0].changdu=1;
    1777 return 0;
    1778 }
    1779 }
    1780 }
    1781 void Taoyuan(wujiang*w)
    1782 {
    1783 if((*w).tili<(*w).tilishangxian)
    1784 {
    1785 ((*w).tili)++;
    1786 if((*w).juese)printf("玩家");
    1787 else printf("电脑");
    1788 printf("恢复1点体力!\n");
    1789 }
    1790 }
    1791 void Kaipai(pai paidui[104],int* paiduishu,int renshu,pai wugu[10])
    1792 {
    1793 int i;
    1794 printf("五谷丰登开牌:\n");
    1795 for(i=1;i<=renshu;i++)
    1796 {
    1797 wugu[i-1]=paidui[104-(*paiduishu)];
    1798 (*paiduishu)--;
    1799 printf("%d ",i-1);
    1800 wugu[i-1].Kanpai();
    1801 }
    1802 }
    1803 void Qupai(pai wugu[10],wujiang*w)
    1804 {
    1805 int i,x;
    1806 printf("五谷丰登开牌:\n");
    1807 for(i=0;(wugu[i].leixing)!=-1;i++)
    1808 {
    1809 printf("%d ",i);
    1810 wugu[i].Kanpai();
    1811 }
    1812 if((*w).juese)
    1813 {
    1814 for(;;)
    1815 {
    1816 printf("请选择你想要的卡牌,输入卡牌之前的编号,以回车结束!\n");
    1817 scanf("%d",&x);
    1818 if(wugu[x].leixing!=-1)
    1819 {
    1820 printf("玩家选择");
    1821 wugu[x].Kanpai();
    1822 (*w).shoupai[(*w).shoupaishu]=wugu[x];
    1823 ((*w).shoupaishu)++;
    1824 for(i=x+1;i<=9;i++)wugu[i-1]=wugu[i];
    1825 wugu[9].leixing=-1;
    1826 break;
    1827 }
    1828 printf("你选择了一张空气加入手牌!");
    1829 }
    1830 }
    1831 else
    1832 {
    1833 printf("电脑选择");
    1834 wugu[0].Kanpai();
    1835 (*w).shoupai[(*w).shoupaishu]=wugu[0];
    1836 ((*w).shoupaishu)++;
    1837 for(i=1;i<=9;i++)wugu[i-1]=wugu[i];
    1838 wugu[9].leixing=-1;
    1839 }
    1840 }
    1841 void Rengpai(pai wugu[10],pai qipaidui[104],int*qipaishu)
    1842 {
    1843 int i;
    1844 for(i=0;wugu[i].leixing!=-1;i++)
    1845 {
    1846 qipaidui[*qipaishu]=wugu[i];
    1847 (*qipaishu)++;
    1848 wugu[i].leixing=-1;
    1849 }
    1850 }
    1851 int Nanman(wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu)
    1852 {
    1853 int i,x;
    1854 if((*w1).juese)
    1855 {
    1856 for(x=0;x<((*w2).shoupaishu);x++)
    1857 {
    1858 if((*w2).shoupai[x].leixing==101)
    1859 {
    1860 printf("电脑打出");
    1861 ((*w2).shoupai)[x].Kanpai();
    1862 qipaidui[*qipaishu]=((*w2).shoupai)[x];
    1863 for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    1864 ((*w2).shoupaishu)--;
    1865 (*qipaishu)++;
    1866 return 0;
    1867 break;
    1868 }
    1869 }
    1870 printf("玩家对电脑造成1点伤害!\n");
    1871 ((*w2).tili)--;
    1872 i=Binsi(w1,w2,qipaidui,qipaishu);
    1873 return i;
    1874 }
    1875 else
    1876 {
    1877 for(;;)
    1878 {
    1879 printf("请打出一张【杀】响应【南蛮入侵】,否则你将受到1点伤害!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
    1880 if(((*w2).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
    1881 (*w2).Kanshoupai();
    1882 scanf("%d",&x);
    1883 if(x==-1)
    1884 {
    1885 int i;
    1886 ((*w2).tili)--;
    1887 printf("电脑对玩家造成1点伤害!\n");
    1888 i=Binsi(w1,w2,qipaidui,qipaishu);
    1889 return i;
    1890 break;
    1891 }
    1892 else if(((*w2).zhuangbei[0].leixing==305)&&x==100)
    1893 {
    1894 pai p=Zhangba(w2,qipaidui,qipaishu);
    1895 p.paifu=-1;
    1896 printf("使用!\n");
    1897 return 0;
    1898 break;
    1899 }
    1900 else if((*w2).shoupai[x].leixing==101)
    1901 {
    1902 printf("玩家打出");
    1903 ((*w2).shoupai)[x].Kanpai();
    1904 qipaidui[*qipaishu]=((*w2).shoupai)[x];
    1905 for(i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    1906 ((*w2).shoupaishu)--;
    1907 (*qipaishu)++;
    1908 return 0;
    1909 break;
    1910 }
    1911 else printf("你确定你打出的是【杀】?\n");
    1912 }
    1913 }
    1914 }
    1915 int Wanjian(wujiang*w1,wujiang*w2,pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)
    1916 {
    1917 int i;
    1918 i=Shan(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
    1919 if(i==-1)
    1920 {
    1921 i=Binsi(w1,w2,qipaidui,qipaishu);
    1922 return i;
    1923 }
    1924 else return 0;
    1925 }
    1926 int Chupai(pai paidui[104],pai qipaidui[104],int *paiduishu,int*qipaishu,wujiang*w1,wujiang*w2,pai yuanshipaidui[2][4][13])
    1927 {
    1928 pai p1;
    1929 int sha=1;int y=-1,i,t=((*w1).shoupaishu)-1;
    1930 for(;;t--)
    1931 {
    1932 
    1933 if((*w1).juese)
    1934 {
    1935 printf("\n电脑当前手牌数:%d\n",((*w2).shoupaishu));
    1936 (*w2).Kanzhuangbei();
    1937 (*w1).Kanshoupai();
    1938 (*w1).Kanzhuangbei();
    1939 }
    1940 int j=0;
    1941 if((*w1).juese&&((*w1).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
    1942 y=Xuanpai(w1,t);
    1943 p1=Panpai(w1,&sha,y,qipaidui,qipaishu);
    1944 if((p1).leixing==-1)break;
    1945 else if((p1).leixing==0)continue;
    1946 else
    1947 {
    1948 int duixiang;
    1949 duixiang=Mubiao(p1,w1,w2,&sha);
    1950 if(duixiang==-2)continue;
    1951 else
    1952 {
    1953 Da1pai(w1,w2,qipaidui,qipaishu,y);
    1954 Miaoshu(p1,((*w1).juese),duixiang);
    1955 if(!((*w1).juese))
    1956 {
    1957 printf("\n电脑当前手牌数:%d\n",((*w1).shoupaishu));
    1958 (*w1).Kanzhuangbei();
    1959 (*w2).Kanshoupai();
    1960 (*w2).Kanzhuangbei();
    1961 }
    1962 switch(p1.leixing)
    1963 {
    1964 case 101:
    1965 i=Sha(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
    1966 if(i==-1){return -1;break;}
    1967 if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
    1968 else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
    1969 break;
    1970 case 103:
    1971 Tao(w1);
    1972 break;
    1973 case 201:
    1974 for(;;)
    1975 {
    1976 i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    1977 if(!i)break;
    1978 j++;
    1979 i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    1980 if(!i)break;
    1981 j++;
    1982 }
    1983 if(!(j%2))Chai(w1,w2,qipaidui,qipaishu);
    1984 else;
    1985 if((*w1).juese)(*w1).Kanshoupai();
    1986 break;
    1987 case 202:
    1988 for(;;)
    1989 {
    1990 i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    1991 if(!i)break;
    1992 j++;
    1993 i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    1994 if(!i)break;
    1995 j++;
    1996 }
    1997 if(!(j%2))Qian(w1,w2);
    1998 else;
    1999 if((*w1).juese)(*w1).Kanshoupai();
    2000 break;
    2001 case 203:
    2002 for(;;)
    2003 {
    2004 i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    2005 if(!i)break;
    2006 j++;
    2007 i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    2008 if(!i)break;
    2009 j++;
    2010 }
    2011 if(!(j%2))Wuzhong(w1,paidui,paiduishu,qipaidui,qipaishu);
    2012 else;
    2013 break;
    2014 case 204:
    2015 for(;;)
    2016 {
    2017 i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    2018 if(!i)break;
    2019 j++;
    2020 i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    2021 if(!i)break;
    2022 j++;
    2023 }
    2024 if(!(j%2))
    2025 {
    2026 i=Juedou(w1,w2,qipaidui,qipaishu);
    2027 if(i==-1)return -1;
    2028 if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
    2029 else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
    2030 }
    2031 break;
    2032 case 205:
    2033 for(;;)
    2034 {
    2035 i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    2036 if(!i)break;
    2037 j++;
    2038 i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    2039 if(!i)break;
    2040 j++;
    2041 }
    2042 if(!(j%2))
    2043 {
    2044 i=Jiedao(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
    2045 if(i==-1)return -1;
    2046 if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
    2047 else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
    2048 }
    2049 break;
    2050 case 206:
    2051 for(;;)
    2052 {
    2053 i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    2054 if(!i)break;
    2055 j++;
    2056 i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    2057 if(!i)break;
    2058 j++;
    2059 }
    2060 if(!(j%2))Taoyuan(w1);
    2061 j=0;
    2062 for(;;)
    2063 {
    2064 i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    2065 if(!i)break;
    2066 j++;
    2067 i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    2068 if(!i)break;
    2069 j++;
    2070 }
    2071 if(!(j%2))Taoyuan(w2);
    2072 break;
    2073 case 207:
    2074 pai wugu[10];
    2075 for(i=1;i<=10;i++)wugu[i-1].leixing=-1;
    2076 Kaipai(paidui,paiduishu,2,wugu);
    2077 for(;;)
    2078 {
    2079 i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    2080 if(!i)break;
    2081 j++;
    2082 i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    2083 if(!i)break;
    2084 j++;
    2085 }
    2086 if(!(j%2))Qupai(wugu,w1);
    2087 for(;;)
    2088 {
    2089 i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    2090 if(!i)break;
    2091 j++;
    2092 i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    2093 if(!i)break;
    2094 j++;
    2095 }
    2096 if(!(j%2))Qupai(wugu,w2);
    2097 Rengpai(wugu,qipaidui,qipaishu); printf("弃牌数:%d\n",*qipaishu);
    2098 break;
    2099 case 208:
    2100 for(;;)
    2101 {
    2102 i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    2103 if(!i)break;
    2104 j++;
    2105 i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    2106 if(!i)break;
    2107 j++;
    2108 }
    2109 if(!(j%2))
    2110 {
    2111 i=Nanman(w1,w2,qipaidui,qipaishu);
    2112 if(i==-1)return -1;
    2113 if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
    2114 else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
    2115 }
    2116 break;
    2117 case 209:
    2118 for(;;)
    2119 {
    2120 i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    2121 if(!i)break;
    2122 j++;
    2123 i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    2124 if(!i)break;
    2125 j++;
    2126 }
    2127 if(!(j%2))
    2128 {
    2129 i=Wanjian(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
    2130 if(i==-1)return -1;
    2131 if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
    2132 else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
    2133 }
    2134 break;
    2135 case 361:
    2136 case 362:
    2137 case 363:
    2138 ((*w1).juli[0])--;break;
    2139 case 381:
    2140 case 382:
    2141 case 383:
    2142 ((*w2).juli[0])++;break;
    2143 default:break;
    2144 }
    2145 printf("\n");
    2146 }
    2147 }
    2148 }
    2149 return 0;
    2150 }
    2151 void Qipai(pai shoupai[20],int *shoupaishu,pai qipaidui[104],int *qipaishu,int juese,int *shoupaishangxian)
    2152 {
    2153 int x;
    2154 if((*shoupaishu)>(*shoupaishangxian))
    2155 {
    2156 if(juese!=1&&juese!=0)printf("身份参数错误!");
    2157 int q=(*shoupaishu)-(*shoupaishangxian);
    2158 int i,j;
    2159 for(j=1;j<=q;j++)
    2160 {
    2161 for(;;)
    2162 {
    2163 if(juese)
    2164 {
    2165 printf("弃牌请输入手牌之前的编号,以回车结束!\n注:一次只能弃一张牌\n");
    2166 printf("手牌数:%d\n",*shoupaishu);
    2167 scanf("%d",&x);
    2168 if(x>=0&&x<(*shoupaishu))break;
    2169 else printf("你弃掉了一张空气!\n");
    2170 }
    2171 else
    2172 {
    2173 srand((unsigned)time(NULL));
    2174 x=rand()%(*shoupaishu);
    2175 break;
    2176 }
    2177 }
    2178 qipaidui[*qipaishu]=shoupai[x];
    2179 for(i=x+1;i<=(*shoupaishu);i++)shoupai[i-1]=shoupai[i];
    2180 (*shoupaishu)--;
    2181 if(juese)printf("弃牌阶段玩家弃置");
    2182 else printf("弃牌阶段电脑弃置");
    2183 qipaidui[*qipaishu].Kanpai();
    2184 (*qipaishu)++;
    2185 int m;
    2186 if(juese)
    2187 {
    2188 printf("玩家当前手牌:\n");
    2189 for(m=0;m<=(*shoupaishu-1);m++)
    2190 {
    2191 printf("%d ",m);
    2192 (shoupai[m]).Kanpai();
    2193 }
    2194 } printf("弃牌堆:%d\n",*qipaishu);
    2195 }
    2196 }
    2197 }
    2198 int Huihe(pai A[104],pai B[104],int *x,int *y,pai yuanshipaidui[2][4][13],wujiang *w1,wujiang *w2)
    2199 {
    2200 printf("\n回合开始阶段……\n");
    2201 switch((*w1).huihekaishi)
    2202 {
    2203 case 0:break;
    2204 default:printf("回合开始阶段参数错误!\n");break;
    2205 }
    2206 printf("判定阶段……\n");
    2207 int K=0;
    2208 if((*w1).pandingshu>0)
    2209 {
    2210 int i,j;
    2211 for(;(*w1).pandingshu;)
    2212 {
    2213 switch((*w1).pandingpai[0].leixing)
    2214 {
    2215 case 251:printf("【乐不思蜀】开始判定……\n"); break;
    2216 case 252:printf("【闪电】开始判定……\n");break;
    2217 default:printf("【??】开始判定……\n");break;
    2218 }
    2219 j=0;
    2220 pai p=((*w1).pandingpai[0]);
    2221 for(;;)//在判定之前询问【无懈】
    2222 {
    2223 i=Wuxie(&p,w2,w1,B,y,0);
    2224 if(!i)break;
    2225 j++;
    2226 i=Wuxie(&p,w1,w2,B,y,0);
    2227 if(!i)break;
    2228 j++;
    2229 }
    2230 switch((*w1).pandingpai[0].leixing)
    2231 {
    2232 case 251:
    2233 if(!(j%2))
    2234 {
    2235 printf("【乐不思蜀】的判定牌是:");
    2236 Panding(A,x,B,y);
    2237 if((B[(*y)-1].huase)!=1)
    2238 {
    2239 printf("【乐不思蜀】判定成功!\n");
    2240 if((*w1).juese)printf("玩家");
    2241 else printf("电脑");
    2242 printf("跳过出牌阶段!\n");
    2243 K=-1;
    2244 }
    2245 else printf("【乐不思蜀】判定失败!\n");
    2246 }
    2247 B[*y]=(*w1).pandingpai[0];
    2248 ((*w1).pandingshu)--;
    2249 (*w1).pandingpai[0]=(*w1).pandingpai[1];
    2250 (*w1).pandingpai[1]=(*w1).pandingpai[2];
    2251 (*w1).pandingpai[2].leixing=-1;
    2252 (*y)++;
    2253 break;
    2254 case 252:
    2255 if(!(j%2))
    2256 {
    2257 printf("【闪电】的判定牌是:");
    2258 Panding(A,x,B,y);
    2259 if((B[(*y)-1].huase==0)&&(B[(*y)-1].dianshu>=1)&&(B[(*y)-1].dianshu<=8))
    2260 {
    2261 printf("【闪电】判定成功!\n");
    2262 if((*w1).juese)printf("玩家");
    2263 else printf("电脑");
    2264 printf("受到3点雷电伤害!");
    2265 ((*w1).tili)=((*w1).tili)-3;
    2266 i=Binsi(w2,w1,B,y);
    2267 B[*y]=(*w1).pandingpai[0];
    2268 ((*w1).pandingshu)--;
    2269 (*w1).pandingpai[0]=(*w1).pandingpai[1];
    2270 (*w1).pandingpai[1]=(*w1).pandingpai[2];
    2271 (*w1).pandingpai[2].leixing=-1;
    2272 (*y)++;
    2273 if(i==-1)return -1;
    2274 }
    2275 else
    2276 {
    2277 printf("【闪电】判定失败!\n");
    2278 (*w2).pandingpai[2]=(*w2).pandingpai[1];
    2279 (*w2).pandingpai[1]=(*w2).pandingpai[0];
    2280 (*w2).pandingpai[0]=(*w1).pandingpai[0];
    2281 (*w1).pandingpai[0]=(*w1).pandingpai[1];
    2282 (*w1).pandingpai[1]=(*w1).pandingpai[2];
    2283 (*w1).pandingpai[2].leixing=-1;
    2284 ((*w1).pandingshu)--;
    2285 ((*w2).pandingshu)++;
    2286 }
    2287 break;
    2288 }
    2289 default:printf("判定牌错误!");
    2290 } printf("弃牌数:%d\n",*y);
    2291 }
    2292 }
    2293 else if(!((*w1).pandingshu));
    2294 else printf("判定阶段参数错误!\n");
    2295 printf("摸牌阶段……\n");
    2296 switch((*w1).mopai)
    2297 {
    2298 case 0:Mopai(&((*w1).shoupaishu),(*w1).shoupai,A,x,B,y,(*w1).juese);break;
    2299 case -1:break;
    2300 default:printf("摸牌阶段参数错误!\n");break;
    2301 }
    2302 if(K==-1)goto M;
    2303 printf("出牌阶段……\n");
    2304 switch((*w1).chupai)
    2305 {
    2306 case 0:
    2307 {
    2308 int i;
    2309 i=Chupai(A,B,x,y,w1,w2,yuanshipaidui);
    2310 if(i==-1)
    2311 {
    2312 return -1;
    2313 break;
    2314 }
    2315 else
    2316 break;
    2317 }
    2318 case -1:break;
    2319 default:printf("出牌阶段参数错误!\n");break;
    2320 }
    2321 M:
    2322 printf("弃牌阶段……\n");
    2323 switch((*w1).qipai)
    2324 {
    2325 case 0:
    2326 Qipai((*w1).shoupai,&((*w1).shoupaishu),B,y,(*w1).juese,&((*w1).tili));break;
    2327 default:printf("弃牌阶段参数错误!\n");break;
    2328 }
    2329 printf("回合结束阶段……\n");
    2330 switch((*w1).huihejieshu)
    2331 {
    2332 case 0:break;
    2333 default:printf("回合结束阶段参数错误!\n");break;
    2334 }
    2335 return 0;
    2336 }
    2337 int main()
    2338 {
    2339 void Kanshoupai(pai p);
    2340 pai yuanshipaidui[2][4][13],qipaidui[104],paidui[104];
    2341 wujiang wanjia,com;
    2342 com.tili=wanjia.tili=5;
    2343 com.tilishangxian=wanjia.tilishangxian=5;
    2344 com.huihekaishi=wanjia.huihekaishi=0;
    2345 com.panding=wanjia.panding=0;
    2346 com.mopai=wanjia.mopai=0;
    2347 com.chupai=wanjia.chupai=0;
    2348 com.qipai=wanjia.qipai=0;
    2349 com.huihejieshu=wanjia.huihejieshu=0;
    2350 com.shoupaishu=wanjia.shoupaishu=0;
    2351 com.pandingshu=wanjia.pandingshu=0;
    2352 com.zhuangbeishu=wanjia.zhuangbeishu=0;
    2353 com.juese=0;wanjia.juese=1;
    2354 pai p;
    2355 p.leixing=-1;
    2356 com.zhuangbei[0]=com.zhuangbei[1]=com.zhuangbei[2]=com.zhuangbei[3]=wanjia.zhuangbei[0]=wanjia.zhuangbei[1]=wanjia.zhuangbei[2]=wanjia.zhuangbei[3]=p;
    2357 com.zhuangbei[0].changdu=wanjia.zhuangbei[0].changdu=1;
    2358 com.pandingpai[0]=com.pandingpai[1]=com.pandingpai[2]=wanjia.pandingpai[0]=wanjia.pandingpai[1]=wanjia.pandingpai[2]=p;
    2359 com.juli[0]=wanjia.juli[0]=1;
    2360 int a,b,c;
    2361 for(a=0;a<=1;a++)
    2362 {
    2363 for(b=0;b<=3;b++)
    2364 {
    2365 for(c=0;c<=12;c++)
    2366 {
    2367 yuanshipaidui[a][b][c].paifu=a;
    2368 yuanshipaidui[a][b][c].huase=b;
    2369 yuanshipaidui[a][b][c].dianshu=c;
    2370 }
    2371 }
    2372 }
    2373 yuanshipaidui[0][0][0].leixing=204;
    2374 yuanshipaidui[0][0][1].leixing=331;
    2375 yuanshipaidui[0][0][2].leixing=201;
    2376 yuanshipaidui[0][0][3].leixing=201;
    2377 yuanshipaidui[0][0][4].leixing=304;yuanshipaidui[0][0][4].changdu=3;
    2378 yuanshipaidui[0][0][5].leixing=251;
    2379 yuanshipaidui[0][0][6].leixing=101;
    2380 yuanshipaidui[0][0][7].leixing=101;
    2381 yuanshipaidui[0][0][8].leixing=101;
    2382 yuanshipaidui[0][0][9].leixing=101;
    2383 yuanshipaidui[0][0][10].leixing=202;
    2384 yuanshipaidui[0][0][11].leixing=201;
    2385 yuanshipaidui[0][0][12].leixing=208;
    2386 yuanshipaidui[0][1][0].leixing=209;
    2387 yuanshipaidui[0][1][1].leixing=102;
    2388 yuanshipaidui[0][1][2].leixing=103;
    2389 yuanshipaidui[0][1][3].leixing=103;
    2390 yuanshipaidui[0][1][4].leixing=308;yuanshipaidui[0][1][4].changdu=5;
    2391 yuanshipaidui[0][1][5].leixing=103;
    2392 yuanshipaidui[0][1][6].leixing=103;
    2393 yuanshipaidui[0][1][7].leixing=103;
    2394 yuanshipaidui[0][1][8].leixing=103;
    2395 yuanshipaidui[0][1][9].leixing=101;
    2396 yuanshipaidui[0][1][10].leixing=101;
    2397 yuanshipaidui[0][1][11].leixing=103;
    2398 yuanshipaidui[0][1][12].leixing=102;
    2399 yuanshipaidui[0][2][0].leixing=204;
    2400 yuanshipaidui[0][2][1].leixing=101;
    2401 yuanshipaidui[0][2][2].leixing=101;
    2402 yuanshipaidui[0][2][3].leixing=101;
    2403 yuanshipaidui[0][2][4].leixing=101;
    2404 yuanshipaidui[0][2][5].leixing=101;
    2405 yuanshipaidui[0][2][6].leixing=101;
    2406 yuanshipaidui[0][2][7].leixing=101;
    2407 yuanshipaidui[0][2][8].leixing=101;
    2408 yuanshipaidui[0][2][9].leixing=101;
    2409 yuanshipaidui[0][2][10].leixing=101;
    2410 yuanshipaidui[0][2][11].leixing=205;
    2411 yuanshipaidui[0][2][12].leixing=205;
    2412 yuanshipaidui[0][3][0].leixing=204;
    2413 yuanshipaidui[0][3][1].leixing=102;
    2414 yuanshipaidui[0][3][2].leixing=102;
    2415 yuanshipaidui[0][3][3].leixing=102;
    2416 yuanshipaidui[0][3][4].leixing=102;
    2417 yuanshipaidui[0][3][5].leixing=101;
    2418 yuanshipaidui[0][3][6].leixing=101;
    2419 yuanshipaidui[0][3][7].leixing=101;
    2420 yuanshipaidui[0][3][8].leixing=101;
    2421 yuanshipaidui[0][3][9].leixing=101;
    2422 yuanshipaidui[0][3][10].leixing=102;
    2423 yuanshipaidui[0][3][11].leixing=103;
    2424 yuanshipaidui[0][3][12].leixing=101;
    2425 yuanshipaidui[1][0][0].leixing=252;
    2426 yuanshipaidui[1][0][1].leixing=302;yuanshipaidui[1][0][1].changdu=2;
    2427 yuanshipaidui[1][0][2].leixing=202;
    2428 yuanshipaidui[1][0][3].leixing=202;
    2429 yuanshipaidui[1][0][4].leixing=383;
    2430 yuanshipaidui[1][0][5].leixing=303;yuanshipaidui[1][0][5].changdu=2;
    2431 yuanshipaidui[1][0][6].leixing=208;
    2432 yuanshipaidui[1][0][7].leixing=101;
    2433 yuanshipaidui[1][0][8].leixing=101;
    2434 yuanshipaidui[1][0][9].leixing=101;
    2435 yuanshipaidui[1][0][10].leixing=210;
    2436 yuanshipaidui[1][0][11].leixing=305;yuanshipaidui[1][0][11].changdu=3;
    2437 yuanshipaidui[1][0][12].leixing=362;
    2438 yuanshipaidui[1][1][0].leixing=206;
    2439 yuanshipaidui[1][1][1].leixing=102;
    2440 yuanshipaidui[1][1][2].leixing=207;
    2441 yuanshipaidui[1][1][3].leixing=207;
    2442 yuanshipaidui[1][1][4].leixing=361;
    2443 yuanshipaidui[1][1][5].leixing=251;
    2444 yuanshipaidui[1][1][6].leixing=203;
    2445 yuanshipaidui[1][1][7].leixing=203;
    2446 yuanshipaidui[1][1][8].leixing=203;
    2447 yuanshipaidui[1][1][9].leixing=101;
    2448 yuanshipaidui[1][1][10].leixing=203;
    2449 yuanshipaidui[1][1][11].leixing=201;
    2450 yuanshipaidui[1][1][12].leixing=381;
    2451 yuanshipaidui[1][2][0].leixing=301;yuanshipaidui[1][2][0].changdu=1;
    2452 yuanshipaidui[1][2][1].leixing=331;
    2453 yuanshipaidui[1][2][2].leixing=201;
    2454 yuanshipaidui[1][2][3].leixing=201;
    2455 yuanshipaidui[1][2][4].leixing=382;
    2456 yuanshipaidui[1][2][5].leixing=251;
    2457 yuanshipaidui[1][2][6].leixing=208;
    2458 yuanshipaidui[1][2][7].leixing=101;
    2459 yuanshipaidui[1][2][8].leixing=101;
    2460 yuanshipaidui[1][2][9].leixing=101;
    2461 yuanshipaidui[1][2][10].leixing=101;
    2462 yuanshipaidui[1][2][11].leixing=210;
    2463 yuanshipaidui[1][2][12].leixing=210;
    2464 yuanshipaidui[1][3][0].leixing=301;yuanshipaidui[1][3][0].changdu=1;
    2465 yuanshipaidui[1][3][1].leixing=102;
    2466 yuanshipaidui[1][3][2].leixing=202;
    2467 yuanshipaidui[1][3][3].leixing=202;
    2468 yuanshipaidui[1][3][4].leixing=306;yuanshipaidui[1][3][4].changdu=3;
    2469 yuanshipaidui[1][3][5].leixing=102;
    2470 yuanshipaidui[1][3][6].leixing=102;
    2471 yuanshipaidui[1][3][7].leixing=102;
    2472 yuanshipaidui[1][3][8].leixing=102;
    2473 yuanshipaidui[1][3][9].leixing=102;
    2474 yuanshipaidui[1][3][10].leixing=102;
    2475 yuanshipaidui[1][3][11].leixing=307;yuanshipaidui[1][3][11].changdu=4;
    2476 yuanshipaidui[1][3][12].leixing=363;
    2477 int paiduishu=104;
    2478 int qipaishu=0;
    2479 printf("游戏开始!\n");
    2480 Qishixipai(yuanshipaidui,paidui);
    2481 Qishishoupai(&wanjia,paidui,&(paiduishu),qipaidui,&(qipaishu));
    2482 Qishishoupai(&com,paidui,&(paiduishu),qipaidui,&(qipaishu));
    2483 int i;
    2484 for(;;)
    2485 {
    2486 i=Huihe(paidui,qipaidui,&paiduishu,&qipaishu,yuanshipaidui,&wanjia,&com);
    2487 if(i==-1)break;
    2488 i=Huihe(paidui,qipaidui,&paiduishu,&qipaishu,yuanshipaidui,&com,&wanjia);
    2489 if(i==-1)break;
    2490 }
    2491 }
  • 相关阅读:
    一款垃圾的仿资源管理器+局域网Ping网段的工具(winform+异步线程) 留了问题
    ruby实现按键精灵的功能
    委托与事件 在.net的争霸战 ,你选择了谁?(异步委托产生的原因)
    小记C语言指针p与*p
    奔波的这 3月份
    ruby实现删除自定义后缀名文件Find
    "new" 出一个新未来——关于new的揭秘
    学了一招半式策略模式(设计模式)
    配置类的定义与使用
    js编写
  • 原文地址:https://www.cnblogs.com/pd520/p/2763112.html
Copyright © 2011-2022 走看看