cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 3798|回复: 7

[聊天] 人人上看到一个三国杀的cpp,有兴趣的人去移植一下

[复制链接]
发表于 2013-1-29 14:03:05 | 显示全部楼层 |阅读模式
未验证其是否能工作
  1. #include <iostream>
  2. #include <sstream>
  3. #include <cstdio>
  4. #include <cstring>
  5. #include <cmath>
  6. #include <string>
  7. #include <vector>
  8. #include <set>
  9. #include <cctype>
  10. #include <algorithm>
  11. #include <cmath>
  12. #include <deque>
  13. #include <queue>
  14. #include <map>
  15. #include <queue>
  16. #include <list>
  17. #include <iomanip>
  18. using namespace std;
  19. struct pai
  20. {
  21. int paifu;
  22. int huase;
  23. int yanse;
  24. int dianshu;
  25. int leixing;
  26. int changdu;
  27. void Kanpai()
  28. {
  29. if(paifu==0||paifu==1);
  30. else
  31. printf("牌副参数错误!\n");
  32. switch(huase)
  33. {
  34. case 0:cout<<"黑桃";break;
  35. case 1:cout<<"红桃";break;
  36. case 2:cout<<"草花";break;
  37. case 3:cout<<"方片";break;
  38. case -1:cout<<"无色";break;
  39. default:printf("花色错误!\n");break;
  40. }
  41. switch(dianshu)
  42. {
  43. case 0:cout<<"A ";break;
  44. case 1:cout<<"2 ";break;
  45. case 2:cout<<"3 ";break;
  46. case 3:cout<<"4 ";break;
  47. case 4:cout<<"5 ";break;
  48. case 5:cout<<"6 ";break;
  49. case 6:cout<<"7 ";break;
  50. case 7:cout<<"8 ";break;
  51. case 8:cout<<"9 ";break;
  52. case 9:cout<<"10 ";break;
  53. case 10:cout<<"J ";break;
  54. case 11:cout<<"Q ";break;
  55. case 12:cout<<"K ";break;
  56. case -1:cout<<"无点数";break;
  57. default:printf("点数错误!\n");break;
  58. }
  59. switch(leixing)
  60. {
  61. case 101:cout<<"【杀】"<<endl;break;
  62. case 102:cout<<"【闪】"<<endl;break;
  63. case 103:cout<<"【桃】"<<endl;break;
  64. case 201:cout<<"【过河拆桥】"<<endl;break;
  65. case 202:cout<<"【顺手牵羊】"<<endl;break;
  66. case 203:cout<<"【无中生有】"<<endl;break;
  67. case 204:cout<<"【决斗】"<<endl;break;
  68. case 205:cout<<"【借刀杀人】"<<endl;break;
  69. case 206:cout<<"【桃园结义】"<<endl;break;
  70. case 207:cout<<"【五谷丰登】"<<endl;break;
  71. case 208:cout<<"【南蛮入侵】"<<endl;break;
  72. case 209:cout<<"【万箭齐发】"<<endl;break;
  73. case 210:cout<<"【无懈可击】"<<endl;break;
  74. case 251:cout<<"【乐不思蜀】"<<endl;break;
  75. case 252:cout<<"【闪电】"<<endl;break;
  76. case 301:cout<<"【诸葛连弩(1)】"<<endl;break;
  77. case 302:cout<<"【雌雄双股剑(2)】"<<endl;break;
  78. case 303:cout<<"【青釭剑(2)】"<<endl;break;
  79. case 304:cout<<"【青龙偃月刀(3)】"<<endl;break;
  80. case 305:cout<<"【丈八蛇矛(3)】"<<endl;break;
  81. case 306:cout<<"【贯石斧(3)】"<<endl;break;
  82. case 307:cout<<"【方天画戟(4)】"<<endl;break;
  83. case 308:cout<<"【麒麟弓(5)】"<<endl;break;
  84. case 331:cout<<"【八卦阵】"<<endl;break;
  85. case 361:cout<<"【赤兔(-1)】"<<endl;break;
  86. case 362:cout<<"【大宛(-1)】"<<endl;break;
  87. case 363:cout<<"【紫辛(-1)】"<<endl;break;
  88. case 381:cout<<"【爪黄飞电(+1)】"<<endl;break;
  89. case 382:cout<<"【的卢(+1)】"<<endl;break;
  90. case 383:cout<<"【绝影(+1)】"<<endl;break;
  91. default:printf("类型参数错误!");break;
  92. }
  93. }
  94. };
  95. void Qishixipai(pai A[2][4][13],pai paidui[104])
  96. {
  97. int i,m,x,y,z,a[104]={0};
  98. srand((unsigned)time(NULL));
  99. for(i=1;i<=104;i++)
  100. {
  101. while(a[m=rand()%104]);
  102. a[m]=i;
  103. }
  104. for(i=0;i<=103;i++)
  105. {
  106. x=(a[i]-1)/52;
  107. y=((a[i]-1)-52*x)/13;
  108. z=(a[i]-1)%13;
  109. paidui[i]=A[x][y][z];
  110. }
  111. }
  112. void Xipai(pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)
  113. {
  114. int i,m,a[104]={0};
  115. srand((unsigned)time(NULL));
  116. for(i=1;i<=(*qipaishu);i++)
  117. {
  118. while(a[m=rand()%(*qipaishu)]);
  119. a[m]=i;
  120. }
  121. for(i=0;i<=((*qipaishu)-1);i++)
  122. {
  123. paidui[i]=qipaidui[a[i]];
  124. qipaidui[a[i]].leixing=-1;
  125. (*paiduishu)++;
  126. (*qipaishu)--;
  127. }
  128. for(i=(*paiduishu);i<=103;i++)paidui[i].leixing=-1;
  129. }
  130. pai Mo1pai(pai A[104],int *x,pai B[104],int*y,int *b)
  131. {
  132. pai p;
  133. if((*x)==0)Xipai(A,x,B,y);
  134. else if((*x)<0)printf("摸牌参数错误!");
  135. else;
  136. p=A[104-(*x)];
  137. (*x)--;
  138. (*b)++;
  139. return(p);
  140. }
  141. struct wujiang
  142. {
  143. char name;
  144. int tili;
  145. int tilishangxian;
  146. int shoupaishangxian;
  147. int huihekaishi;
  148. int panding;
  149. int mopai;
  150. int chupai;
  151. int qipai;
  152. int huihejieshu;
  153. int juese;
  154. pai shoupai[20];
  155. int shoupaishu;
  156. pai zhuangbei[4];
  157. int zhuangbeishu;
  158. pai pandingpai[3];
  159. int pandingshu;
  160. int juli[1];
  161. void Kanshoupai()
  162. {
  163. printf("玩家当前手牌:\n");
  164. if(shoupaishu)
  165. {
  166. int m;
  167. for(m=0;m<=(shoupaishu-1);m++)
  168. {
  169. printf("%d ",m);
  170. (shoupai[m]).Kanpai();
  171. }
  172. }
  173. else printf("空城!\n");
  174. printf("\n");
  175. }
  176. void Kanzhuangbei()
  177. {
  178. if(juese)printf("玩家");
  179. else printf("电脑");
  180. printf("当前装备:\n");
  181. printf("0 武器: ");
  182. if((zhuangbei[0]).leixing==-1)printf("空\n");
  183. else (zhuangbei[0]).Kanpai();
  184. printf("1 防具: ");
  185. if((zhuangbei[1]).leixing==-1)printf("空\n");
  186. else (zhuangbei[1]).Kanpai();
  187. printf("2 进攻马: ");
  188. if((zhuangbei[2]).leixing==-1)printf("空\n");
  189. else (zhuangbei[2]).Kanpai();
  190. printf("3 防御马: ");
  191. if((zhuangbei[3]).leixing==-1)printf("空\n");
  192. else (zhuangbei[3]).Kanpai();
  193. printf("\n");
  194. }
  195. void Kanpandingpai()
  196. {
  197. if(juese)printf("玩家");
  198. else printf("电脑");
  199. printf("当前判定区:\n");
  200. if((pandingpai[0]).leixing==-1)printf("空\n");
  201. else
  202. {
  203. printf("0 ");
  204. (pandingpai[0]).Kanpai();
  205. if((pandingpai[1]).leixing==-1);
  206. else
  207. {
  208. printf("1 ");
  209. (pandingpai[1]).Kanpai();
  210. if((pandingpai[2]).leixing==-1);
  211. else
  212. {
  213. printf("2 ");
  214. (pandingpai[2]).Kanpai();
  215. }
  216. }
  217. }
  218. }
  219. };
  220. void Mopai(int*shoupaishu,pai shoupai[20],pai A[104],int *x,pai B[104],int*y,int juese)
  221. {
  222. if(juese)printf("玩家从牌堆摸2张牌\n");
  223. else printf("电脑从牌堆摸2张牌\n");
  224. pai p;
  225. p=Mo1pai(A,x,B,y,shoupaishu);
  226. shoupai[*shoupaishu-1]=p;
  227. pai q;
  228. q=Mo1pai(A,x,B,y,shoupaishu);
  229. shoupai[*shoupaishu-1]=q;
  230. int m;
  231. if(juese)
  232. {
  233. printf("玩家当前手牌:\n");
  234. for(m=0;m<=(*shoupaishu-1);m++)
  235. {
  236. printf("%d ",m);
  237. (shoupai[m]).Kanpai();
  238. }
  239. }
  240. printf("牌堆还剩%d张牌!\n\n",*x);
  241. }
  242. void Qishishoupai(wujiang *w,pai A[104],int *x,pai B[104],int*y)
  243. {
  244. pai a;
  245. a=Mo1pai(A,x,B,y,&((*w).shoupaishu));
  246. (*w).shoupai[(*w).shoupaishu-1]=a;
  247. pai b;
  248. b=Mo1pai(A,x,B,y,&((*w).shoupaishu));
  249. (*w).shoupai[(*w).shoupaishu-1]=b;
  250. pai c;
  251. c=Mo1pai(A,x,B,y,&((*w).shoupaishu));
  252. (*w).shoupai[(*w).shoupaishu-1]=c;
  253. pai d;
  254. d=Mo1pai(A,x,B,y,&((*w).shoupaishu));
  255. (*w).shoupai[(*w).shoupaishu-1]=d;
  256. int m;
  257. if((*w).juese)printf("玩家从牌堆摸4张牌\n");
  258. else printf("电脑从牌堆摸4张牌\n");
  259. if((*w).juese)
  260. {
  261. printf("玩家当前手牌:\n");
  262. for(m=0;m<=((*w).shoupaishu-1);m++)
  263. {
  264. printf("%d ",m);
  265. ((*w).shoupai[m]).Kanpai();
  266. }
  267. }
  268. printf("牌堆还剩%d张牌!\n\n",*x);
  269. }
  270. void Panding(pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)
  271. {
  272. paidui[*paiduishu].Kanpai();
  273. qipaidui[*qipaishu]=paidui[*paiduishu];
  274. (*paiduishu)--;
  275. (*qipaishu)++;
  276. }
  277. pai Zhangba(wujiang*w,pai qipaidui[104],int*qipaishu)
  278. {
  279. int x,y;
  280. pai p;
  281. for(;;)
  282. {
  283. int i,j;
  284. printf("请输入任意两张手牌之前的编号,以空格隔开,以回车结束!\n");
  285. scanf("%d",&x);
  286. scanf("%d",&y);
  287. if((x>=0)&&(x<(*w).shoupaishu)&&(y>=0)&&(y<(*w).shoupaishu-1))
  288. {
  289. switch((((*w).shoupai[x].huase)%2)+(((*w).shoupai[y].huase)%2))
  290. {
  291. case 0:p.yanse=0;break;
  292. case 2:p.yanse=1;break;
  293. case 1:p.yanse=2;break;
  294. default:printf("【丈八蛇矛】函数参数错误!\n");
  295. }
  296. qipaidui[*qipaishu]=(*w).shoupai[x];
  297. (*w).shoupai[x].leixing=-1;
  298. ((*w).shoupaishu)--;
  299. (*qipaishu)++;
  300. qipaidui[*qipaishu]=(*w).shoupai[y];
  301. (*w).shoupai[y].leixing=-1;
  302. ((*w).shoupaishu)--;
  303. (*qipaishu)++; printf("弃牌数:%d",*qipaishu);
  304. for(i=0;i<=(((*w).shoupaishu)+1);i++)
  305. {
  306. if((*w).shoupai[i].leixing==-1)
  307. {
  308. for(j=i+1;j<=(((*w).shoupaishu)+2);j++)
  309. (*w).shoupai[j-1]=(*w).shoupai[j];
  310. i--;
  311. }
  312. }
  313. printf("玩家把:\n");
  314. qipaidui[(*qipaishu)-2].Kanpai();
  315. qipaidui[(*qipaishu)-1].Kanpai();
  316. printf("当作一张");
  317. switch(p.yanse)
  318. {
  319. case 0:printf("黑色");break;
  320. case 2:printf("红色");break;
  321. case 1:printf("无色");break;
  322. default:printf("绿色");break;
  323. }
  324. printf("无点数的【杀】");
  325. p.dianshu=-1;
  326. p.leixing=101;
  327. return p;
  328. break;
  329. }
  330. printf("你将两张空气当作一张空气属性的【杀】使用或打出!\n");
  331. }
  332. }
  333. int Xuanpai(wujiang*w,int t)
  334. {
  335. int x;
  336. if((*w).juese)
  337. {
  338. for(;;)
  339. {
  340. printf("出牌请输入手牌之前的编号,以回车结束!\n如果你想结束出牌阶段,请输入“-1”,以回车结束!\n");
  341. scanf("%d",&x);
  342. if((x>=-1&&x<((*w).shoupaishu))||((x==100)&&((*w).zhuangbei[0].leixing==305)))
  343. {
  344. return x;
  345. break;
  346. }
  347. printf("你打出了一张空气!\n");
  348. }
  349. }
  350. else return t;
  351. }
  352. pai Panpai(wujiang*w1,int*sha,int y,pai qipaidui[104],int*qipaishu)
  353. {
  354. pai p,q;
  355. p.leixing=0;
  356. q.leixing=-1;
  357. if(y==-1)return q;
  358. else
  359. {
  360. if(y==100)
  361. {
  362. if((*sha)>0)
  363. {
  364. q=Zhangba(w1,qipaidui,qipaishu);
  365. printf("使用!\n");
  366. return q;
  367. }
  368. else
  369. {
  370. printf("当前回合使用【杀】的次数已用尽,你也不能使用【丈八蛇矛】效果!\n");
  371. return p;
  372. }
  373. }
  374. switch((*w1).shoupai[y].leixing)
  375. {
  376. case 101:
  377. if(((*sha)>0)||((*w1).zhuangbei[0].leixing==301))
  378. {
  379. if(((*w1).zhuangbei[0].leixing==301))printf("武器【诸葛连弩】效果被触发!\n");
  380. return (*w1).shoupai[y];
  381. break;
  382. }
  383. else
  384. {
  385. if((*w1).juese)printf("当前回合使用【杀】的次数已用尽,你不能使用【杀】!\n");
  386. return p;break;
  387. }
  388. case 102:
  389. if((*w1).juese)
  390. printf("当前不需要响应任何操作,你不能主动打出【闪】!\n");
  391. return p;break;
  392. case 103:
  393. if(((*w1).tili)<((*w1).tilishangxian))
  394. {
  395. return (*w1).shoupai[y];
  396. break;
  397. }
  398. else
  399. {
  400. if((*w1).juese)
  401. printf("你并未受伤,不能对自己使用【桃】!\n");
  402. }
  403. return p;break;
  404. case 210:
  405. if((*w1).juese)
  406. printf("当前不需要响应任何锦囊,你不能主动打出【无懈可击】!\n");
  407. return p;break;
  408. case 201:
  409. case 202:
  410. case 203:
  411. case 204:
  412. case 205:
  413. case 206:
  414. case 207:
  415. case 208:
  416. case 209:
  417. case 251:
  418. case 252:
  419. case 301:
  420. case 302:
  421. case 303:
  422. case 304:
  423. case 305:
  424. case 306:
  425. case 307:
  426. case 308:
  427. case 331:
  428. case 361:
  429. case 362:
  430. case 363:
  431. case 381:
  432. case 382:
  433. case 383:return (*w1).shoupai[y];break;
  434. default:printf("手牌类型参数错误!\n");return p;break;
  435. }
  436. }
  437. }
  438. int Mubiao(pai p,wujiang *w1,wujiang *w2,int*sha)
  439. {
  440. int x;
  441. switch(p.leixing)
  442. {
  443. case 101:
  444. if((*w1).juese)
  445. {
  446. printf("请选择【杀】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
  447. scanf("%d",&x);
  448. if(x==0)
  449. {
  450. if((*w1).zhuangbei[0].changdu>=(*w1).juli[0])
  451. {
  452. (*sha)--;
  453. return((*w2).juese);
  454. }
  455. else
  456. {
  457. printf("武器长度不够!\n");
  458. return -2;
  459. }
  460. }
  461. else
  462. {
  463. printf("目标错误!\n");
  464. return -2;
  465. }
  466. }
  467. else
  468. {
  469. if((*w1).zhuangbei[0].changdu>=(*w1).juli[0])
  470. {
  471. (*sha)--;
  472. return((*w2).juese);
  473. }
  474. else return -2;
  475. }
  476. break;
  477. case 103:return((*w1).juese);break;
  478. case 201:
  479. if((*w1).juese)
  480. {
  481. printf("请选择【过河拆桥】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
  482. scanf("%d",&x);
  483. if(x==0)
  484. {
  485. if((*w2).shoupaishu||(*w2).zhuangbeishu||(*w2).pandingshu)return((*w2).juese);
  486. else
  487. {
  488. printf("目标没有牌!\n");
  489. return -2;
  490. }
  491. }
  492. else
  493. {
  494. printf("目标错误!\n");
  495. return -2;
  496. }
  497. }
  498. else return((*w2).juese);
  499. break;
  500. case 202:
  501. if((*w1).juese)
  502. {
  503. printf("请选择【顺手牵羊】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
  504. scanf("%d",&x);
  505. if(x==0)
  506. {
  507. if(((*w2).shoupaishu||(*w2).zhuangbeishu||(*w2).pandingshu)&&((*w1).juli[0]<=1))return((*w2).juese);
  508. else
  509. {
  510. printf("目标没有牌!\n");
  511. return -2;
  512. }
  513. }
  514. else
  515. {
  516. printf("目标错误!\n");
  517. return -2;
  518. }
  519. }
  520. else
  521. {
  522. if((*w1).juli[0]<=1)return((*w2).juese);
  523. else return -2;
  524. }
  525. break;
  526. case 203:
  527. return((*w1).juese);break;
  528. case 204:
  529. if((*w1).juese)
  530. {
  531. printf("请选择【决斗】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
  532. scanf("%d",&x);
  533. if(x==0)return((*w2).juese);
  534. else
  535. {
  536. printf("目标错误!\n");
  537. return -2;
  538. }
  539. }
  540. else return((*w2).juese);
  541. break;
  542. case 205:
  543. int y;
  544. if((*w1).juese)
  545. {
  546. printf("请选择【借刀杀人】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
  547. scanf("%d",&x);
  548. if(x!=0)
  549. {
  550. printf("目标错误!\n");
  551. return -2;
  552. }
  553. else
  554. {
  555. if(((*w2).zhuangbei[0]).leixing<=300||((*w2).zhuangbei[0]).leixing>=331)
  556. {
  557. printf("目标装备区里没有武器!\n");
  558. return -2;
  559. }
  560. else
  561. {
  562. printf("请选择【杀】的目标!\n提示:【杀】的目标必须在【借刀杀人】的目标的攻击范围之内!\n输入目标前的编号,以回车结束!\n0 玩家\n");
  563. scanf("%d",&y);
  564. if(y!=0)
  565. {
  566. printf("目标错误!\n");
  567. return -2;
  568. }
  569. else
  570. {
  571. if(((*w2).zhuangbei[0].changdu)<(*w2).juli[0])
  572. {
  573. printf("武器距离不够!\n");
  574. return -2;
  575. }
  576. else
  577. return((*w2).juese);
  578. }
  579. }
  580. }
  581. }
  582. else
  583. {
  584. if(((*w2).zhuangbei[0]).leixing<=300||((*w2).zhuangbei[0]).leixing>=331)return -2;
  585. else
  586. {
  587. if(((*w2).zhuangbei[0].changdu)<(*w2).juli[0])return -2;
  588. else return((*w2).juese);
  589. }
  590. }
  591. break;
  592. case 206:
  593. case 207:return 99;break;
  594. case 208:
  595. case 209:return 100;break;
  596. case 251:
  597. if((*w1).juese)
  598. {
  599. printf("请选择【乐不思蜀】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
  600. scanf("%d",&x);
  601. if(x==0)
  602. {
  603. int i;
  604. for(i=0;i<=2;i++)
  605. {
  606. if((*w2).pandingpai[i].leixing==251)
  607. i=-1;
  608. break;
  609. }
  610. if(i==-1)
  611. {
  612. printf("目标判定区里不能同时存在两张相同的延时类锦囊!\n");
  613. return -2;
  614. }
  615. else return((*w2).juese);
  616. }
  617. else
  618. {
  619. printf("目标错误!\n");
  620. return -2;
  621. }
  622. }
  623. else
  624. {
  625. int i;
  626. for(i=0;i<=2;i++)
  627. {
  628. if((*w2).pandingpai[i].leixing==251)
  629. i=-1;
  630. break;
  631. }
  632. if(i==-1)return -2;
  633. else return((*w2).juese);
  634. }
  635. break;
  636. case 252:
  637. int i;
  638. for(i=0;i<=2;i++)
  639. {
  640. if((*w1).pandingpai[i].leixing==252)
  641. i=-1;
  642. break;
  643. }
  644. if(i==-1)
  645. {
  646. if((*w1).juese)printf("目标判定区里不能同时存在两张相同的延时类锦囊!\n");
  647. return -2;
  648. }
  649. else return ((*w1).juese);
  650. break;
  651. case 301:
  652. case 302:
  653. case 303:
  654. case 304:
  655. case 305:
  656. case 306:
  657. case 307:
  658. case 308:
  659. case 331:
  660. case 361:
  661. case 362:
  662. case 363:
  663. case 381:
  664. case 382:
  665. case 383:return((*w1).juese);break;
  666. default:return -2;break;
  667. }
  668. }
  669. void Da1pai(wujiang *w1,wujiang*w2,pai qipaidui[104],int *qipaishu,int x)
  670. {
  671. int i;
  672. if((x<0||x>=((*w1).shoupaishu))&&x!=100)
  673. printf("你的牌呢?!\n");
  674. else
  675. {
  676. switch(((*w1).shoupai)[x].leixing)
  677. {
  678. case 101:
  679. case 102:
  680. case 103:
  681. case 201:
  682. case 202:
  683. case 203:
  684. case 204:
  685. case 205:
  686. case 206:
  687. case 207:
  688. case 208:
  689. case 209:
  690. case 210:
  691. qipaidui[*qipaishu]=((*w1).shoupai)[x];
  692. for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
  693. ((*w1).shoupaishu)--;
  694. (*qipaishu)++;
  695. break;
  696. case 251:
  697. for(i=1;i>=0;i--)(*w2).pandingpai[i+1]=(*w2).pandingpai[i];
  698. (*w2).pandingpai[0]=(*w1).shoupai[x];
  699. for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
  700. ((*w1).shoupaishu)--;
  701. ((*w2).pandingshu)++;
  702. break;
  703. case 252:
  704. for(i=1;i>=0;i--)(*w1).pandingpai[i+1]=(*w1).pandingpai[i];
  705. (*w1).pandingpai[0]=(*w1).shoupai[x];
  706. for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
  707. ((*w1).shoupaishu)--;
  708. ((*w1).pandingshu)++;
  709. break;
  710. case 301:
  711. case 302:
  712. case 303:
  713. case 304:
  714. case 305:
  715. case 306:
  716. case 307:
  717. case 308:
  718. if((*w1).zhuangbei[0].leixing==-1)((*w1).zhuangbeishu)++;
  719. else
  720. {
  721. qipaidui[*qipaishu]=((*w1).zhuangbei)[0];
  722. (*qipaishu)++;
  723. }
  724. (*w1).zhuangbei[0]=(*w1).shoupai[x];
  725. for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
  726. ((*w1).shoupaishu)--;
  727. break;
  728. case 331:
  729. if((*w1).zhuangbei[1].leixing==-1)((*w1).zhuangbeishu)++;
  730. else
  731. {
  732. qipaidui[*qipaishu]=((*w1).zhuangbei)[1];
  733. (*qipaishu)++;
  734. }
  735. (*w1).zhuangbei[1]=(*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 361:
  740. case 362:
  741. case 363:
  742. if((*w1).zhuangbei[2].leixing==-1)((*w1).zhuangbeishu)++;
  743. else
  744. {
  745. qipaidui[*qipaishu]=((*w1).zhuangbei)[2];
  746. (*qipaishu)++;
  747. }
  748. (*w1).zhuangbei[2]=(*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. case 381:
  753. case 382:
  754. case 383:
  755. if((*w1).zhuangbei[3].leixing==-1)((*w1).zhuangbeishu)++;
  756. else
  757. {
  758. qipaidui[*qipaishu]=((*w1).zhuangbei)[3];
  759. (*qipaishu)++;
  760. }
  761. (*w1).zhuangbei[3]=(*w1).shoupai[x];
  762. for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
  763. ((*w1).shoupaishu)--;
  764. break;
  765. default:break;
  766. }
  767. }
  768. }
  769. void Miaoshu(pai p,int juese,int duixiang)
  770. {
  771. if(juese==0)printf("电脑");
  772. else if(juese==1)printf("玩家");
  773. else printf("角色参数错误!\n");
  774. if(p.leixing<=300&&p.leixing>100)
  775. {
  776. switch(duixiang)
  777. {
  778. case -1:printf("打出");break;
  779. case 0:printf("对电脑使用");break;
  780. case 1:printf("对玩家使用");break;
  781. case 99:printf("使用");break;
  782. case 100:printf("对所有人使用");break;
  783. default:printf("对象参数错误\n");break;
  784. }
  785. }
  786. else if(p.leixing>=301&&p.leixing<=400)
  787. printf("装备");
  788. else printf("你出的是什么东西?\n");
  789. p.Kanpai();
  790. if(!juese&&(p.leixing==101||p.leixing==204||p.leixing==205||p.leixing==207||p.leixing==208||p.leixing==209))printf("请响应!\n");
  791. }
  792. int Wuxie(pai *p,wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu,int a)
  793. {
  794. int x;
  795. if((*w1).juese)
  796. {
  797. printf("是否使用【无懈可击】响应?\n\n");
  798. for(;;)
  799. {
  800. (*w1).Kanshoupai();
  801. printf("如果要使用【无懈可击】请输入手牌之前编号,不需要请输入“-1”,以回车结束!\n");
  802. scanf("%d",&x);
  803. if(x==-1)
  804. {
  805. for(x=0;x<((*w2).shoupaishu);x++)
  806. {
  807. if((*w2).shoupai[x].leixing==210)
  808. {
  809. printf("电脑使用");
  810. ((*w2).shoupai)[x].Kanpai();
  811. printf("对象是");
  812. (*p).Kanpai();
  813. (*p)=((*w2).shoupai)[x];
  814. qipaidui[*qipaishu]=((*w2).shoupai)[x];
  815. for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
  816. ((*w2).shoupaishu)--;
  817. (*qipaishu)++;
  818. a++;
  819. break;
  820. }
  821. }
  822. break;
  823. }
  824. else if((*w1).shoupai[x].leixing==210)
  825. {
  826. printf("玩家使用");
  827. ((*w1).shoupai)[x].Kanpai();
  828. printf("对象是");
  829. (*p).Kanpai();
  830. (*p)=((*w1).shoupai)[x];
  831. qipaidui[*qipaishu]=((*w1).shoupai)[x];
  832. for(int i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
  833. ((*w1).shoupaishu)--;
  834. (*qipaishu)++;
  835. (*w1).Kanshoupai();
  836. a++;
  837. break;
  838. }
  839. else printf("你确定你使用的是【无懈可击】?\n");
  840. }
  841. }
  842. else
  843. {
  844. printf("是否使用【无懈可击】响应?\n");
  845. for(;;)
  846. {
  847. (*w2).Kanshoupai();
  848. printf("如果要使用【无懈可击】请输入手牌之前编号,不需要请输入“-1”,以回车结束!\n");
  849. scanf("%d",&x);
  850. if(x==-1)break;
  851. else if((*w2).shoupai[x].leixing==210)
  852. {
  853. printf("玩家使用");
  854. ((*w2).shoupai)[x].Kanpai();
  855. printf("对象是");
  856. (*p).Kanpai();
  857. (*p)=((*w2).shoupai)[x];
  858. qipaidui[*qipaishu]=((*w2).shoupai)[x];
  859. for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
  860. ((*w2).shoupaishu)--;
  861. (*qipaishu)++;
  862. (*w2).Kanshoupai();
  863. a++;
  864. break;
  865. }
  866. else printf("你确定你使用的是【无懈可击】?\n");
  867. }
  868. }
  869. return a;
  870. }
  871. int Qiutao(wujiang*w,pai qipaidui[104],int*qipaishu)
  872. {
  873. int x;
  874. if((*w).juese)
  875. {
  876. for(;;)
  877. {
  878. printf("如果要使用【桃】请输入手牌之前的编号,不需要请输入“-1”,以回车结束!\n");
  879. scanf("%d",&x);
  880. if(x==-1)
  881. {
  882. return -1;
  883. break;
  884. }
  885. else if((*w).shoupai[x].leixing==103)
  886. {
  887. qipaidui[*qipaishu]=((*w).shoupai)[x];
  888. for(int i=x+1;i<=((*w).shoupaishu);i++)((*w).shoupai)[i-1]=((*w).shoupai)[i];
  889. ((*w).shoupaishu)--;
  890. (*qipaishu)++;
  891. return 0;
  892. break;
  893. }
  894. else printf("你确定你使用的是【桃】?\n");
  895. }
  896. }
  897. else
  898. {
  899. for(x=0;x<((*w).shoupaishu);x++)
  900. {
  901. if((*w).shoupai[x].leixing==103)
  902. {
  903. qipaidui[*qipaishu]=((*w).shoupai)[x];
  904. for(int i=x+1;i<=((*w).shoupaishu);i++)((*w).shoupai)[i-1]=((*w).shoupai)[i];
  905. ((*w).shoupaishu)--;
  906. (*qipaishu)++;
  907. return 0;
  908. break;
  909. }
  910. }
  911. return -1;
  912. }
  913. }
  914. int Binsi(wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu)
  915. {
  916. if(((*w2).tili)>0)return 0;
  917. else
  918. {
  919. int i;
  920. if((*w1).juese)
  921. {
  922. for(;;)
  923. {
  924. printf("电脑濒死,是否使用【桃】?\n");
  925. i=Qiutao(w1,qipaidui,qipaishu);
  926. if(i==0)((*w2).tili)++;
  927. if((i==-1)||((*w2).tili>0))break;
  928. }
  929. if((*w2).tili>0)return 0;
  930. else
  931. {
  932. for(;;)
  933. {
  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. else
  943. {
  944. for(;;)
  945. {
  946. printf("玩家濒死,是否使用【桃】?\n");
  947. i=Qiutao(w2,qipaidui,qipaishu);
  948. if(i==0)((*w2).tili)++;
  949. if((i==-1)||((*w2).tili>0))break;
  950. }
  951. if((*w2).tili>0)return 0;
  952. else return -1;
  953. }
  954. }
  955. }
  956. int Shan(wujiang*w1,wujiang*w2,pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)
  957. {
  958. int x;
  959. if((*w2).juese)
  960. {
  961. if(((*w2).zhuangbei[1].leixing==331)&&((*w1).zhuangbei[0].leixing!=303))
  962. {
  963. for(;;)
  964. {
  965. int m;
  966. printf("是否发动【八卦阵】防具效果?\n0 否\n1 是\n请输入选项之前的编号,以回车结束!\n");
  967. scanf("%d",&m);
  968. if(m==1)
  969. {
  970. Panding(paidui,paiduishu,qipaidui,qipaishu);
  971. if(qipaidui[(*qipaishu)-1].huase%2)
  972. {
  973. printf("【八卦阵】判定成功!\n");
  974. return 0;
  975. }
  976. }
  977. else if(m==0)
  978. {
  979. printf("【八卦阵】判定失败!\n");
  980. break;
  981. }
  982. else printf("你确定你输入的是“0”或“1”?\n");
  983. }
  984. }
  985. else if(((*w2).zhuangbei[1].leixing==331)&&((*w1).zhuangbei[0].leixing==303))printf("【青釭剑】锁定技被触发!\n");
  986. for(;;)
  987. {
  988. printf("请输入手牌之前的编号,或者输入“-1”放弃打出【闪】,以回车结束!\n");
  989. scanf("%d",&x);
  990. if(x==-1)
  991. {
  992. return -1;
  993. break;
  994. }
  995. else if((*w2).shoupai[x].leixing==102)
  996. {
  997. printf("玩家打出");
  998. ((*w2).shoupai)[x].Kanpai();
  999. qipaidui[*qipaishu]=((*w2).shoupai)[x];
  1000. for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
  1001. ((*w2).shoupaishu)--;
  1002. (*qipaishu)++;
  1003. return 0;
  1004. break;
  1005. }
  1006. else printf("你确定你打出的是【闪】?\n");
  1007. }
  1008. }
  1009. else
  1010. {
  1011. if(((*w2).zhuangbei[1].leixing==331)&&((*w1).zhuangbei[0].leixing!=303))
  1012. {
  1013. Panding(paidui,paiduishu,qipaidui,qipaishu);
  1014. if(qipaidui[(*qipaishu)-1].huase%2)
  1015. {
  1016. printf("【八卦阵】判定成功!\n");
  1017. return 0;
  1018. }
  1019. else printf("【八卦阵】判定失败!\n");
  1020. }
  1021. else if(((*w2).zhuangbei[1].leixing==331)&&((*w1).zhuangbei[0].leixing==303))printf("【青釭剑】锁定技被触发!\n");
  1022. int i;
  1023. for(x=0;x<((*w2).shoupaishu);x++)
  1024. {
  1025. if((*w2).shoupai[x].leixing==102)
  1026. {
  1027. printf("电脑打出");
  1028. ((*w2).shoupai)[x].Kanpai();
  1029. qipaidui[*qipaishu]=((*w2).shoupai)[x];
  1030. for(i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
  1031. ((*w2).shoupaishu)--;
  1032. (*qipaishu)++;
  1033. return 0;
  1034. break;
  1035. }
  1036. }
  1037. return -1;
  1038. }
  1039. }
  1040. int Sha(wujiang *w1,wujiang*w2,pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)
  1041. {
  1042. int x;
  1043. if((*w2).juese)
  1044. {
  1045. printf("请打出【闪】响应【杀】!否则你将受到1点伤害!\n");
  1046. x=Shan(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
  1047. if(x==-1)
  1048. {
  1049. int i;
  1050. ((*w2).tili)--;
  1051. printf("电脑对玩家造成1点伤害!\n");
  1052. i=Binsi(w1,w2,qipaidui,qipaishu);
  1053. return i;
  1054. }
  1055. else if(x==0&&((*w1).zhuangbei[0].leixing==306))
  1056. {
  1057. int i;
  1058. if(((*w1).shoupaishu)>=2)
  1059. {
  1060. printf("电脑弃掉:\n");
  1061. ((*w1).shoupai)[0].Kanpai();
  1062. qipaidui[*qipaishu]=((*w1).shoupai)[0];
  1063. for(i=1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
  1064. ((*w1).shoupaishu)--;
  1065. (*qipaishu)++;
  1066. ((*w1).shoupai)[0].Kanpai();
  1067. qipaidui[*qipaishu]=((*w1).shoupai)[0];
  1068. for(i=1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
  1069. ((*w1).shoupaishu)--;
  1070. (*qipaishu)++;
  1071. printf("发动【贯石斧】武器效果使【杀】造成伤害!\n");
  1072. ((*w2).tili)--;
  1073. i=Binsi(w1,w2,qipaidui,qipaishu);
  1074. return i;
  1075. }
  1076. else return 0;
  1077. }
  1078. else if(x==0&&((*w1).zhuangbei[0].leixing==304))
  1079. {
  1080. int i;
  1081. for(x=0;x<((*w1).shoupaishu);x++)
  1082. {
  1083. if((*w1).shoupai[x].leixing==101)
  1084. {
  1085. printf("电脑发动【青龙偃月刀】效果对玩家使用");
  1086. ((*w1).shoupai)[x].Kanpai();
  1087. qipaidui[*qipaishu]=((*w1).shoupai)[x];
  1088. for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
  1089. ((*w1).shoupaishu)--;
  1090. (*qipaishu)++;
  1091. i=Sha(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
  1092. return i;
  1093. break;
  1094. }
  1095. }
  1096. return 0;
  1097. }
  1098. }
  1099. else//往上是玩家被使用【杀】 往下是电脑被使用【杀】
  1100. {
  1101. x=Shan(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
  1102. if(x==-1)
  1103. {
  1104. if((*w1).zhuangbei[0].leixing==308)
  1105. {
  1106. for(;;)
  1107. {
  1108. printf("是否发动【麒麟弓】武器效果?\n0 否\n1 是\n");
  1109. scanf("%d",&x);
  1110. if(x==1)
  1111. {
  1112. if(((*w2).zhuangbei[2].leixing==-1)&&((*w2).zhuangbei[3].leixing==-1))
  1113. {
  1114. printf("电脑根本没有马,射你妹的马啊!\n");
  1115. break;
  1116. }
  1117. else
  1118. {
  1119. for(;;)
  1120. {
  1121. printf("0 ");
  1122. ((*w2).zhuangbei[2]).Kanpai();
  1123. printf("1 ");
  1124. ((*w2).zhuangbei[3]).Kanpai();
  1125. printf("请选择要弃掉的马,输入之前的编号,以回车结束!\n");
  1126. scanf("%d",&x);
  1127. if((x==0)&&((*w2).zhuangbei[2].leixing!=-1))
  1128. {
  1129. printf("你弃掉了电脑的");
  1130. ((*w2).zhuangbei)[2].Kanpai();
  1131. qipaidui[*qipaishu]=((*w2).zhuangbei)[2];
  1132. ((*w2).zhuangbeishu)--;
  1133. (*qipaishu)++;
  1134. ((*w2).zhuangbei)[2].leixing=-1;
  1135. ((*w2).juli[0])++;
  1136. break;
  1137. }
  1138. else if((x==1)&&((*w2).zhuangbei[3].leixing!=-1))
  1139. {
  1140. printf("你弃掉了电脑的");
  1141. ((*w2).zhuangbei)[3].Kanpai();
  1142. qipaidui[*qipaishu]=((*w2).zhuangbei)[3];
  1143. ((*w2).zhuangbeishu)--;
  1144. (*qipaishu)++;
  1145. ((*w2).zhuangbei)[3].leixing=-1;
  1146. ((*w1).juli[0])--;
  1147. break;
  1148. }
  1149. else printf("射你妹的马!");
  1150. }
  1151. break;
  1152. }
  1153. }
  1154. else if(x==0)break;
  1155. else printf("键盘上的“0”和“1”被你吃了吗?\n");
  1156. }
  1157. }
  1158. int i;
  1159. ((*w2).tili)--;
  1160. printf("玩家对电脑造成1点伤害!\n");
  1161. i=Binsi(w1,w2,qipaidui,qipaishu);
  1162. return i;
  1163. }
  1164. else if(x==0&&((*w1).zhuangbei[0].leixing==306))
  1165. {
  1166. for(;;)
  1167. {
  1168. printf("是否发动【贯石斧】武器效果?\n0 否\n1 是\n");
  1169. scanf("%d",&x);
  1170. if(x==1)
  1171. {
  1172. int i;
  1173. if((*w1).shoupaishu+(*w1).zhuangbeishu<=2)
  1174. {
  1175. printf("你除了【贯石斧】以外连2张牌都没有,发动你妹的效果!\n");
  1176. break;
  1177. }
  1178. else
  1179. {
  1180. printf("请分别弃掉两张牌!\n");
  1181. for(i=0;i<=2;i++)
  1182. {
  1183. for(;;)
  1184. {
  1185. printf("请选择区域:\n0 手牌\n1 装备\n");
  1186. scanf("%d",&x);
  1187. if(x==0&&((*w1).shoupaishu==0))printf("你根本没有手牌,弃你妹啊!\n");
  1188. else if(x==1&&((*w1).zhuangbeishu==1))printf("你根本没有别的装备,弃你妹啊!\n");
  1189. else if(x>=0&&x<=1)break;
  1190. else printf("键盘上的“0”和“1”被你吃了吗?\n");
  1191. }
  1192. if(x==0)
  1193. {
  1194. for(;;)
  1195. {
  1196. (*w1).Kanshoupai();
  1197. printf("弃牌请输入手牌之前的编号,以回车结束!\n");
  1198. scanf("%d",&x);
  1199. if(x>=0&&x<((*w1).shoupaishu))break;
  1200. else printf("弃你妹的手牌!\n");
  1201. }
  1202. printf("你弃掉了");
  1203. ((*w1).shoupai)[x].Kanpai();
  1204. qipaidui[*qipaishu]=((*w1).shoupai)[x];
  1205. for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
  1206. ((*w1).shoupaishu)--;
  1207. (*qipaishu)++;
  1208. }
  1209. else
  1210. {
  1211. for(;;)
  1212. {
  1213. (*w1).Kanzhuangbei();
  1214. printf("请输入装备之前的编号,以回车键结束!\n");
  1215. scanf("%d",&x);
  1216. if((((*w1).zhuangbei[x]).leixing!=-1)&&(x>=0)&&(x<=3))
  1217. {
  1218. printf("你弃掉了");
  1219. ((*w1).zhuangbei)[x].Kanpai();
  1220. qipaidui[*qipaishu]=((*w1).zhuangbei)[x];
  1221. ((*w1).zhuangbeishu)--;
  1222. (*qipaishu)++;
  1223. ((*w1).zhuangbei)[x].leixing=-1;
  1224. break;
  1225. }
  1226. else printf("弃你妹的装备!\n");
  1227. }
  1228. }
  1229. }
  1230. }
  1231. printf("玩家发动【贯石斧】武器效果使【杀】造成伤害!\n");
  1232. ((*w2).tili)--;
  1233. i=Binsi(w1,w2,qipaidui,qipaishu);
  1234. return i;
  1235. break;
  1236. }
  1237. else if(x==0)break;
  1238. else printf("键盘上的“0”和“1”被你吃了吗?\n");
  1239. }
  1240. }
  1241. else if(x==0&&((*w1).zhuangbei[0].leixing==304))
  1242. {
  1243. for(;;)
  1244. {
  1245. printf("是否发动【青龙偃月刀】武器效果?\n0 否\n1 是\n");
  1246. scanf("%d",&x);
  1247. if(x==1)
  1248. {
  1249. for(;;)
  1250. {
  1251. printf("请对电脑使用一张【杀】!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
  1252. (*w1).Kanshoupai();
  1253. scanf("%d",&x);
  1254. if(x==-1)
  1255. {
  1256. return 0;
  1257. break;
  1258. }
  1259. else if((*w1).shoupai[x].leixing==101)
  1260. {
  1261. int i;
  1262. printf("玩家对电脑使用");
  1263. ((*w1).shoupai)[x].Kanpai();
  1264. qipaidui[*qipaishu]=((*w1).shoupai)[x];
  1265. for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
  1266. ((*w1).shoupaishu)--;
  1267. (*qipaishu)++;
  1268. i=Sha(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
  1269. return i;
  1270. break;
  1271. }
  1272. else printf("你确定你打出的是【杀】?\n");
  1273. }
  1274. }
  1275. else if(x==0)
  1276. {
  1277. return 0;
  1278. break;
  1279. }
  1280. else printf("你确定你输入的是“0”或“1”?\n");
  1281. }
  1282. }
  1283. else return 0;
  1284. }
  1285. return 0;
  1286. }
  1287. void Tao(wujiang*w1)//【桃】函数
  1288. {
  1289. ((*w1).tili)++;
  1290. if((*w1).juese)printf("玩家");
  1291. else printf("电脑");
  1292. printf("恢复了1点体力!\n");
  1293. if(((*w1).tili)>((*w1).tilishangxian))printf("你被撑死了!\n");
  1294. }
  1295. void Chai(wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu)
  1296. {
  1297. int i,x,y;
  1298. if((*w1).juese)
  1299. {
  1300. for(;;)
  1301. {
  1302. if((*w2).shoupaishu+(*w2).zhuangbeishu+(*w2).pandingshu==0)
  1303. {
  1304. printf("对方空城,拆你妹啊!\n");
  1305. break;
  1306. }
  1307. else
  1308. {
  1309. printf("请选择想拆的区域,输入选项之前的编号,以回车结束!\n0 手牌\n1 装备区\n2 判定区\n");
  1310. scanf("%d",&x);
  1311. if(x==0&&((*w2).shoupaishu==0))printf("你拆掉了一张空气!\n");
  1312. else if(x==1&&((*w2).zhuangbeishu==0))printf("你拆掉了一张空气!\n");
  1313. else if(x==2&&((*w2).pandingshu==0))printf("你拆掉了一张空气!\n");
  1314. else if(x>=0&&x<=2)break;
  1315. else printf("你拆掉了太空区里的一张牌!\n");
  1316. }
  1317. }
  1318. switch(x)
  1319. {
  1320. case 0:
  1321. srand((unsigned)time(NULL));
  1322. y=rand()%((*w2).shoupaishu);
  1323. printf("你弃掉了电脑的");
  1324. ((*w2).shoupai)[y].Kanpai();
  1325. qipaidui[*qipaishu]=((*w2).shoupai)[y];
  1326. for(i=y+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
  1327. ((*w2).shoupaishu)--;
  1328. (*qipaishu)++;
  1329. break;
  1330. case 1:
  1331. for(;;)
  1332. {
  1333. (*w2).Kanzhuangbei();
  1334. printf("请输入装备之前的编号,以回车键结束!\n");
  1335. scanf("%d",&y);
  1336. if((((*w2).zhuangbei[y]).leixing!=-1)&&(y>=0)&&(y<=3))
  1337. {
  1338. printf("你弃掉了电脑的");
  1339. ((*w2).zhuangbei)[y].Kanpai();
  1340. qipaidui[*qipaishu]=((*w2).zhuangbei)[y];
  1341. ((*w2).zhuangbeishu)--;
  1342. (*qipaishu)++;
  1343. ((*w2).zhuangbei)[y].leixing=-1;
  1344. if(!y)((*w2).zhuangbei)[y].changdu=1;
  1345. else if(y==2)((*w2).juli[0])++;
  1346. else if(y==3)((*w1).juli[0])--;
  1347. break;
  1348. }
  1349. else printf("你弃掉了一张空气!\n");
  1350. }
  1351. break;
  1352. case 2:
  1353. for(;;)
  1354. {
  1355. (*w2).Kanpandingpai();
  1356. printf("请输入判定牌之前的编号,以回车键结束!\n");
  1357. scanf("%d",&y);
  1358. if((*w2).pandingpai[y].leixing!=-1)
  1359. {
  1360. printf("你弃掉了电脑的");
  1361. ((*w2).pandingpai)[y].Kanpai();
  1362. qipaidui[*qipaishu]=((*w2).pandingpai)[y];
  1363. ((*w2).pandingshu)--;
  1364. (*qipaishu)++;
  1365. ((*w2).pandingpai)[y].leixing=-1;
  1366. break;
  1367. }
  1368. else printf("你弃掉了一张空气!\n");
  1369. }
  1370. break;
  1371. default:break;
  1372. }
  1373. }
  1374. else
  1375. {
  1376. if((*w2).zhuangbeishu)
  1377. {
  1378. if((*w2).zhuangbei[1].leixing!=-1)
  1379. {
  1380. printf("电脑弃掉了玩家的");
  1381. ((*w2).zhuangbei)[1].Kanpai();
  1382. qipaidui[*qipaishu]=((*w2).zhuangbei)[1];
  1383. ((*w2).zhuangbeishu)--;
  1384. (*qipaishu)++;
  1385. ((*w2).zhuangbei)[1].leixing=-1;
  1386. }
  1387. else if((*w2).zhuangbei[3].leixing!=-1)
  1388. {
  1389. printf("电脑弃掉了玩家的");
  1390. ((*w2).zhuangbei)[3].Kanpai();
  1391. qipaidui[*qipaishu]=((*w2).zhuangbei)[3];
  1392. ((*w2).zhuangbeishu)--;
  1393. (*qipaishu)++;
  1394. ((*w2).zhuangbei)[3].leixing=-1;
  1395. ((*w1).juli[0])--;
  1396. }
  1397. else if((*w2).zhuangbei[0].leixing!=-1)
  1398. {
  1399. printf("电脑弃掉了玩家的");
  1400. ((*w2).zhuangbei)[0].Kanpai();
  1401. qipaidui[*qipaishu]=((*w2).zhuangbei)[0];
  1402. ((*w2).zhuangbeishu)--;
  1403. (*qipaishu)++;
  1404. ((*w2).zhuangbei)[0].leixing=-1;
  1405. ((*w2).zhuangbei)[0].changdu=1;
  1406. }
  1407. else
  1408. {
  1409. printf("电脑弃掉了玩家的");
  1410. ((*w2).zhuangbei)[2].Kanpai();
  1411. qipaidui[*qipaishu]=((*w2).zhuangbei)[2];
  1412. ((*w2).zhuangbeishu)--;
  1413. (*qipaishu)++;
  1414. ((*w2).zhuangbei)[2].leixing=-1;
  1415. ((*w2).juli[0])++;
  1416. }
  1417. }
  1418. else
  1419. {
  1420. srand((unsigned)time(NULL));
  1421. y=rand()%((*w2).shoupaishu);
  1422. printf("电脑弃掉了玩家的手牌");
  1423. ((*w2).shoupai)[y].Kanpai();
  1424. qipaidui[*qipaishu]=((*w2).shoupai)[y];
  1425. for(i=y+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
  1426. ((*w2).shoupaishu)--;
  1427. (*qipaishu)++;
  1428. }
  1429. }
  1430. }
  1431. void Qian(wujiang *w1,wujiang *w2)
  1432. {
  1433. int i,x,y;
  1434. if((*w1).juese)
  1435. {
  1436. for(;;)
  1437. {
  1438. if((*w2).shoupaishu+(*w2).zhuangbeishu+(*w2).pandingshu==0)
  1439. {
  1440. printf("对方空城啦!你牵走了一张寂寞!\n");
  1441. break;
  1442. }
  1443. else
  1444. {
  1445. printf("请选择想牵的区域,输入选项之前的编号,以回车结束!\n0 手牌\n1 装备区\n2 判定区\n");
  1446. scanf("%d",&x);
  1447. if(x==0&&((*w2).shoupaishu==0))printf("你牵走了一张空气!\n");
  1448. else if(x==1&&((*w2).zhuangbeishu==0))printf("你牵走了一张空气!\n");
  1449. else if(x==2&&((*w2).pandingshu==0))printf("你牵走了一张空气!\n");
  1450. else if(x>=0&&x<=2)break;
  1451. else printf("你牵走了太空区里的一张牌!\n");
  1452. }
  1453. }
  1454. switch(x)
  1455. {
  1456. case 0:
  1457. srand((unsigned)time(NULL));
  1458. y=rand()%((*w2).shoupaishu);
  1459. printf("你牵走了电脑的");
  1460. ((*w2).shoupai)[y].Kanpai();
  1461. (*w1).shoupai[(*w1).shoupaishu]=((*w2).shoupai)[y];
  1462. for(i=y+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
  1463. ((*w2).shoupaishu)--;
  1464. ((*w1).shoupaishu)++;
  1465. break;
  1466. case 1:
  1467. for(;;)
  1468. {
  1469. (*w2).Kanzhuangbei();
  1470. printf("请输入装备之前的编号,以回车键结束!\n");
  1471. scanf("%d",&y);
  1472. if((((*w2).zhuangbei[y]).leixing!=-1)&&(y>=0)&&(y<=3))
  1473. {
  1474. printf("你牵走了电脑的");
  1475. ((*w2).zhuangbei)[y].Kanpai();
  1476. (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[y];
  1477. ((*w2).zhuangbeishu)--;
  1478. ((*w1).shoupaishu)++;
  1479. ((*w2).zhuangbei)[y].leixing=-1;
  1480. if(!y)((*w2).zhuangbei[y]).changdu=1;
  1481. else if(y==2)((*w2).juli[0])++;
  1482. else if(y==3)((*w1).juli[0])--;
  1483. break;
  1484. }
  1485. else printf("你弃掉了一张空气!\n");
  1486. }
  1487. break;
  1488. case 2:
  1489. for(;;)
  1490. {
  1491. (*w2).Kanpandingpai();
  1492. printf("请输入判定牌之前的编号,以回车键结束!\n");
  1493. scanf("%d",&y);
  1494. if((*w2).pandingpai[y].leixing!=-1)
  1495. {
  1496. printf("你牵走了电脑的");
  1497. ((*w2).pandingpai)[y].Kanpai();
  1498. (*w1).shoupai[(*w1).shoupaishu]=((*w2).pandingpai)[y];
  1499. ((*w2).pandingshu)--;
  1500. ((*w1).shoupaishu)++;
  1501. ((*w2).pandingpai)[y].leixing=-1;
  1502. break;
  1503. }
  1504. else printf("你牵走了一张空气!\n");
  1505. }
  1506. break;
  1507. default:break;
  1508. }
  1509. }
  1510. else
  1511. {
  1512. if((*w2).zhuangbeishu)
  1513. {
  1514. if((*w2).zhuangbei[1].leixing!=-1)
  1515. {
  1516. printf("电脑牵走了玩家的");
  1517. ((*w2).zhuangbei)[1].Kanpai();
  1518. (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[1];
  1519. ((*w2).zhuangbeishu)--;
  1520. ((*w1).shoupaishu)++;
  1521. ((*w2).zhuangbei)[1].leixing=-1;
  1522. }
  1523. else if((*w2).zhuangbei[3].leixing!=-1)
  1524. {
  1525. printf("电脑牵走了玩家的");
  1526. ((*w2).zhuangbei)[3].Kanpai();
  1527. (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[3];
  1528. ((*w2).zhuangbeishu)--;
  1529. ((*w1).shoupaishu)++;
  1530. ((*w2).zhuangbei)[3].leixing=-1;
  1531. ((*w1).juli[0])--;
  1532. }
  1533. else if((*w2).zhuangbei[0].leixing!=-1)
  1534. {
  1535. printf("电脑牵走了玩家的");
  1536. ((*w2).zhuangbei)[0].Kanpai();
  1537. (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[0];
  1538. ((*w2).zhuangbeishu)--;
  1539. ((*w1).shoupaishu)++;
  1540. ((*w2).zhuangbei)[0].leixing=-1;
  1541. ((*w2).zhuangbei)[0].changdu=1;
  1542. }
  1543. else
  1544. {
  1545. printf("电脑牵走了玩家的");
  1546. ((*w2).zhuangbei)[2].Kanpai();
  1547. (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[2];
  1548. ((*w2).zhuangbeishu)--;
  1549. ((*w1).shoupaishu)++;
  1550. ((*w2).zhuangbei)[2].leixing=-1;
  1551. ((*w2).juli[0])--;
  1552. }
  1553. }
  1554. else
  1555. {
  1556. srand((unsigned)time(NULL));
  1557. y=rand()%((*w2).shoupaishu);
  1558. printf("电脑牵走了玩家的手牌");
  1559. ((*w2).shoupai)[y].Kanpai();
  1560. (*w1).shoupai[(*w1).shoupaishu]=((*w2).shoupai)[y];
  1561. for(i=y+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
  1562. ((*w2).shoupaishu)--;
  1563. ((*w1).shoupaishu)++;
  1564. }
  1565. }
  1566. }
  1567. void Wuzhong(wujiang*w1,pai A[104],int *x,pai B[104],int*y)
  1568. {
  1569. Mopai(&((*w1).shoupaishu),(*w1).shoupai,A,x,B,y,(*w1).juese);
  1570. }
  1571. int Juedou(wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu)
  1572. {
  1573. int i,j,x;
  1574. if((*w1).juese)
  1575. {
  1576. for(;;)
  1577. {
  1578. j=0;
  1579. for(x=0;x<((*w2).shoupaishu);x++)
  1580. {
  1581. if((*w2).shoupai[x].leixing==101)
  1582. {
  1583. printf("电脑打出");
  1584. ((*w2).shoupai)[x].Kanpai();
  1585. qipaidui[*qipaishu]=((*w2).shoupai)[x];
  1586. for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
  1587. ((*w2).shoupaishu)--;
  1588. (*qipaishu)++;
  1589. j=1;
  1590. break;
  1591. }
  1592. }
  1593. if(!j)
  1594. {
  1595. printf("玩家对电脑造成1点伤害!\n");
  1596. ((*w2).tili)--;
  1597. i=Binsi(w1,w2,qipaidui,qipaishu);
  1598. return i;
  1599. break;
  1600. }
  1601. j=0;
  1602. for(;;)
  1603. {
  1604. printf("请打出一张【杀】响应【决斗】,否则你将受到1点伤害!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
  1605. if(((*w1).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
  1606. (*w1).Kanshoupai();
  1607. scanf("%d",&x);
  1608. if(x==-1)
  1609. {
  1610. int i;
  1611. ((*w1).tili)--;
  1612. printf("电脑对玩家造成1点伤害!\n");
  1613. i=Binsi(w2,w1,qipaidui,qipaishu);
  1614. return i;
  1615. break;
  1616. }
  1617. else if(((*w1).zhuangbei[0].leixing==305)&&x==100)
  1618. {
  1619. pai p=Zhangba(w1,qipaidui,qipaishu);
  1620. p.paifu=-1;
  1621. printf("打出!\n");
  1622. j=1;
  1623. break;
  1624. }
  1625. else if((*w1).shoupai[x].leixing==101)
  1626. {
  1627. printf("玩家打出");
  1628. ((*w1).shoupai)[x].Kanpai();
  1629. qipaidui[*qipaishu]=((*w1).shoupai)[x];
  1630. for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
  1631. ((*w1).shoupaishu)--;
  1632. (*qipaishu)++;
  1633. j=1;
  1634. break;
  1635. }
  1636. else printf("你确定你打出的是【杀】?\n");
  1637. }
  1638. }
  1639. }
  1640. else
  1641. {
  1642. for(;;)
  1643. {
  1644. j=0;
  1645. for(;;)
  1646. {
  1647. printf("请打出一张【杀】响应【决斗】,否则你将受到1点伤害!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
  1648. if(((*w1).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
  1649. (*w2).Kanshoupai();
  1650. scanf("%d",&x);
  1651. if(x==-1)
  1652. {
  1653. int i;
  1654. ((*w2).tili)--;
  1655. printf("电脑对玩家造成1点伤害!\n");
  1656. i=Binsi(w1,w2,qipaidui,qipaishu);
  1657. return i;
  1658. break;
  1659. }
  1660. else if(((*w2).zhuangbei[0].leixing==305)&&x==100)
  1661. {
  1662. pai p=Zhangba(w2,qipaidui,qipaishu);
  1663. p.paifu=-1;
  1664. printf("打出!\n");
  1665. j=1;
  1666. break;
  1667. }
  1668. else if((*w2).shoupai[x].leixing==101)
  1669. {
  1670. printf("玩家打出");
  1671. ((*w2).shoupai)[x].Kanpai();
  1672. qipaidui[*qipaishu]=((*w2).shoupai)[x];
  1673. for(i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
  1674. ((*w2).shoupaishu)--;
  1675. (*qipaishu)++;
  1676. j=1;
  1677. break;
  1678. }
  1679. else printf("你确定你打出的是【杀】?\n");
  1680. }
  1681. j=0;
  1682. for(x=0;x<((*w1).shoupaishu);x++)
  1683. {
  1684. if((*w1).shoupai[x].leixing==101)
  1685. {
  1686. printf("电脑打出");
  1687. ((*w1).shoupai)[x].Kanpai();
  1688. qipaidui[*qipaishu]=((*w1).shoupai)[x];
  1689. for(int i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
  1690. ((*w1).shoupaishu)--;
  1691. (*qipaishu)++;
  1692. j=1;
  1693. break;
  1694. }
  1695. }
  1696. if(!j)
  1697. {
  1698. printf("玩家对电脑造成1点伤害!\n");
  1699. ((*w2).tili)--;
  1700. i=Binsi(w2,w1,qipaidui,qipaishu);
  1701. return i;
  1702. break;
  1703. }
  1704. }
  1705. }
  1706. }
  1707. int Jiedao(wujiang*w1,wujiang*w2,pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)
  1708. {
  1709. int i,j=0,x;
  1710. if((*w1).juese)
  1711. {
  1712. for(x=0;x<((*w2).shoupaishu);x++)
  1713. {
  1714. if((*w2).shoupai[x].leixing==101)
  1715. {
  1716. printf("电脑对玩家使用");
  1717. ((*w2).shoupai)[x].Kanpai();
  1718. qipaidui[*qipaishu]=((*w2).shoupai)[x];
  1719. for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
  1720. ((*w2).shoupaishu)--;
  1721. (*qipaishu)++;
  1722. j=1;
  1723. break;
  1724. }
  1725. }
  1726. if(j)
  1727. {
  1728. i=Sha(w2,w1,paidui,paiduishu,qipaidui,qipaishu);
  1729. return i;
  1730. printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
  1731. }
  1732. else
  1733. {
  1734. printf("电脑放弃使用【杀】,玩家获得电脑的武器");
  1735. (*w2).zhuangbei[0].Kanpai();
  1736. (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[0];
  1737. ((*w2).zhuangbeishu)--;
  1738. ((*w1).shoupaishu)++;
  1739. ((*w2).zhuangbei)[0].leixing=-1;
  1740. ((*w2).zhuangbei)[0].changdu=1;
  1741. (*w1).Kanshoupai();
  1742. return 0;
  1743. }
  1744. }
  1745. else
  1746. {
  1747. for(;;)
  1748. {
  1749. printf("请对电脑使用一张【杀】,否则电脑将获得你的武器!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
  1750. if(((*w2).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
  1751. (*w2).Kanshoupai();
  1752. scanf("%d",&x);
  1753. if(x==-1)break;
  1754. else if(((*w2).zhuangbei[0].leixing==305)&&x==100)
  1755. {
  1756. pai p=Zhangba(w2,qipaidui,qipaishu);
  1757. p.paifu=-1;
  1758. printf("使用!\n");
  1759. j=1;
  1760. break;
  1761. }
  1762. else if((*w2).shoupai[x].leixing==101)
  1763. {
  1764. printf("玩家对电脑使用");
  1765. ((*w2).shoupai)[x].Kanpai();
  1766. qipaidui[*qipaishu]=((*w2).shoupai)[x];
  1767. for(i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
  1768. ((*w2).shoupaishu)--;
  1769. (*qipaishu)++;
  1770. j=1;
  1771. break;
  1772. }
  1773. else printf("你确定你使用的是【杀】?\n");
  1774. }
  1775. if(j)
  1776. {
  1777. i=Sha(w2,w1,paidui,paiduishu,qipaidui,qipaishu);
  1778. return i;
  1779. printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
  1780. }
  1781. else
  1782. {
  1783. printf("玩家放弃使用【杀】,电脑获得玩家的武器");
  1784. ((*w2).zhuangbei)[0].Kanpai();
  1785. (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[0];
  1786. ((*w2).zhuangbeishu)--;
  1787. ((*w1).shoupaishu)++;
  1788. ((*w2).zhuangbei)[0].leixing=-1;
  1789. ((*w2).zhuangbei)[0].changdu=1;
  1790. return 0;
  1791. }
  1792. }
  1793. }
  1794. void Taoyuan(wujiang*w)
  1795. {
  1796. if((*w).tili<(*w).tilishangxian)
  1797. {
  1798. ((*w).tili)++;
  1799. if((*w).juese)printf("玩家");
  1800. else printf("电脑");
  1801. printf("恢复1点体力!\n");
  1802. }
  1803. }
  1804. void Kaipai(pai paidui[104],int* paiduishu,int renshu,pai wugu[10])
  1805. {
  1806. int i;
  1807. printf("五谷丰登开牌:\n");
  1808. for(i=1;i<=renshu;i++)
  1809. {
  1810. wugu[i-1]=paidui[104-(*paiduishu)];
  1811. (*paiduishu)--;
  1812. printf("%d ",i-1);
  1813. wugu[i-1].Kanpai();
  1814. }
  1815. }
  1816. void Qupai(pai wugu[10],wujiang*w)
  1817. {
  1818. int i,x;
  1819. printf("五谷丰登开牌:\n");
  1820. for(i=0;(wugu[i].leixing)!=-1;i++)
  1821. {
  1822. printf("%d ",i);
  1823. wugu[i].Kanpai();
  1824. }
  1825. if((*w).juese)
  1826. {
  1827. for(;;)
  1828. {
  1829. printf("请选择你想要的卡牌,输入卡牌之前的编号,以回车结束!\n");
  1830. scanf("%d",&x);
  1831. if(wugu[x].leixing!=-1)
  1832. {
  1833. printf("玩家选择");
  1834. wugu[x].Kanpai();
  1835. (*w).shoupai[(*w).shoupaishu]=wugu[x];
  1836. ((*w).shoupaishu)++;
  1837. for(i=x+1;i<=9;i++)wugu[i-1]=wugu[i];
  1838. wugu[9].leixing=-1;
  1839. break;
  1840. }
  1841. printf("你选择了一张空气加入手牌!");
  1842. }
  1843. }
  1844. else
  1845. {
  1846. printf("电脑选择");
  1847. wugu[0].Kanpai();
  1848. (*w).shoupai[(*w).shoupaishu]=wugu[0];
  1849. ((*w).shoupaishu)++;
  1850. for(i=1;i<=9;i++)wugu[i-1]=wugu[i];
  1851. wugu[9].leixing=-1;
  1852. }
  1853. }
  1854. void Rengpai(pai wugu[10],pai qipaidui[104],int*qipaishu)
  1855. {
  1856. int i;
  1857. for(i=0;wugu[i].leixing!=-1;i++)
  1858. {
  1859. qipaidui[*qipaishu]=wugu[i];
  1860. (*qipaishu)++;
  1861. wugu[i].leixing=-1;
  1862. }
  1863. }
  1864. int Nanman(wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu)
  1865. {
  1866. int i,x;
  1867. if((*w1).juese)
  1868. {
  1869. for(x=0;x<((*w2).shoupaishu);x++)
  1870. {
  1871. if((*w2).shoupai[x].leixing==101)
  1872. {
  1873. printf("电脑打出");
  1874. ((*w2).shoupai)[x].Kanpai();
  1875. qipaidui[*qipaishu]=((*w2).shoupai)[x];
  1876. for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
  1877. ((*w2).shoupaishu)--;
  1878. (*qipaishu)++;
  1879. return 0;
  1880. break;
  1881. }
  1882. }
  1883. printf("玩家对电脑造成1点伤害!\n");
  1884. ((*w2).tili)--;
  1885. i=Binsi(w1,w2,qipaidui,qipaishu);
  1886. return i;
  1887. }
  1888. else
  1889. {
  1890. for(;;)
  1891. {
  1892. printf("请打出一张【杀】响应【南蛮入侵】,否则你将受到1点伤害!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
  1893. if(((*w2).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
  1894. (*w2).Kanshoupai();
  1895. scanf("%d",&x);
  1896. if(x==-1)
  1897. {
  1898. int i;
  1899. ((*w2).tili)--;
  1900. printf("电脑对玩家造成1点伤害!\n");
  1901. i=Binsi(w1,w2,qipaidui,qipaishu);
  1902. return i;
  1903. break;
  1904. }
  1905. else if(((*w2).zhuangbei[0].leixing==305)&&x==100)
  1906. {
  1907. pai p=Zhangba(w2,qipaidui,qipaishu);
  1908. p.paifu=-1;
  1909. printf("使用!\n");
  1910. return 0;
  1911. break;
  1912. }
  1913. else if((*w2).shoupai[x].leixing==101)
  1914. {
  1915. printf("玩家打出");
  1916. ((*w2).shoupai)[x].Kanpai();
  1917. qipaidui[*qipaishu]=((*w2).shoupai)[x];
  1918. for(i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
  1919. ((*w2).shoupaishu)--;
  1920. (*qipaishu)++;
  1921. return 0;
  1922. break;
  1923. }
  1924. else printf("你确定你打出的是【杀】?\n");
  1925. }
  1926. }
  1927. }
  1928. int Wanjian(wujiang*w1,wujiang*w2,pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)
  1929. {
  1930. int i;
  1931. i=Shan(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
  1932. if(i==-1)
  1933. {
  1934. i=Binsi(w1,w2,qipaidui,qipaishu);
  1935. return i;
  1936. }
  1937. else return 0;
  1938. }
  1939. int Chupai(pai paidui[104],pai qipaidui[104],int *paiduishu,int*qipaishu,wujiang*w1,wujiang*w2,pai yuanshipaidui[2][4][13])
  1940. {
  1941. pai p1;
  1942. int sha=1;int y=-1,i,t=((*w1).shoupaishu)-1;
  1943. for(;;t--)
  1944. {

  1945. if((*w1).juese)
  1946. {
  1947. printf("\n电脑当前手牌数:%d\n",((*w2).shoupaishu));
  1948. (*w2).Kanzhuangbei();
  1949. (*w1).Kanshoupai();
  1950. (*w1).Kanzhuangbei();
  1951. }
  1952. int j=0;
  1953. if((*w1).juese&&((*w1).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
  1954. y=Xuanpai(w1,t);
  1955. p1=Panpai(w1,&sha,y,qipaidui,qipaishu);
  1956. if((p1).leixing==-1)break;
  1957. else if((p1).leixing==0)continue;
  1958. else
  1959. {
  1960. int duixiang;
  1961. duixiang=Mubiao(p1,w1,w2,&sha);
  1962. if(duixiang==-2)continue;
  1963. else
  1964. {
  1965. Da1pai(w1,w2,qipaidui,qipaishu,y);
  1966. Miaoshu(p1,((*w1).juese),duixiang);
  1967. if(!((*w1).juese))
  1968. {
  1969. printf("\n电脑当前手牌数:%d\n",((*w1).shoupaishu));
  1970. (*w1).Kanzhuangbei();
  1971. (*w2).Kanshoupai();
  1972. (*w2).Kanzhuangbei();
  1973. }
  1974. switch(p1.leixing)
  1975. {
  1976. case 101:
  1977. i=Sha(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
  1978. if(i==-1){return -1;break;}
  1979. if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
  1980. else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
  1981. break;
  1982. case 103:
  1983. Tao(w1);
  1984. break;
  1985. case 201:
  1986. for(;;)
  1987. {
  1988. i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
  1989. if(!i)break;
  1990. j++;
  1991. i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
  1992. if(!i)break;
  1993. j++;
  1994. }
  1995. if(!(j%2))Chai(w1,w2,qipaidui,qipaishu);
  1996. else;
  1997. if((*w1).juese)(*w1).Kanshoupai();
  1998. break;
  1999. case 202:
  2000. for(;;)
  2001. {
  2002. i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
  2003. if(!i)break;
  2004. j++;
  2005. i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
  2006. if(!i)break;
  2007. j++;
  2008. }
  2009. if(!(j%2))Qian(w1,w2);
  2010. else;
  2011. if((*w1).juese)(*w1).Kanshoupai();
  2012. break;
  2013. case 203:
  2014. for(;;)
  2015. {
  2016. i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
  2017. if(!i)break;
  2018. j++;
  2019. i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
  2020. if(!i)break;
  2021. j++;
  2022. }
  2023. if(!(j%2))Wuzhong(w1,paidui,paiduishu,qipaidui,qipaishu);
  2024. else;
  2025. break;
  2026. case 204:
  2027. for(;;)
  2028. {
  2029. i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
  2030. if(!i)break;
  2031. j++;
  2032. i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
  2033. if(!i)break;
  2034. j++;
  2035. }
  2036. if(!(j%2))
  2037. {
  2038. i=Juedou(w1,w2,qipaidui,qipaishu);
  2039. if(i==-1)return -1;
  2040. if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
  2041. else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
  2042. }
  2043. break;
  2044. case 205:
  2045. for(;;)
  2046. {
  2047. i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
  2048. if(!i)break;
  2049. j++;
  2050. i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
  2051. if(!i)break;
  2052. j++;
  2053. }
  2054. if(!(j%2))
  2055. {
  2056. i=Jiedao(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
  2057. if(i==-1)return -1;
  2058. if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
  2059. else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
  2060. }
  2061. break;
  2062. case 206:
  2063. for(;;)
  2064. {
  2065. i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
  2066. if(!i)break;
  2067. j++;
  2068. i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
  2069. if(!i)break;
  2070. j++;
  2071. }
  2072. if(!(j%2))Taoyuan(w1);
  2073. j=0;
  2074. for(;;)
  2075. {
  2076. i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
  2077. if(!i)break;
  2078. j++;
  2079. i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
  2080. if(!i)break;
  2081. j++;
  2082. }
  2083. if(!(j%2))Taoyuan(w2);
  2084. break;
  2085. case 207:
  2086. pai wugu[10];
  2087. for(i=1;i<=10;i++)wugu[i-1].leixing=-1;
  2088. Kaipai(paidui,paiduishu,2,wugu);
  2089. for(;;)
  2090. {
  2091. i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
  2092. if(!i)break;
  2093. j++;
  2094. i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
  2095. if(!i)break;
  2096. j++;
  2097. }
  2098. if(!(j%2))Qupai(wugu,w1);
  2099. for(;;)
  2100. {
  2101. i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
  2102. if(!i)break;
  2103. j++;
  2104. i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
  2105. if(!i)break;
  2106. j++;
  2107. }
  2108. if(!(j%2))Qupai(wugu,w2);
  2109. Rengpai(wugu,qipaidui,qipaishu); printf("弃牌数:%d\n",*qipaishu);
  2110. break;
  2111. case 208:
  2112. for(;;)
  2113. {
  2114. i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
  2115. if(!i)break;
  2116. j++;
  2117. i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
  2118. if(!i)break;
  2119. j++;
  2120. }
  2121. if(!(j%2))
  2122. {
  2123. i=Nanman(w1,w2,qipaidui,qipaishu);
  2124. if(i==-1)return -1;
  2125. if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
  2126. else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
  2127. }
  2128. break;
  2129. case 209:
  2130. for(;;)
  2131. {
  2132. i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
  2133. if(!i)break;
  2134. j++;
  2135. i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
  2136. if(!i)break;
  2137. j++;
  2138. }
  2139. if(!(j%2))
  2140. {
  2141. i=Wanjian(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
  2142. if(i==-1)return -1;
  2143. if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
  2144. else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
  2145. }
  2146. break;
  2147. case 361:
  2148. case 362:
  2149. case 363:
  2150. ((*w1).juli[0])--;break;
  2151. case 381:
  2152. case 382:
  2153. case 383:
  2154. ((*w2).juli[0])++;break;
  2155. default:break;
  2156. }
  2157. printf("\n");
  2158. }
  2159. }
  2160. }
  2161. return 0;
  2162. }
  2163. void Qipai(pai shoupai[20],int *shoupaishu,pai qipaidui[104],int *qipaishu,int juese,int *shoupaishangxian)
  2164. {
  2165. int x;
  2166. if((*shoupaishu)>(*shoupaishangxian))
  2167. {
  2168. if(juese!=1&&juese!=0)printf("身份参数错误!");
  2169. int q=(*shoupaishu)-(*shoupaishangxian);
  2170. int i,j;
  2171. for(j=1;j<=q;j++)
  2172. {
  2173. for(;;)
  2174. {
  2175. if(juese)
  2176. {
  2177. printf("弃牌请输入手牌之前的编号,以回车结束!\n注:一次只能弃一张牌\n");
  2178. printf("手牌数:%d\n",*shoupaishu);
  2179. scanf("%d",&x);
  2180. if(x>=0&&x<(*shoupaishu))break;
  2181. else printf("你弃掉了一张空气!\n");
  2182. }
  2183. else
  2184. {
  2185. srand((unsigned)time(NULL));
  2186. x=rand()%(*shoupaishu);
  2187. break;
  2188. }
  2189. }
  2190. qipaidui[*qipaishu]=shoupai[x];
  2191. for(i=x+1;i<=(*shoupaishu);i++)shoupai[i-1]=shoupai[i];
  2192. (*shoupaishu)--;
  2193. if(juese)printf("弃牌阶段玩家弃置");
  2194. else printf("弃牌阶段电脑弃置");
  2195. qipaidui[*qipaishu].Kanpai();
  2196. (*qipaishu)++;
  2197. int m;
  2198. if(juese)
  2199. {
  2200. printf("玩家当前手牌:\n");
  2201. for(m=0;m<=(*shoupaishu-1);m++)
  2202. {
  2203. printf("%d ",m);
  2204. (shoupai[m]).Kanpai();
  2205. }
  2206. } printf("弃牌堆:%d\n",*qipaishu);
  2207. }
  2208. }
  2209. }
  2210. int Huihe(pai A[104],pai B[104],int *x,int *y,pai yuanshipaidui[2][4][13],wujiang *w1,wujiang *w2)
  2211. {
  2212. printf("\n回合开始阶段……\n");
  2213. switch((*w1).huihekaishi)
  2214. {
  2215. case 0:break;
  2216. default:printf("回合开始阶段参数错误!\n");break;
  2217. }
  2218. printf("判定阶段……\n");
  2219. int K=0;
  2220. if((*w1).pandingshu>0)
  2221. {
  2222. int i,j;
  2223. for(;(*w1).pandingshu;)
  2224. {
  2225. switch((*w1).pandingpai[0].leixing)
  2226. {
  2227. case 251:printf("【乐不思蜀】开始判定……\n"); break;
  2228. case 252:printf("【闪电】开始判定……\n");break;
  2229. default:printf("【??】开始判定……\n");break;
  2230. }
  2231. j=0;
  2232. pai p=((*w1).pandingpai[0]);
  2233. for(;;)//在判定之前询问【无懈】
  2234. {
  2235. i=Wuxie(&p,w2,w1,B,y,0);
  2236. if(!i)break;
  2237. j++;
  2238. i=Wuxie(&p,w1,w2,B,y,0);
  2239. if(!i)break;
  2240. j++;
  2241. }
  2242. switch((*w1).pandingpai[0].leixing)
  2243. {
  2244. case 251:
  2245. if(!(j%2))
  2246. {
  2247. printf("【乐不思蜀】的判定牌是:");
  2248. Panding(A,x,B,y);
  2249. if((B[(*y)-1].huase)!=1)
  2250. {
  2251. printf("【乐不思蜀】判定成功!\n");
  2252. if((*w1).juese)printf("玩家");
  2253. else printf("电脑");
  2254. printf("跳过出牌阶段!\n");
  2255. K=-1;
  2256. }
  2257. else printf("【乐不思蜀】判定失败!\n");
  2258. }
  2259. B[*y]=(*w1).pandingpai[0];
  2260. ((*w1).pandingshu)--;
  2261. (*w1).pandingpai[0]=(*w1).pandingpai[1];
  2262. (*w1).pandingpai[1]=(*w1).pandingpai[2];
  2263. (*w1).pandingpai[2].leixing=-1;
  2264. (*y)++;
  2265. break;
  2266. case 252:
  2267. if(!(j%2))
  2268. {
  2269. printf("【闪电】的判定牌是:");
  2270. Panding(A,x,B,y);
  2271. if((B[(*y)-1].huase==0)&&(B[(*y)-1].dianshu>=1)&&(B[(*y)-1].dianshu<=8))
  2272. {
  2273. printf("【闪电】判定成功!\n");
  2274. if((*w1).juese)printf("玩家");
  2275. else printf("电脑");
  2276. printf("受到3点雷电伤害!");
  2277. ((*w1).tili)=((*w1).tili)-3;
  2278. i=Binsi(w2,w1,B,y);
  2279. B[*y]=(*w1).pandingpai[0];
  2280. ((*w1).pandingshu)--;
  2281. (*w1).pandingpai[0]=(*w1).pandingpai[1];
  2282. (*w1).pandingpai[1]=(*w1).pandingpai[2];
  2283. (*w1).pandingpai[2].leixing=-1;
  2284. (*y)++;
  2285. if(i==-1)return -1;
  2286. }
  2287. else
  2288. {
  2289. printf("【闪电】判定失败!\n");
  2290. (*w2).pandingpai[2]=(*w2).pandingpai[1];
  2291. (*w2).pandingpai[1]=(*w2).pandingpai[0];
  2292. (*w2).pandingpai[0]=(*w1).pandingpai[0];
  2293. (*w1).pandingpai[0]=(*w1).pandingpai[1];
  2294. (*w1).pandingpai[1]=(*w1).pandingpai[2];
  2295. (*w1).pandingpai[2].leixing=-1;
  2296. ((*w1).pandingshu)--;
  2297. ((*w2).pandingshu)++;
  2298. }
  2299. break;
  2300. }
  2301. default:printf("判定牌错误!");
  2302. } printf("弃牌数:%d\n",*y);
  2303. }
  2304. }
  2305. else if(!((*w1).pandingshu));
  2306. else printf("判定阶段参数错误!\n");
  2307. printf("摸牌阶段……\n");
  2308. switch((*w1).mopai)
  2309. {
  2310. case 0:Mopai(&((*w1).shoupaishu),(*w1).shoupai,A,x,B,y,(*w1).juese);break;
  2311. case -1:break;
  2312. default:printf("摸牌阶段参数错误!\n");break;
  2313. }
  2314. if(K==-1)goto M;
  2315. printf("出牌阶段……\n");
  2316. switch((*w1).chupai)
  2317. {
  2318. case 0:
  2319. {
  2320. int i;
  2321. i=Chupai(A,B,x,y,w1,w2,yuanshipaidui);
  2322. if(i==-1)
  2323. {
  2324. return -1;
  2325. break;
  2326. }
  2327. else
  2328. break;
  2329. }
  2330. case -1:break;
  2331. default:printf("出牌阶段参数错误!\n");break;
  2332. }
  2333. M:
  2334. printf("弃牌阶段……\n");
  2335. switch((*w1).qipai)
  2336. {
  2337. case 0:
  2338. Qipai((*w1).shoupai,&((*w1).shoupaishu),B,y,(*w1).juese,&((*w1).tili));break;
  2339. default:printf("弃牌阶段参数错误!\n");break;
  2340. }
  2341. printf("回合结束阶段……\n");
  2342. switch((*w1).huihejieshu)
  2343. {
  2344. case 0:break;
  2345. default:printf("回合结束阶段参数错误!\n");break;
  2346. }
  2347. return 0;
  2348. }
  2349. int main()
  2350. {
  2351. void Kanshoupai(pai p);
  2352. pai yuanshipaidui[2][4][13],qipaidui[104],paidui[104];
  2353. wujiang wanjia,com;
  2354. com.tili=wanjia.tili=5;
  2355. com.tilishangxian=wanjia.tilishangxian=5;
  2356. com.huihekaishi=wanjia.huihekaishi=0;
  2357. com.panding=wanjia.panding=0;
  2358. com.mopai=wanjia.mopai=0;
  2359. com.chupai=wanjia.chupai=0;
  2360. com.qipai=wanjia.qipai=0;
  2361. com.huihejieshu=wanjia.huihejieshu=0;
  2362. com.shoupaishu=wanjia.shoupaishu=0;
  2363. com.pandingshu=wanjia.pandingshu=0;
  2364. com.zhuangbeishu=wanjia.zhuangbeishu=0;
  2365. com.juese=0;wanjia.juese=1;
  2366. pai p;
  2367. p.leixing=-1;
  2368. 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;
  2369. com.zhuangbei[0].changdu=wanjia.zhuangbei[0].changdu=1;
  2370. com.pandingpai[0]=com.pandingpai[1]=com.pandingpai[2]=wanjia.pandingpai[0]=wanjia.pandingpai[1]=wanjia.pandingpai[2]=p;
  2371. com.juli[0]=wanjia.juli[0]=1;
  2372. int a,b,c;
  2373. for(a=0;a<=1;a++)
  2374. {
  2375. for(b=0;b<=3;b++)
  2376. {
  2377. for(c=0;c<=12;c++)
  2378. {
  2379. yuanshipaidui[a][b][c].paifu=a;
  2380. yuanshipaidui[a][b][c].huase=b;
  2381. yuanshipaidui[a][b][c].dianshu=c;
  2382. }
  2383. }
  2384. }
  2385. yuanshipaidui[0][0][0].leixing=204;
  2386. yuanshipaidui[0][0][1].leixing=331;
  2387. yuanshipaidui[0][0][2].leixing=201;
  2388. yuanshipaidui[0][0][3].leixing=201;
  2389. yuanshipaidui[0][0][4].leixing=304;yuanshipaidui[0][0][4].changdu=3;
  2390. yuanshipaidui[0][0][5].leixing=251;
  2391. yuanshipaidui[0][0][6].leixing=101;
  2392. yuanshipaidui[0][0][7].leixing=101;
  2393. yuanshipaidui[0][0][8].leixing=101;
  2394. yuanshipaidui[0][0][9].leixing=101;
  2395. yuanshipaidui[0][0][10].leixing=202;
  2396. yuanshipaidui[0][0][11].leixing=201;
  2397. yuanshipaidui[0][0][12].leixing=208;
  2398. yuanshipaidui[0][1][0].leixing=209;
  2399. yuanshipaidui[0][1][1].leixing=102;
  2400. yuanshipaidui[0][1][2].leixing=103;
  2401. yuanshipaidui[0][1][3].leixing=103;
  2402. yuanshipaidui[0][1][4].leixing=308;yuanshipaidui[0][1][4].changdu=5;
  2403. yuanshipaidui[0][1][5].leixing=103;
  2404. yuanshipaidui[0][1][6].leixing=103;
  2405. yuanshipaidui[0][1][7].leixing=103;
  2406. yuanshipaidui[0][1][8].leixing=103;
  2407. yuanshipaidui[0][1][9].leixing=101;
  2408. yuanshipaidui[0][1][10].leixing=101;
  2409. yuanshipaidui[0][1][11].leixing=103;
  2410. yuanshipaidui[0][1][12].leixing=102;
  2411. yuanshipaidui[0][2][0].leixing=204;
  2412. yuanshipaidui[0][2][1].leixing=101;
  2413. yuanshipaidui[0][2][2].leixing=101;
  2414. yuanshipaidui[0][2][3].leixing=101;
  2415. yuanshipaidui[0][2][4].leixing=101;
  2416. yuanshipaidui[0][2][5].leixing=101;
  2417. yuanshipaidui[0][2][6].leixing=101;
  2418. yuanshipaidui[0][2][7].leixing=101;
  2419. yuanshipaidui[0][2][8].leixing=101;
  2420. yuanshipaidui[0][2][9].leixing=101;
  2421. yuanshipaidui[0][2][10].leixing=101;
  2422. yuanshipaidui[0][2][11].leixing=205;
  2423. yuanshipaidui[0][2][12].leixing=205;
  2424. yuanshipaidui[0][3][0].leixing=204;
  2425. yuanshipaidui[0][3][1].leixing=102;
  2426. yuanshipaidui[0][3][2].leixing=102;
  2427. yuanshipaidui[0][3][3].leixing=102;
  2428. yuanshipaidui[0][3][4].leixing=102;
  2429. yuanshipaidui[0][3][5].leixing=101;
  2430. yuanshipaidui[0][3][6].leixing=101;
  2431. yuanshipaidui[0][3][7].leixing=101;
  2432. yuanshipaidui[0][3][8].leixing=101;
  2433. yuanshipaidui[0][3][9].leixing=101;
  2434. yuanshipaidui[0][3][10].leixing=102;
  2435. yuanshipaidui[0][3][11].leixing=103;
  2436. yuanshipaidui[0][3][12].leixing=101;
  2437. yuanshipaidui[1][0][0].leixing=252;
  2438. yuanshipaidui[1][0][1].leixing=302;yuanshipaidui[1][0][1].changdu=2;
  2439. yuanshipaidui[1][0][2].leixing=202;
  2440. yuanshipaidui[1][0][3].leixing=202;
  2441. yuanshipaidui[1][0][4].leixing=383;
  2442. yuanshipaidui[1][0][5].leixing=303;yuanshipaidui[1][0][5].changdu=2;
  2443. yuanshipaidui[1][0][6].leixing=208;
  2444. yuanshipaidui[1][0][7].leixing=101;
  2445. yuanshipaidui[1][0][8].leixing=101;
  2446. yuanshipaidui[1][0][9].leixing=101;
  2447. yuanshipaidui[1][0][10].leixing=210;
  2448. yuanshipaidui[1][0][11].leixing=305;yuanshipaidui[1][0][11].changdu=3;
  2449. yuanshipaidui[1][0][12].leixing=362;
  2450. yuanshipaidui[1][1][0].leixing=206;
  2451. yuanshipaidui[1][1][1].leixing=102;
  2452. yuanshipaidui[1][1][2].leixing=207;
  2453. yuanshipaidui[1][1][3].leixing=207;
  2454. yuanshipaidui[1][1][4].leixing=361;
  2455. yuanshipaidui[1][1][5].leixing=251;
  2456. yuanshipaidui[1][1][6].leixing=203;
  2457. yuanshipaidui[1][1][7].leixing=203;
  2458. yuanshipaidui[1][1][8].leixing=203;
  2459. yuanshipaidui[1][1][9].leixing=101;
  2460. yuanshipaidui[1][1][10].leixing=203;
  2461. yuanshipaidui[1][1][11].leixing=201;
  2462. yuanshipaidui[1][1][12].leixing=381;
  2463. yuanshipaidui[1][2][0].leixing=301;yuanshipaidui[1][2][0].changdu=1;
  2464. yuanshipaidui[1][2][1].leixing=331;
  2465. yuanshipaidui[1][2][2].leixing=201;
  2466. yuanshipaidui[1][2][3].leixing=201;
  2467. yuanshipaidui[1][2][4].leixing=382;
  2468. yuanshipaidui[1][2][5].leixing=251;
  2469. yuanshipaidui[1][2][6].leixing=208;
  2470. yuanshipaidui[1][2][7].leixing=101;
  2471. yuanshipaidui[1][2][8].leixing=101;
  2472. yuanshipaidui[1][2][9].leixing=101;
  2473. yuanshipaidui[1][2][10].leixing=101;
  2474. yuanshipaidui[1][2][11].leixing=210;
  2475. yuanshipaidui[1][2][12].leixing=210;
  2476. yuanshipaidui[1][3][0].leixing=301;yuanshipaidui[1][3][0].changdu=1;
  2477. yuanshipaidui[1][3][1].leixing=102;
  2478. yuanshipaidui[1][3][2].leixing=202;
  2479. yuanshipaidui[1][3][3].leixing=202;
  2480. yuanshipaidui[1][3][4].leixing=306;yuanshipaidui[1][3][4].changdu=3;
  2481. yuanshipaidui[1][3][5].leixing=102;
  2482. yuanshipaidui[1][3][6].leixing=102;
  2483. yuanshipaidui[1][3][7].leixing=102;
  2484. yuanshipaidui[1][3][8].leixing=102;
  2485. yuanshipaidui[1][3][9].leixing=102;
  2486. yuanshipaidui[1][3][10].leixing=102;
  2487. yuanshipaidui[1][3][11].leixing=307;yuanshipaidui[1][3][11].changdu=4;
  2488. yuanshipaidui[1][3][12].leixing=363;
  2489. int paiduishu=104;
  2490. int qipaishu=0;
  2491. printf("游戏开始!\n");
  2492. Qishixipai(yuanshipaidui,paidui);
  2493. Qishishoupai(&wanjia,paidui,&(paiduishu),qipaidui,&(qipaishu));
  2494. Qishishoupai(&com,paidui,&(paiduishu),qipaidui,&(qipaishu));
  2495. int i;
  2496. for(;;)
  2497. {
  2498. i=Huihe(paidui,qipaidui,&paiduishu,&qipaishu,yuanshipaidui,&wanjia,&com);
  2499. if(i==-1)break;
  2500. i=Huihe(paidui,qipaidui,&paiduishu,&qipaishu,yuanshipaidui,&com,&wanjia);
  2501. if(i==-1)break;
  2502. }
  2503. }
复制代码
发表于 2013-1-29 19:04:34 | 显示全部楼层
作者是不是不会E文...Judge居然写成Panding....
发表于 2013-1-29 19:32:07 | 显示全部楼层
2000多行的代码啊……这工作量
发表于 2013-1-30 14:37:58 | 显示全部楼层
本帖最后由 wtof1996 于 2013-1-30 14:42 编辑

既然是C++了用什么printf、scanf啊......
另外可能是忘了#include<ctime>,不然编译不过
发表于 2013-1-30 19:22:57 | 显示全部楼层
话说我曾经编了一个g1m的三国杀,五人局pvp 有5个武将
 楼主| 发表于 2013-2-4 23:33:20 | 显示全部楼层
diameter 发表于 2013-1-29 19:04
作者是不是不会E文...Judge居然写成Panding....

我一般用check(检定)
话说我现在大概算隐退了,所以也不长在线。结果3D现在还没有做,惭愧啊
发表于 2013-2-7 20:14:11 | 显示全部楼层
觉得这很不靠谱啊
发表于 2013-2-11 11:29:37 | 显示全部楼层
diameter 发表于 2013-1-29 19:04
作者是不是不会E文...Judge居然写成Panding....

还有yuanshipaidui leixing paidui qipaidui huihe...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-3-28 17:41 , Processed in 0.050587 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表