c++小游戏-1 [sgqyz]

得快两年前写的一个c++游戏(第一个,总共两个)

有些npc名字有些起的詪sd,看着好笑也就不改了

算法没有任何难度,就是纯模拟,当时也是无聊写了挺长时间

代码之前写的,存在一些bug,大体上影响游戏体验的bug都已消除,如果仍有,希望各位玩家老爷原谅=-=(不打算改了,逃

游戏意外和某知名游戏公司出品游戏重名,当时我写这个的时候还没看到,所以不大清楚谁先出的,事实上没有任何关系(游戏名用各字首字母代替了)

游戏中角色及部分属性值,取材于4399上一款画质略显单薄的小游戏 http://www.4399.com/flash/167316_1.htm 

附:1.作弊码11910(博主第一次通关某游戏时的分数),多人模式第一次输入11910会获得童渊(最强武将),第二次输入11910会获得司马徽(最强谋士),三次以上输入获得人物随机

  2.选人阶段输入数字与实际获得人物无关(作弊码除外)

  3.国战模式当时构想了来着,但是写完单人模式和双人模式,实在写不动了,又不想删掉,就进去之后只是一个敬请期待

   1 #include<bits/stdc++.h>
   2 #include<windows.h>
   3 using namespace std;
   4 int n,goal,your_num,comp_num,yourpar_num,comppar_num;
   5 int human_num,charac_num,atkway_num;
   6 bool nameused[101];
   7 string charac[101]={"0","菜鸡","大菜鸡","小菜鸡","逗比","万神之王","DBC","猪猪"}; 
   8 string attack_way[101]={"0","凌空一掌","反身一脚","横劈一刀","斜刺一枪"};
   9 
  10 struct human
  11 {
  12     string name;
  13     int atk,iq,blood,fa;
  14     bool live;
  15     int head;
  16 };
  17 human a[2001];
  18 human yours[2001];
  19 human comps[2001];
  20 human yourpars[2001];
  21 human comppars[2001];
  22 
  23 char hehe[11][11]={
  24 "   /| ",
  25 "  / | ",
  26 " /  | ",
  27 "<_/|_>",
  28 " |||| "
  29 };
  30 
  31 void shenglve()
  32 {
  33     for(int i=1;i<=5;++i)
  34     {
  35         printf(".");
  36         Sleep(200);
  37     }
  38     printf(".");
  39 }
  40 
  41 void jieshao(int d)
  42 {
  43     printf("\n");
  44     printf(" ·姓名: ");
  45     cout<<a[d].name<<"  ";
  46     printf("攻击力: %d  智力: %d  血量: %d\n",a[d].atk,a[d].iq,a[d].blood);
  47     printf("   人物当前状态:");
  48     if(a[d].live==true)
  49         printf("存活");
  50     else
  51         printf("已死亡");
  52     printf("  从属: ");
  53     if(a[d].fa==-1)
  54         printf("无\n");
  55     else 
  56         cout<<a[a[d].fa].name<<endl;
  57     printf("\n");
  58 }
  59 
  60 void your_choujiang(int xx,int yy,int d)
  61 {
  62     printf("\n"); 
  63     printf("--------------------------------------\n");
  64     printf("*叮!请抽取武将*\n");
  65     for(int i=1;i<=d;++i)
  66     {
  67         printf("请输入一个不大于10000的正整数: ");
  68         int t1,t2,t3;
  69         scanf("%d",&t1);    
  70         t2=rand()%(human_num*10);
  71         t3=(t1+t2)%human_num+1;
  72         while(a[t3].live==false || a[t3].fa!=-1 || a[t3].atk<xx || a[t3].iq<yy)
  73         {
  74             t2=rand()%(human_num*10);
  75             t3=(t1+t2)%human_num+1;
  76         }
  77         if(t1==11910 && a[37].fa==-1)
  78             t3=37;
  79         else
  80             if(t1==11910 && a[38].fa==-1)
  81                 t3=38;
  82         your_num++;
  83         yours[your_num].head=t3;
  84         yours[your_num].name=a[t3].name;
  85         yours[your_num].atk=a[t3].atk;
  86         yours[your_num].blood=a[t3].blood;
  87         yours[your_num].iq=a[t3].iq;
  88         yours[your_num].live=a[t3].live;
  89         yours[your_num].fa=0;
  90         a[t3].fa=0;
  91         printf("\n");
  92         printf("恭喜你获得武将 ");
  93         cout<<a[t3].name<<endl;
  94         printf("*这是你获得的第%d个武将*\n",your_num);
  95         jieshao(t3);
  96     }
  97     printf("返回游戏中!");
  98     shenglve();
  99     printf("\n");
 100     printf("--------------------------------------\n");
 101     printf("\n");
 102 }
 103 
 104 void comp_choujiang(int xx,int yy,int d)
 105 {
 106     printf("\n"); 
 107     printf("--------------------------------------\n");
 108     printf("*叮!");
 109     cout<<a[1000].name;
 110     printf("抽取武将中*\n");
 111     for(int i=1;i<=d;++i)
 112     {
 113         int t;
 114         while(a[t].live==false || a[t].fa!=-1 || a[t].atk<xx || a[t].iq<yy)
 115             t=rand()%human_num+1;
 116         comp_num++;
 117         comps[comp_num].head=t;
 118         comps[comp_num].name=a[t].name;
 119         comps[comp_num].atk=a[t].atk;
 120         comps[comp_num].blood=a[t].blood;
 121         comps[comp_num].iq=a[t].iq;
 122         comps[comp_num].live=a[t].live;
 123         comps[comp_num].fa=1000;
 124         a[t].fa=1000;
 125         printf("\n");
 126         cout<<a[1000].name;
 127         printf("获得武将 ");
 128         cout<<a[t].name<<endl;
 129         printf("*这是他获得的第%d个武将*\n",comp_num);
 130         jieshao(t);
 131     }
 132     printf("返回游戏中!");
 133     shenglve();
 134     printf("\n");
 135     printf("--------------------------------------\n");
 136     printf("\n");
 137 }
 138 
 139 void yourpar_choujiang(int xx,int yy,int d)
 140 {
 141     printf("\n"); 
 142     printf("--------------------------------------\n");
 143     printf("*叮!");
 144     cout<<a[1001].name;
 145     printf("抽取武将中*\n");
 146     for(int i=1;i<=d;++i)
 147     {
 148         int t;
 149         while(a[t].live==false || a[t].fa!=-1 || a[t].atk<xx || a[t].iq<yy)
 150             t=rand()%human_num+1;
 151         yourpar_num++;
 152         yourpars[yourpar_num].head=t;
 153         yourpars[yourpar_num].name=a[t].name;
 154         yourpars[yourpar_num].atk=a[t].atk;
 155         yourpars[yourpar_num].blood=a[t].blood;
 156         yourpars[yourpar_num].iq=a[t].iq;
 157         yourpars[yourpar_num].live=a[t].live;
 158         yourpars[yourpar_num].fa=1001;
 159         a[t].fa=1001;
 160         printf("\n");
 161         cout<<a[1001].name;
 162         printf("获得武将 ");
 163         cout<<a[t].name<<endl;
 164         printf("*这是他获得的第%d个武将*\n",comp_num);
 165         jieshao(t);
 166     }
 167     printf("返回游戏中!");
 168     shenglve();
 169     printf("\n");
 170     printf("--------------------------------------\n");
 171     printf("\n");
 172 }
 173 
 174 void comppar_choujiang(int xx,int yy,int d)
 175 {
 176     printf("\n"); 
 177     printf("--------------------------------------\n");
 178     printf("*叮!");
 179     cout<<a[2000].name;
 180     printf("抽取武将中*\n");
 181     for(int i=1;i<=d;++i)
 182     {
 183         int t;
 184         while(a[t].live==false || a[t].fa!=-1 || a[t].atk<xx || a[t].iq<yy)
 185             t=rand()%human_num+1;
 186         comppar_num++;
 187         comppars[comppar_num].head=t;
 188         comppars[comppar_num].name=a[t].name;
 189         comppars[comppar_num].atk=a[t].atk;
 190         comppars[comppar_num].blood=a[t].blood;
 191         comppars[comppar_num].iq=a[t].iq;
 192         comppars[comppar_num].live=a[t].live;
 193         comppars[comppar_num].fa=2000;
 194         a[t].fa=2000;
 195         printf("\n");
 196         cout<<a[2000].name;
 197         printf("获得武将 ");
 198         cout<<a[t].name<<endl;
 199         printf("*这是他获得的第%d个武将*\n",comp_num);
 200         jieshao(t);
 201     }
 202     printf("返回游戏中!");
 203     shenglve();
 204     printf("\n");
 205     printf("--------------------------------------\n");
 206     printf("\n");
 207 }
 208 
 209 void renwu()
 210 {
 211     human_num=93;
 212     charac_num=7;
 213     atkway_num=4;
 214     for(int i=1;i<=human_num;++i)
 215     {
 216         a[i].blood=1000;
 217         a[i].fa=-1;
 218         a[i].live=true;
 219     }
 220     a[1].name="泠苞";
 221     a[1].atk=66;
 222     a[1].iq=46;
 223     a[2].name="关兴";
 224     a[2].atk=76;
 225     a[2].iq=33;
 226     a[3].name="关平";
 227     a[3].atk=78;
 228     a[3].iq=39;
 229     a[4].name="张苞";
 230     a[4].atk=78;
 231     a[4].iq=35;
 232     a[5].name="黄忠";
 233     a[5].atk=96;
 234     a[5].iq=89;
 235     a[6].name="文鸳";
 236     a[6].atk=96;
 237     a[6].iq=86;
 238     a[7].name="郭嘉";
 239     a[7].atk=38;
 240     a[7].iq=99;
 241     a[8].name="吕布";
 242     a[8].atk=99;
 243     a[8].iq=49;
 244     a[9].name="诸葛亮";
 245     a[9].atk=52;
 246     a[9].iq=98;
 247     a[10].name="司马懿";
 248     a[10].atk=65;
 249     a[10].iq=97;
 250     a[11].name="曹操";
 251     a[11].atk=82;
 252     a[11].iq=88;
 253     a[12].name="刘备";
 254     a[12].atk=79;
 255     a[12].iq=75;
 256     a[13].name="孙权";
 257     a[13].atk=70;
 258     a[13].iq=83;
 259     a[14].name="孙翎";
 260     a[14].atk=83;
 261     a[14].iq=44;
 262     a[15].name="孙策";
 263     a[15].atk=95;
 264     a[15].iq=77;
 265     a[16].name="孙静";
 266     a[16].atk=82;
 267     a[16].iq=45;
 268     a[17].name="黄盖";
 269     a[17].atk=78;
 270     a[17].iq=69;
 271     a[18].name="程普";
 272     a[18].atk=69;
 273     a[18].iq=72;
 274     a[19].name="孙坚";
 275     a[19].atk=91;
 276     a[19].iq=81;
 277     a[20].name="马超";
 278     a[20].atk=97;
 279     a[20].iq=79;
 280     a[21].name="马腾";
 281     a[21].atk=82;
 282     a[21].iq=66;
 283     a[22].name="马岱";
 284     a[22].atk=85;
 285     a[22].iq=75;
 286     a[23].name="马休";
 287     a[23].atk=75;
 288     a[23].iq=56;
 289     a[24].name="庞德";
 290     a[24].atk=96;
 291     a[24].iq=81;
 292     a[25].name="赵云";
 293     a[25].atk=98;
 294     a[25].iq=95;
 295     a[26].name="关羽";
 296     a[26].atk=97;
 297     a[26].iq=91;
 298     a[27].name="张飞";
 299     a[27].atk=97;
 300     a[27].iq=84;
 301     a[28].name="典韦";
 302     a[28].atk=98;
 303     a[28].iq=70;
 304     a[29].name="许褚";
 305     a[29].atk=96;
 306     a[29].iq=76;
 307     a[30].name="蒋干";
 308     a[30].atk=18;
 309     a[30].iq=1;
 310     a[31].name="太史慈";
 311     a[31].atk=93;
 312     a[31].iq=90;
 313     a[32].name="曲晨";
 314     a[32].atk=99;
 315     a[32].iq=97;
 316     a[33].name="荀彧";
 317     a[33].atk=36;
 318     a[33].iq=92;
 319     a[34].name="荀攸";
 320     a[34].atk=31;
 321     a[34].iq=91;
 322     a[35].name="吕蒙";
 323     a[35].atk=88;
 324     a[35].iq=90;
 325     a[36].name="陆逊";
 326     a[36].atk=83;
 327     a[36].iq=91;
 328     a[37].name="童渊";
 329     a[37].atk=100;
 330     a[37].iq=97;
 331     a[38].name="司马徽";
 332     a[38].atk=97;
 333     a[38].iq=100;
 334     a[39].name="夏侯惇";
 335     a[39].atk=91;
 336     a[39].iq=77;
 337     a[40].name="夏侯渊";
 338     a[40].atk=90;
 339     a[40].iq=72;
 340     a[41].name="刘表";
 341     a[41].atk=49;
 342     a[41].iq=40;
 343     a[42].name="刘琦";
 344     a[42].atk=50;
 345     a[42].iq=56;
 346     a[43].name="刘琮";
 347     a[43].atk=55;
 348     a[43].iq=29;
 349     a[44].name="刘焉";
 350     a[44].atk=34;
 351     a[44].iq=40; 
 352     a[45].name="刘璋";
 353     a[45].atk=29;
 354     a[45].iq=46;
 355     a[46].name="蔡瑁";
 356     a[46].atk=79;
 357     a[46].iq=46;
 358     a[47].name="蔡和";
 359     a[47].atk=69;
 360     a[47].iq=41;
 361     a[48].name="文聘";
 362     a[48].atk=78;
 363     a[48].iq=57;
 364     a[49].name="蔡邕";
 365     a[49].atk=24;
 366     a[49].iq=93;
 367     a[50].name="蔡文姬";
 368     a[50].atk=11;
 369     a[50].iq=95;
 370     a[51].name="魏延";
 371     a[51].atk=92;
 372     a[51].iq=75;
 373     a[52].name="廖化";
 374     a[52].atk=71;
 375     a[52].iq=55;
 376     a[53].name="裴元绍";
 377     a[53].atk=46;
 378     a[53].iq=48;
 379     a[54].name="颜良";
 380     a[54].atk=95;
 381     a[54].iq=73;
 382     a[55].name="文丑";
 383     a[55].atk=94;
 384     a[55].iq=72;
 385     a[56].name="曹洪";
 386     a[56].atk=84;
 387     a[56].iq=82;
 388     a[57].name="曹彰";
 389     a[57].atk=94;
 390     a[57].iq=70;
 391     a[58].name="曹丕";
 392     a[58].atk=46;
 393     a[58].iq=74;
 394     a[59].name="曹植";
 395     a[59].atk=27;
 396     a[59].iq=85;
 397     a[60].name="张辽";
 398     a[60].atk=92;
 399     a[60].iq=94;
 400     a[61].name="雷铜";
 401     a[61].atk=78;
 402     a[61].iq=73;
 403     a[62].name="徐晃";
 404     a[62].atk=91;
 405     a[62].iq=88;
 406     a[63].name="张郃";
 407     a[63].atk=94;
 408     a[63].iq=85;
 409     a[64].name="曹真";
 410     a[64].atk=86;
 411     a[64].iq=79;
 412     a[65].name="曹仁";
 413     a[65].atk=80;
 414     a[65].iq=83;
 415     a[66].name="孙资";
 416     a[66].atk=40;
 417     a[66].iq=37;
 418     a[67].name="司马师";
 419     a[67].atk=55;
 420     a[67].iq=65;
 421     a[68].name="司马昭";
 422     a[68].atk=95;
 423     a[68].iq=78;
 424     a[69].name="姜维";
 425     a[69].atk=96;
 426     a[69].iq=95;
 427     a[70].name="诸葛瞻";
 428     a[70].atk=49;
 429     a[70].iq=79;
 430     a[71].name="李严";
 431     a[71].atk=81;
 432     a[71].iq=84;
 433     a[72].name="吴懿";
 434     a[72].atk=77;
 435     a[72].iq=56;
 436     a[73].name="蒋琬";
 437     a[73].atk=19;
 438     a[73].iq=86;
 439     a[74].name="费祎";
 440     a[74].atk=18;
 441     a[74].iq=87;
 442     a[75].name="诸葛瑾";
 443     a[75].atk=48;
 444     a[75].iq=76;
 445     a[76].name="王平";
 446     a[76].atk=89;
 447     a[76].iq=88;
 448     a[77].name="张翼";
 449     a[77].atk=72;
 450     a[77].iq=65;
 451     a[78].name="陈到";
 452     a[78].atk=93;
 453     a[78].iq=91;
 454     a[79].name="邓艾";
 455     a[79].atk=95;
 456     a[79].iq=94;
 457     a[80].name="黄权";
 458     a[80].atk=25;
 459     a[80].iq=49;
 460     a[81].name="公孙瓒";
 461     a[81].atk=73;
 462     a[81].iq=81;
 463     a[82].name="公孙康";
 464     a[82].atk=64;
 465     a[82].iq=59;
 466     a[83].name="牛金";
 467     a[83].atk=84;
 468     a[83].iq=66;
 469     a[84].name="于禁";
 470     a[84].atk=84;
 471     a[84].iq=70;
 472     a[85].name="郭淮";
 473     a[85].atk=89;
 474     a[85].iq=85;
 475     a[86].name="王颀";
 476     a[86].atk=89;
 477     a[86].iq=47;
 478     a[87].name="朱然";
 479     a[87].atk=71;
 480     a[87].iq=40;
 481     a[88].name="严白虎";
 482     a[88].atk=77;
 483     a[88].iq=63;
 484     a[89].name="丁奉";
 485     a[89].atk=72;
 486     a[89].iq=62;
 487     a[90].name="潘璋";
 488     a[90].atk=71;
 489     a[90].iq=54;
 490     a[91].name="王双";
 491     a[91].atk=88;
 492     a[91].iq=82;
 493     a[92].name="张绣";
 494     a[92].atk=91;
 495     a[92].iq=86;
 496     a[93].name="张任";
 497     a[93].atk=90;
 498     a[93].iq=82;
 499 }
 500 
 501 void fuzhiyours(int x,int y)
 502 {
 503     yours[x].name=a[y].name;
 504     yours[x].atk=a[y].atk;
 505     yours[x].blood=a[y].blood;
 506     yours[x].iq=a[y].iq;
 507     yours[x].fa=a[y].fa;
 508     yours[x].head=y;
 509     yours[x].live=true;
 510 }
 511 
 512 void fuzhicomps(int x,int y)
 513 {
 514     comps[x].name=a[y].name;
 515     comps[x].atk=a[y].atk;
 516     comps[x].blood=a[y].blood;
 517     comps[x].iq=a[y].iq;
 518     comps[x].fa=a[y].fa;
 519     comps[x].head=y;
 520     comps[x].live=true;
 521 }
 522 
 523 void fuzhiyourpars(int x,int y)
 524 {
 525     yourpars[x].name=a[y].name;
 526     yourpars[x].atk=a[y].atk;
 527     yourpars[x].blood=a[y].blood;
 528     yourpars[x].iq=a[y].iq;
 529     yourpars[x].fa=a[y].fa;
 530     yourpars[x].head=y;
 531     yourpars[x].live=true;
 532 }
 533 
 534 void fuzhicomppars(int x,int y)
 535 {
 536     comppars[x].name=a[y].name;
 537     comppars[x].atk=a[y].atk;
 538     comppars[x].blood=a[y].blood;
 539     comppars[x].iq=a[y].iq;
 540     comppars[x].fa=a[y].fa;
 541     comppars[x].head=y;
 542     comppars[x].live=true;
 543 }
 544 
 545 void kaishi()
 546 {
 547     printf("\n");
 548     for(int i=0;i<=4;++i)
 549     {
 550         for(int j=0;j<=5;++j)
 551             printf("%c",hehe[i][j]);
 552         printf("\n");
 553     }
 554     printf("由呵呵游戏出品\n");
 555     printf("\n");
 556     printf("开始! O(∩_∩)O  祝你好运~\n");
 557     printf("--------------------------------------\n");
 558     printf(" ※每打一行字需要按回车Enter继续!※\n");
 559     printf("--------------------------------------\n");
 560     Sleep(500);
 561     printf("缓冲中");
 562     shenglve();
 563     printf("\n");
 564     printf("\n");
 565     printf("  ^- 三国群英传 -^ \n");
 566     printf("\n");
 567 } 
 568 
 569 void frinit()
 570 {
 571     printf("请输入你的名字:(保证无空格,无特殊字符)\n");
 572     printf(" ");
 573     cin>>a[0].name;
 574     a[0].blood=1000;
 575     a[0].atk=1;
 576     a[0].iq=1;
 577     a[0].live=true;
 578     a[0].fa=-1; 
 579     jieshao(0); 
 580 }
 581 
 582 void init1(int d)
 583 {
 584     your_num=0;
 585     comp_num=0;
 586     memset(nameused,false,sizeof(nameused));
 587     printf("加载人物信息中,请稍后");
 588     shenglve();
 589     printf("\n");
 590     printf("\n");
 591     printf(" ※双方轮流出牌※\n");
 592     renwu();
 593     printf("你的对手是:");
 594     int res=rand()%charac_num+1;
 595     cout<<charac[res]<<endl;
 596     a[1000].name=charac[res];
 597     a[1000].atk=1;
 598     a[1000].iq=1;
 599     a[1000].blood=1000;
 600     a[1000].fa=-1;
 601     a[1000].live=true;
 602     printf("\n");
 603     printf("对手人物信息: \n");
 604     jieshao(1000); 
 605     your_choujiang(30,20,d);
 606     comp_choujiang(30,20,d);
 607     fuzhiyours(0,0);
 608     fuzhicomps(0,1000);
 609 }
 610 
 611 void init2(int d)
 612 {
 613     your_num=0;
 614     comp_num=0;
 615     yourpar_num=0;
 616     comppar_num=0;
 617     memset(nameused,false,sizeof(nameused));
 618     printf("加载人物信息中,请稍后");
 619     shenglve();
 620     printf("\n");
 621     printf("\n");
 622     printf(" ※双方轮流出牌※\n");
 623     renwu();
 624     printf("你的队友是:");
 625     int res=rand()%charac_num+1;
 626     while(nameused[res]==true)
 627         res=rand()%charac_num+1;
 628     nameused[res]=true;
 629     cout<<charac[res]<<endl;
 630     a[1001].name=charac[res];
 631     a[1001].atk=1;
 632     a[1001].iq=1;
 633     a[1001].blood=1000;
 634     a[1001].fa=-1;
 635     a[1001].live=true;
 636     printf("\n");
 637     printf("你队友的人物信息: \n");
 638     jieshao(1001);
 639     printf("你的对手是:");
 640     res=rand()%charac_num+1;
 641     while(nameused[res]==true)
 642         res=rand()%charac_num+1;
 643     nameused[res]=true;
 644     cout<<charac[res]<<endl;
 645     a[1000].name=charac[res];
 646     a[1000].atk=1;
 647     a[1000].iq=1;
 648     a[1000].blood=1000;
 649     a[1000].fa=-1;
 650     a[1000].live=true;
 651     printf("\n");
 652     printf("你对手的人物信息: \n");
 653     jieshao(1000);
 654     printf("你的对手的队友是:");
 655     res=rand()%charac_num+1;
 656     while(nameused[res]==true)
 657         res=rand()%charac_num+1;
 658     nameused[res]=true;
 659     cout<<charac[res]<<endl;
 660     a[2000].name=charac[res];
 661     a[2000].atk=1;
 662     a[2000].iq=1;
 663     a[2000].blood=1000;
 664     a[2000].fa=-1;
 665     a[2000].live=true;
 666     printf("\n");
 667     printf("你对手的队友的人物信息: \n");
 668     jieshao(2000);
 669     your_choujiang(30,20,d);
 670     yourpar_choujiang(30,20,d);
 671     comp_choujiang(30,20,d);
 672     comppar_choujiang(30,20,d);
 673     fuzhiyours(0,0);
 674     fuzhicomps(0,1000);
 675     fuzhiyourpars(0,1001);
 676     fuzhicomppars(0,2000);
 677 }
 678 
 679 void play1()
 680 {
 681     a[0].blood=1000;
 682     a[1000].blood=1000;
 683     int temp_num;
 684     printf("请选择双方武将数量: ");
 685     scanf("%d",&temp_num);
 686     init1(temp_num);
 687     printf("对战开始!\n");
 688     printf("--------------------------------------\n");
 689     printf(" ※每回合双方各派出一名武将对决※\n");
 690     printf(" ※受到伤害=另一方攻击力*(随机一个1-6的数)-本方智商※\n");
 691     printf(" ※受到伤害可能为负数喲~※\n");
 692     printf(" ※每方主将如果阵亡,则此方视为失败※\n");
 693     printf("--------------------------------------\n");
 694     printf("\n"); 
 695     int turn=0; 
 696     while(yours[0].blood>0 && comps[0].blood>0)
 697     {
 698         turn++;
 699         printf("^^^^^          ^^^^^          ^^^^^\n");
 700         printf("→第%d回合: \n",turn);
 701         printf("选择一名己方武将参与本回合战斗: (输入对应数字) \n");
 702         int yourturn,compturn;
 703         for(int i=0;i<=your_num;++i)
 704             if(yours[i].live==true)
 705             {
 706                 printf(" %d-",i);
 707                 cout<<yours[i].name;
 708             }
 709         printf("\n");
 710         scanf("%d",&yourturn);
 711         compturn=rand()%(comp_num+1);
 712         while(comps[compturn].live==false)
 713             compturn=rand()%(comp_num+1);
 714         printf("\n");
 715         printf("双方对战武将为: \n");
 716         printf(" ");
 717         cout<<a[0].name;
 718         printf("方: ");
 719         cout<<yours[yourturn].name;
 720         printf("\n");
 721         printf(" ");
 722         cout<<a[1000].name;
 723         printf("方: ");
 724         cout<<comps[compturn].name;
 725         printf("\n");
 726         printf("\n");
 727         int youratk=rand()%6+1,compatk=rand()%6+1;
 728         while(compatk-youratk>=2)
 729             compatk=rand()%6+1;
 730         int youract=rand()%atkway_num+1,compact=rand()%atkway_num+1;
 731         int yourharm=comps[compturn].atk*compatk-yours[yourturn].iq;
 732         int compharm=yours[yourturn].atk*youratk-comps[compturn].iq;
 733         comps[compturn].blood-=compharm;
 734         a[comps[compturn].head].blood=comps[compturn].blood;
 735         yours[compturn].blood-=yourharm;
 736         a[yours[yourturn].head].blood=yours[yourturn].blood;
 737         cout<<yours[yourturn].name<<" "<<attack_way[youract];
 738         printf(" (%d*%d-%d): ",yours[yourturn].atk,youratk,comps[compturn].iq);
 739         cout<<comps[compturn].name;
 740         printf("受到%d点伤害\n",compharm);
 741         if(comps[compturn].blood<=0)
 742         {
 743             comps[compturn].live=false;
 744             a[comps[compturn].head].live=false;
 745         }
 746         cout<<comps[compturn].name<<" "<<attack_way[compact];
 747         printf(" (%d*%d-%d): ",comps[compturn].atk,compatk,yours[yourturn].iq);
 748         cout<<yours[yourturn].name;
 749         printf("受到%d点伤害\n",yourharm);
 750         if(yours[yourturn].blood<=0)
 751         {
 752             yours[yourturn].live=false;
 753             a[yours[yourturn].head].live=false;
 754         }
 755         if(yours[yourturn].blood<=0)
 756         {
 757             cout<<a[0].name;
 758             printf("方武将 ");
 759             cout<<yours[yourturn].name;
 760             printf("阵亡!\n");
 761             Sleep(200);
 762             printf(" 默哀一秒钟");
 763             shenglve();
 764             printf("\n");
 765         }
 766         if(comps[compturn].blood<=0)
 767         {
 768             cout<<a[1000].name;
 769             printf("方武将 ");
 770             cout<<comps[compturn].name;
 771             printf("阵亡!\n");
 772             Sleep(200);
 773             printf(" 默哀一秒钟");
 774             shenglve();
 775             printf("\n");
 776         }
 777         printf("\n");
 778     }
 779     printf("\n");
 780     if(yours[0].blood<=0)
 781     {
 782         cout<<comps[0].name;
 783         printf("方胜利! ヾ( ̄ー ̄)X(^▽^)ゞ \n");
 784     }
 785     if(comps[0].blood<=0)
 786     {
 787         cout<<yours[0].name;
 788         printf("方胜利! ヾ( ̄ー ̄)X(^▽^)ゞ \n");
 789         human_num+=0;
 790     }
 791     printf("\n");
 792 } 
 793 
 794 void play2()
 795 {
 796     a[0].blood=1000;
 797     a[1000].blood=1000;
 798     a[1001].blood=1000;
 799     a[2000].blood=1000;
 800     int temp_num;
 801     printf("请选择每人武将数量: ");
 802     scanf("%d",&temp_num);
 803     init2(temp_num);
 804     printf("对战开始!\n");
 805     printf("--------------------------------------\n");
 806     printf(" ※每回合双方各派出一名武将对决※\n");
 807     printf(" ※受到伤害=另一方攻击力*(随机一个1-6的数)-本方智商※\n");
 808     printf(" ※受到伤害可能为负数喲~※\n");
 809     printf(" ※每方主将如果阵亡,则此人视为失败,不能继续战斗※\n");
 810     printf(" ※队友失败还可继续战斗,主人物失败则此方直接失败※\n");
 811     printf("--------------------------------------\n");
 812     printf("\n"); 
 813     int turn=0; 
 814     while(yours[0].blood>0 && comps[0].blood>0)
 815     {
 816         turn++;
 817         printf("^^^^^          ^^^^^          ^^^^^\n");
 818         printf("→第%d回合: \n",turn);
 819         printf("选择一名己方武将参与本回合战斗: (输入对应数字) \n");
 820         int yourturn,yourparturn,compturn,compparturn;
 821         for(int i=0;i<=your_num;++i)
 822             if(yours[i].live==true)
 823             {
 824                 printf(" %d-",i);
 825                 cout<<yours[i].name;
 826             }
 827         printf("\n");
 828         scanf("%d",&yourturn);
 829         yourparturn=rand()%(yourpar_num+1);
 830         while(yourpars[yourparturn].live==false)
 831             yourparturn=rand()%(yourpar_num+1);
 832         compturn=rand()%(comp_num+1);
 833         while(comps[compturn].live==false)
 834             compturn=rand()%(comp_num+1);
 835         compparturn=rand()%(comppar_num+1);
 836         while(comppars[compparturn].live==false)
 837             compparturn=rand()%(comppar_num+1);
 838         printf("\n");
 839         printf("双方对战武将为: \n");
 840         printf(" ");
 841         cout<<a[0].name;
 842         printf("方: ");
 843         cout<<yours[yourturn].name;
 844         printf("\n");
 845         printf(" ");
 846         cout<<a[1001].name;
 847         printf("方: ");
 848         cout<<yourpars[yourparturn].name;
 849         printf("\n");
 850         printf("\n");
 851         printf(" ");
 852         cout<<a[1000].name;
 853         printf("方: ");
 854         cout<<comps[compturn].name;
 855         printf("\n");
 856         printf(" ");
 857         cout<<a[2000].name;
 858         printf("方: ");
 859         cout<<comppars[compparturn].name;
 860         printf("\n");
 861         printf("\n");
 862         int youratk=rand()%6+1,yourparatk=rand()%6+1;
 863         int compatk=rand()%6+1,compparatk=rand()%6+1;
 864         while(compatk-youratk>=2)
 865             compatk=rand()%6+1;
 866         while(compparatk-yourparatk>=2)
 867             compparatk=rand()%6+1;
 868         int yourdir=rand()%2,compdir=rand()%2;
 869         int youract=rand()%atkway_num+1,compact=rand()%atkway_num+1;
 870         int yourparact=rand()%atkway_num+1,compparact=rand()%atkway_num+1;
 871         int yourharm,compharm,yourparharm,compparharm;
 872         if(yourdir==0)
 873         {
 874             compharm=yours[yourturn].atk*youratk-comps[compturn].iq;
 875             compparharm=yourpars[yourparturn].atk*yourparatk-comppars[compparturn].iq;
 876         }
 877         else
 878         {
 879             compharm=yourpars[yourparturn].atk*yourparatk-comps[compturn].iq;
 880             compparharm=yours[yourturn].atk*youratk-comppars[compparturn].iq;
 881         }
 882         if(compdir==0)
 883         {
 884             yourharm=comps[compturn].atk*compatk-yours[yourturn].iq;
 885             yourparharm=comppars[compparturn].atk*compparatk-yourpars[yourparturn].iq;
 886         }
 887         else
 888         {
 889             yourharm=comppars[compparturn].atk*compparatk-yours[yourturn].iq;
 890             yourparharm=comps[compturn].atk*compatk-yourpars[yourparturn].iq;
 891         }
 892         comps[compturn].blood-=compharm;
 893         a[comps[compturn].head].blood=comps[compturn].blood;
 894         comppars[compparturn].blood-=compparharm;
 895         a[comppars[compparturn].head].blood=comps[compparturn].blood;
 896         yours[compturn].blood-=yourharm;
 897         a[yours[yourturn].head].blood=yours[yourturn].blood;
 898         yourpars[compparturn].blood-=yourparharm;
 899         a[yourpars[yourparturn].head].blood=yourpars[yourparturn].blood;
 900         if(comps[compturn].blood<=0)
 901         {
 902             comps[compturn].live=false;
 903             a[comps[compturn].head].live=false;
 904         }
 905         if(comppars[compparturn].blood<=0)
 906         {
 907             comppars[compparturn].live=false;
 908             a[comppars[compparturn].head].live=false;
 909         }
 910         if(yours[yourturn].blood<=0)
 911         {
 912             yours[yourturn].live=false;
 913             a[yours[yourturn].head].live=false;
 914         }
 915         if(yourpars[yourparturn].blood<=0)
 916         {
 917             yourpars[yourparturn].live=false;
 918             a[yourpars[yourparturn].head].live=false;
 919         }
 920         if(yourdir==0)
 921         {
 922             cout<<yours[yourturn].name<<" "<<attack_way[youract];
 923             printf(" (%d*%d-%d): ",yours[yourturn].atk,youratk,comps[compturn].iq);
 924             cout<<comps[compturn].name;
 925             printf("受到%d点伤害\n",compharm);
 926             cout<<yourpars[yourparturn].name<<" "<<attack_way[yourparact];
 927             printf(" (%d*%d-%d): ",yourpars[yourparturn].atk,yourparatk,comppars[compparturn].iq);
 928             cout<<comppars[compparturn].name;
 929             printf("受到%d点伤害\n",compparharm);
 930             printf("\n");
 931         }
 932         else
 933         {
 934             cout<<yours[yourturn].name<<" "<<attack_way[youract];
 935             printf(" (%d*%d-%d): ",yours[yourturn].atk,youratk,comppars[compparturn].iq);
 936             cout<<comppars[compparturn].name;
 937             printf("受到%d点伤害\n",compparharm);
 938             cout<<yourpars[yourparturn].name<<" "<<attack_way[yourparact];
 939             printf(" (%d*%d-%d): ",yourpars[yourturn].atk,yourparatk,comps[compturn].iq);
 940             cout<<comps[compturn].name;
 941             printf("受到%d点伤害\n",compharm);
 942             printf("\n");
 943         }
 944         if(compdir==0)
 945         {
 946             cout<<comps[compturn].name<<" "<<attack_way[compact];
 947             printf(" (%d*%d-%d): ",comps[compturn].atk,compatk,yours[yourturn].iq);
 948             cout<<yours[yourturn].name;
 949             printf("受到%d点伤害\n",yourharm);
 950             cout<<comppars[compparturn].name<<" "<<attack_way[compparact];
 951             printf(" (%d*%d-%d): ",comppars[compparturn].atk,compparatk,yourpars[yourparturn].iq);
 952             cout<<yourpars[yourparturn].name;
 953             printf("受到%d点伤害\n",yourparharm);
 954         }
 955         else
 956         {
 957             cout<<comps[compturn].name<<" "<<attack_way[compact];
 958             printf(" (%d*%d-%d): ",comps[compturn].atk,compatk,yourpars[yourparturn].iq);
 959             cout<<yourpars[yourparturn].name;
 960             printf("受到%d点伤害\n",yourparharm);
 961             cout<<comppars[compparturn].name<<" "<<attack_way[compparact];
 962             printf(" (%d*%d-%d): ",comppars[compparturn].atk,compparatk,yours[yourturn].iq);
 963             cout<<yours[yourturn].name;
 964             printf("受到%d点伤害\n",yourharm);
 965         }
 966         if(yours[yourturn].blood<=0)
 967         {
 968             cout<<a[0].name;
 969             printf("方武将 ");
 970             cout<<yours[yourturn].name;
 971             printf(" 阵亡!\n");
 972             Sleep(200);
 973             printf(" 默哀一秒钟");
 974             shenglve();
 975             printf("\n");
 976         }
 977         if(yourpars[yourparturn].blood<=0)
 978         {
 979             cout<<a[1001].name;
 980             printf("方武将 ");
 981             cout<<yourpars[yourparturn].name;
 982             printf(" 阵亡!\n");
 983             Sleep(200);
 984             printf(" 默哀一秒钟");
 985             shenglve();
 986             printf("\n");
 987         }
 988         if(comps[compturn].blood<=0)
 989         {
 990             cout<<a[1000].name;
 991             printf("方武将 ");
 992             cout<<comps[compturn].name;
 993             printf(" 阵亡!\n");
 994             Sleep(200);
 995             printf(" 默哀一秒钟");
 996             shenglve();
 997             printf("\n");
 998         }
 999         if(comppars[compparturn].blood<=0)
1000         {
1001             cout<<a[2000].name;
1002             printf("方武将 ");
1003             cout<<comppars[compparturn].name;
1004             printf(" 阵亡!\n");
1005             Sleep(200);
1006             printf(" 默哀一秒钟");
1007             shenglve();
1008             printf("\n");
1009         }
1010         printf("\n");
1011     }
1012     printf("\n");
1013     if(yours[0].blood<=0)
1014     {
1015         cout<<comps[0].name<<" & "<<comppars[0].name;
1016         printf("方胜利! ヾ( ̄ー ̄)X(^▽^)ゞ \n");
1017     }
1018     if(comps[0].blood<=0)
1019     {
1020         cout<<yours[0].name<<" & "<<yourpars[0].name;
1021         printf("方胜利! ヾ( ̄ー ̄)X(^▽^)ゞ \n");
1022     }
1023     printf("\n");
1024 }
1025 
1026 void play3()
1027 {
1028     printf("暂未开放,敬请期待\n");
1029 } 
1030 
1031 void choose()
1032 {
1033     printf("请选择对战模式:\n");
1034     printf("-①.1V1模式  ···输入1\n");
1035     printf("-②.2V2模式  ···输入2\n");
1036     printf("-③.国战模式 ···输入3\n");
1037     scanf("%d",&goal);
1038     while(goal>3 || goal<1)
1039     {
1040         printf("无此选项\n");
1041         printf("\n"); 
1042         printf("请选择对战模式:\n");
1043         printf("-①.1V1模式 ···输入1\n");
1044         printf("-②.2V2模式 ···输入2\n");
1045         printf("-③.国战模式···输入3\n");
1046         scanf("%d",&goal);
1047     }
1048     if(goal==1)
1049         play1(); 
1050     if(goal==2)
1051         play2();
1052     if(goal==3)
1053         play3();
1054     printf("加载中");
1055     shenglve();
1056     printf("\n");
1057 }
1058 
1059 int main()
1060 {
1061     srand((unsigned int) time (NULL));
1062     printf("~请按提示进行操作~\n");
1063     Sleep(300);
1064     kaishi();
1065     frinit();
1066     choose();
1067     while(1)
1068     {
1069         printf("是否重新开始? 1-是 2-否\n");
1070         scanf("%d",&goal);
1071         if(goal==1)
1072             choose(); 
1073         else
1074             break;
1075     }
1076     printf("Ending!\n");
1077     return 0;
1078 }

 

posted @ 2021-07-31 18:42  上官书房  阅读(347)  评论(0)    收藏  举报