用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 }

 

 

转载于:https://www.cnblogs.com/pd520/archive/2012/11/09/2763112.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多人三国游戏代码是指用计算机编程语言编写的,用于实现多人同时进行三国游戏的程序代码。 多人三国游戏是基于经典桌面游戏三国的电子化延伸,可以通过网络连接使多名玩家在不同的地理位置共同参与游戏。通过编写代码,可以实现游戏的各种功能和规则,例如角色选择、卡牌发放、游戏逻辑判断、玩家互动等等。 编写多人三国游戏代码可以有多种方式,常用的有使用面向对象的编程语言如Java或C#,也可以使用脚本语言如Python进行开发。编写代码前需要设定好游戏规则和功能需求,然后通过编程语言提供的语法和函数来编写程序。 在代码中,可以使用类和对象的概念来建立玩家、角色、卡牌等各种实体的数据结构和行为。可以利用条件语句和循环语句来实现游戏逻辑的判断和流程控制。还可以使用网络编程相关的技术来实现玩家之间的通信和互动。 编写代码时需要考虑到游戏的性能和用户体验,要尽可能地优化程序的执行效率和响应速度,确保游戏可以在不同的设备上流畅运行。同时,也要考虑到游戏的可扩展性,方便后续对游戏进行功能扩展和更新。 总之,多人三国游戏代码是用于实现多人同时进行三国游戏的程序代码,需要通过编程语言和相关技术来实现游戏的各种功能和规则,以提供优秀的游戏体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值