游戏代码

  1 #include<stdlib.h>
  2  #include<stdio.h>
  3  #include<time.h>       //suiji        
  4  #include<string.h>
  5  #include<windows.h>          //SLEEP函数
  6  struct Player                        //玩家结构体,并初始化player
  7  {
  8      char name[21];
  9      int attack;
 10      int defense;
 11      int health;
 12      long int max_health;
 13      int level;
 14      int exp;
 15      int range_exp;
 16      long int max_exp;
 17  }player={"勇者",50,40,100,100,1,0,0,100};
 18  struct Enemy                         //怪的结构体,并初始化各种怪
 19  {
 20      char name[20];
 21      char wupin[12];
 22      int attack;
 23      int defense;
 24      int health;
 25      int money;
 26      long int exp;
 27      int wupin_sign;
 28      int wupinpro;
 29      int double_attack;
 30      int miss;
 31  }strongman={"森林巨人","黄金圣衣",40,50,350,200,100,1,2,1,0},
 32  witch={"森林女巫","银甲",25,15,100,50,50,2,2,1,1},
 33  xiyi={"森林蜥蜴","铁甲",18,10,50,30,35,3,3,2,2},
 34  big_strongman={"森林巨人王","巨人之臂",40*5,50*5,350*5,200*5,100*5,4,4,2,0},
 35  lion={"草原雄狮","绝世好剑",60,30,280,200,100,5,2,1,0},
 36  horse={"草原野马","碧血剑",28,12,90,50,50,6,2,1,1},
 37  bee={"草原黄蜂","长剑",17,11,60,30,35,7,3,2,2},
 38  shitu={"使徒","",60*8,30*8,280*8,200*8,100*8,9,1,1,0},
 39  guai={"","",0,0,0,0,0,0,0,0,0};
 40      struct Place
 41      {
 42        int bar,hotel,forest1,forest2,forest3,grass1,grass2,grass3;
 43      }place={1,2,3,4,5,6,7,8};
 44  
 45     int max_exp=0;
 46      int choose_number=0,s=0,strongman_arm=0,battle=0,money=500,place_sign=9;
 47      int cao=3,jijiubao=2,baiyao=2,superbaiyao=1,boom=3,dubiao=2,atom_boom=1;
 48      int fang=0,fang1=10,fang1n=0,fang2=20,fang2n=0,fang3=40,fang3n=0,fang4=100,fang4n=0;
 49      int gong=0,gong1=8,gong1n=0,gong2=15,gong2n=0,gong3=25,gong3n=0,gong4=60,gong4n=0;
 50      char gongname[20]="",fangname[20]="";
 51      char proof;
 52  
 53     void AddWupin(int);
 54      int AttackResult();
 55      void BattleAct();
 56      void ChooseWupin();
 57      void DisplayState();
 58      void OrdinaryAct();    
 59     int SuiJi();
 60      int SuiJi100();
 61      void WhetherLevelUp();
 62      void SlowDisplay(char *);    
 63 
 64 int main()
 65  {
 66      
 67 
 68     int i=0,j=0,k=0;
 69      char player_name[21];
 70 
 71        SlowDisplay("这是一个勇者的世界! 雅莉萨斯国的罗茜公主被陌生人绑架了!

 伟大的勇者啊~拿起你们的武器,营救公主!


输入你的名字:   (20个字符)


");
 72          
 73          //    sndPlaySound("res\F005.wav",SND_LOOP);
 74      scanf("%s",player_name);    
 75     strncpy(player.name,player_name,20);
 76      if(strcmp(player.name,"Semora勇敢战士")==0)
 77      {
 78          SlowDisplay("
  隐身多年的 Semora勇敢战士 啊! 你终于出来了!雅莉萨斯国正需要你的帮助,快去吧!






    这时,一道白光射出,射到了Semora勇敢战士的身上






    ......






    Semora勇敢战士 吸收能量ing...      随即...     能力觉醒!!!






");
 79          player.attack=100000;
 80          player.defense=100000;
 81          player.health=100000;
 82          player.max_health=100000;
 83      }    
 84      else
 85      {
 86          SlowDisplay("
雅莉萨斯国国王:


    勇者,欢迎你来到我的王国!但是,由于我的女儿被抢走了,烦请勇士帮我们一下吧!会有丰厚的报酬哦~~


");
 87          printf("%s",player.name);
 88          SlowDisplay(" :


    您放心好了,我一定帮您把公主救出来!



    国王大手一挥,你落到了这个世界,开始了拯救公主的征程。






"); 
 89      }
 90     getchar();
 91  
 92     OrdinaryAct();
 93      return 0;
 94  }
 95  
 96     int SuiJi()
 97  {
 98      srand((unsigned)time(NULL));
 99      return rand()%10;
100  }
101  
102 
103     int SuiJi100()
104  {
105      srand((unsigned)time(NULL));
106      return rand()%100;
107  }
108  
109 
110     void ChooseWupin()                         //选择物品 并使用
111  {
112      printf("物品: 1,止血草%d个 2,急救包%d个 3,云南白药%d个 4,超级云南白药%d个 5,手雷%d个 6,毒标%d个 7,手抛式原子弹%d个 0,返回


",cao,jijiubao,baiyao,superbaiyao,boom,dubiao,atom_boom);
113      switch(scanf("%d",&choose_number),choose_number)
114      {
115      case 1:
116          if(cao>0)
117          {
118              SlowDisplay("使用止血草,HP增加60


");
119              cao--;
120              if(player.health+60>player.max_health)player.health=player.max_health;
121              else player.health+=60;
122          }
123          else SlowDisplay("没有止血草了


");
124          break;
125      case 2:
126          if(jijiubao>0)
127          {
128              SlowDisplay("使用急救包,HP增加80


");
129              jijiubao--;
130              if(player.health+80>player.max_health)player.health=player.max_health;
131              else player.health+=80;
132          }
133          else SlowDisplay("没有急救包了


");
134          break;
135      case 3:
136          if(baiyao>0)
137          {
138              SlowDisplay("使用云南白药,HP增加120


");
139              baiyao--;
140              if(player.health+120>player.max_health)player.health=player.max_health;
141              else player.health+=120;
142          }
143          else SlowDisplay("没有云南白药了


");
144          break;
145      case 4:
146          if(superbaiyao>0)
147          {
148              SlowDisplay("使用超级云南白药,HP增加200


");
149              superbaiyao--;
150              if(player.health+200>player.max_health)player.health=player.max_health;
151              else player.health+=200;
152          }
153          else SlowDisplay("没有超级云南白药了


");
154          break;
155      case 5:
156          if(battle)                   //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
157          {
158              if(boom>0)
159              {
160              SlowDisplay("使用手雷,敌人HP减少100


");
161              boom--;
162              guai.health-=100;
163              AttackResult();
164              }
165          }
166          else SlowDisplay("非战斗状态,不能使用手雷!


");
167          break;
168      case 6:
169          if(battle)                   //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
170          {
171              if(dubiao>0)
172              {
173              SlowDisplay("使用毒标,敌人HP减少200


");
174              dubiao--;
175              guai.health-=200;
176              AttackResult();
177              }
178          }
179          else SlowDisplay("非战斗状态,不能使用毒标!


");
180          break;
181      case 7:
182          if(battle)                   //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
183          {
184              if(atom_boom>0)
185              {
186              SlowDisplay("使用手抛式原子弹,敌人HP减少500


");
187              atom_boom--;
188              guai.health-=500;
189              AttackResult();
190              }
191          }
192          else SlowDisplay("非战斗状态,不能使用手抛式原子弹!


");
193          break;
194      case 0:break;
195      default:printf("ChooseWupin error!


");
196      }
197  }
198      int AttackResult()                      //攻击结果:判断是否获胜 是否获得物品 和 是否升级
199  {
200      if(guai.health<=0)
201      {
202          battle=0;
203          printf("战斗胜利!获得金币%d,经验%d


",guai.money,guai.exp);
204          player.exp+=guai.exp;
205          player.range_exp+=guai.exp;
206          money+=guai.money;
207          s=SuiJi();
208          if(s<guai.wupinpro)
209          {
210              SlowDisplay("从敌人尸骸中发现");
211              printf("%s


",guai.wupin);
212              AddWupin(guai.wupin_sign);
213          }
214          WhetherLevelUp();
215          if(strcmp(guai.name,"使徒")==0)
216          {
217              SlowDisplay("神秘老人(神色大变):


    什么?你竟然打败了我的使徒?你到底是谁?怎么会这么厉害?


"); 
218              printf("%s",player.name);
219              SlowDisplay(" : 


    嘿嘿,反正你也快死了,我就告诉你一条消息吧。我就是传说中的勇者!你想打败我?没门!基于你的“良好”表现,我决定:杀了你,以绝后患!





    这时,");
220              printf("%s",player.name);
221              SlowDisplay("的手里发出一道白光,那白光直直的击中了老人,神秘老人和他手中的巨人之臂双双飞出,不过巨人之臂掉到了 ");
222              printf("%s",player.name);
223              SlowDisplay(" 的脚下,而神秘老人狠狠的撞到了岩石上,一口鲜血喷出......





    ......





    ");
224              printf("%s",player.name);
225              SlowDisplay("缓缓的走到神秘老人的面前,说:


     现在,用你的生命来偿还吧!




    老人惊恐的瞪着");
226              printf("%s",player.name);
227              SlowDisplay(",然后化作一道白光,逃走了......




    这时,一个铁笼出现在");
228              printf("%s",player.name);
229              SlowDisplay("的面前,里面正关着泪流满面的公主。



公主:


    勇士,快来救我!


");
230              printf("%s",player.name);
231              SlowDisplay(" (皱眉头):


    我该怎么救你呢?


公主:


     你把巨人之臂给我就行了。




    "); 
232              printf("%s",player.name);
233              SlowDisplay("把巨人之臂通过铁笼的缝隙给了公主,公主用巨人之臂把锁的背面捅了两下,锁便开了,公主缓缓的走了出来,跟着你回到了皇宫^_^




"); 
234              puts("你完成了救出公主的任务,国王重赏了你!!!");
235              getchar();
236              getchar();
237              exit(0);
238          }
239          return 1;                 //攻击有结果了返回1,否则返回0,用于判断是否继续做战斗行为
240      }
241      else 
242     {
243          int s=SuiJi();
244          
245          
246          if((guai.attack+s-player.defense/3)<0)
247          {
248              player.health-=1;
249              printf("%s反击,你的HP减少了 1

",guai.name);
250          }
251          else
252          {
253              player.health-=guai.attack+s-player.defense/3;
254              printf("%s反击,你的HP减少了%d

",guai.name,guai.attack+s-player.defense/3);
255          }
256          if(player.health<0)
257          {
258              if(strcmp(guai.name,"使徒")==0)
259              {
260                  SlowDisplay("神秘老人(奸笑着):


    嘿嘿,小子,想对付我的使徒你还嫩了点,现在,我要你的鲜血作为代价......哈哈哈哈哈哈...... 


");
261                  SlowDisplay("老人手一挥,使徒拿着钢刀冲过来......将刀对准了");
262                  printf("%s",player.name);
263                  SlowDisplay("的脖子......然后......刀砍了下来......鲜血四溅......


");
264                  battle=0;
265                  printf("%s战死!金币掉落%d


",player.name,player.level*500);
266                  money-=player.level*500;
267                  player.health=player.max_health/5;
268                  SlowDisplay("






    头好沉啊......怎么回事......我这是在哪里......
    不对!我不是被使徒杀了吗?怎么复活了?不过把使徒杀了是我的任务!

"); 
269                  SlowDisplay("     你得到了国王的庇护,复活了!现在请重新开始任务吧!

"); 
270              }
271              else
272              {
273                  battle=0;
274                  printf("%s战死!金币掉落%d


",player.name,player.level*500);
275                  money-=player.level*500;
276                  player.health=player.max_health/5;
277              }
278              OrdinaryAct();//////////
279              return 1;
280          }
281      }
282      return 0;
283  }
284      void AddWupin(int wupin_sign)
285      {
286          
287          switch(wupin_sign)
288          {
289          case 1:fang4n++;        break;
290          case 2:fang3n++;        break;
291          case 3:fang2n++;        break;
292          case 4:strongman_arm=1;break;
293          case 5:gong4n++;        break;
294          case 6:gong3n++;        break;
295          case 7:gong2n++;        break;
296          default:printf("AddWupin error


");
297          }
298        
299      }
300      void WhetherLevelUp()
301      {
302          int i=0,j=0;
303          int l1=player.range_exp/100;
304          int l2=player.range_exp/300;
305          int l3=player.range_exp/600;
306          if(player.level<=15&&l1>0)                     //15级以下,经验足够 都满足则升级
307          {
308              if(l1==1)
309              {
310                  printf("%s",player.name);
311                  SlowDisplay("   升级!


攻击力+3, 防御力+2, HP上限+20


");
312                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
313                  player.attack+=3;
314                  player.defense+=2;
315                  player.max_health+=20;
316                  player.health=player.max_health;
317                  player.level++;
318                  player.range_exp=0;
319                  player.exp=player.max_exp;
320                  player.max_exp+=100;
321              }
322              else
323              {
324                  printf("好厉害!连升%d级!",l1);
325                  printf("攻击力+%d, 防御力+%d, HP上限+%d


",3*l1,2*l1,20*l1);
326                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
327                  player.attack+=3*l1;
328                  player.defense+=2*l1;
329                  player.max_health+=20*l1;
330                  player.health=player.max_health;
331                  player.level+=l1;
332                  player.range_exp=0;
333                  player.exp=player.max_exp;
334                  player.max_exp+=100*l1;
335              }
336          }
337          else if(player.level<=40&&l2>0)
338          {
339              if(l2==1)
340              {
341                  printf("%s",player.name);
342                  SlowDisplay("   升级!


攻击力+3, 防御力+2, HP上限+20


");
343                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
344                  player.attack+=3;
345                  player.defense+=2;
346                  player.max_health+=20;
347                  player.health=player.max_health;
348                  player.level++;
349                  player.range_exp=0;
350                  player.exp=player.max_exp;
351                  player.max_exp+=300;
352              }
353              else
354              {
355                  printf("好厉害!连升%d级!",l1);
356                  printf("攻击力+%d, 防御力+%d, HP上限+%d


",3*l2,2*l2,20*l2);
357                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
358                  player.attack+=3*l2;
359                  player.defense+=2*l2;
360                  player.max_health+=20*l2;
361                  player.health=player.max_health;
362                  player.level+=l2;
363                  player.range_exp=0;
364                  player.exp=player.max_exp;
365                  player.max_exp+=300*l2;
366              }
367          }
368          else if(l3>0)
369          {
370              if(l3==1)
371              {
372                  printf("%s",player.name);
373                  SlowDisplay("   升级!


攻击力+3, 防御力+2, HP上限+20


");
374                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
375                  player.attack+=3;
376                  player.defense+=2;
377                  player.max_health+=20;
378                  player.health=player.max_health;
379                  player.level++;
380                  player.range_exp=0;
381                  player.exp=player.max_exp;
382                  player.max_exp+=600;
383              }
384              else
385              {
386                  printf("好厉害!连升%d级!",l1);
387                  printf("攻击力+%d, 防御力+%d, HP上限+%d


",3*l3,2*l3,20*l3);
388                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
389                  player.attack+=3*l3;
390                  player.defense+=2*l3;
391                  player.max_health+=20*l3;
392                  player.health=player.max_health;
393                  player.level+=l3;
394                  player.range_exp=0;
395                  player.exp=player.max_exp;
396                  player.max_exp+=600*l3;
397              }
398          }
399      }
400      void OrdinaryAct()                    //正常行为菜单(移动,物品,对话,查看状态,装备,退出游戏)
401      {
402          
403          while(1)
404          {
405  //            (1000);
406  //            system("cls");
407              puts("=============================================================================");
408              printf("要做什么?


   1,移动  2,道具  3,对话  4,查看状态  5,装备  0,退出游戏


");
409              puts("=============================================================================");
410          switch(scanf("%d",&choose_number),choose_number)
411          { 
412         case 1:                                    //显示移动菜单
413              SlowDisplay("要去哪里?


");
414              printf("1,酒吧 2,旅馆 3,森林一层 4,森林二层 5,森林三层 6,草原一层 7,草原二层 8,草原三层


");
415              switch(scanf("%d",&choose_number),choose_number)
416              {
417              case 1:place_sign=place.bar;                        //记录目前位置-酒吧
418          //           OrdinaryAct();
419                     break;
420              case 2:place_sign=place.hotel;                      //进入旅店
421                     SlowDisplay("要住店吗? 200个金币 1,是  0,否


");
422                     choose_number=1;
423                     switch(scanf("%d",&choose_number),choose_number)
424                     {
425                     case 1:if(money-200<0)                       //判断钱是否够
426                              {
427                                  SlowDisplay("Sorry,你的钱不够~


");        
428                              }
429                              else 
430                             {
431                                  SlowDisplay("好好休息
	HP满
		第二天了

");
432                                  money-=200;                         //花费200住店费
433                                  player.health=player.max_health;    //体力满
434                              }
435                              break;
436                     case 0:SlowDisplay("下次再来!


");break;
437                     default:printf("hotel talk error!


");
438                     }
439                     place_sign=0;
440                     break;
441              case 3:
442                  place_sign=place.forest1;
443                  s=SuiJi();    
444                 if(s<7)
445                  {
446                      battle=1;
447                      guai=xiyi;
448                      printf("%s扑了过来!


",guai.name);
449                      BattleAct();
450                  }
451                  else if(s<9)
452                  {
453                      battle=1;
454                      guai=witch;
455                      printf("%s扑了过来!


",guai.name);
456                      BattleAct();
457                  }
458                  else
459                  {
460                      SlowDisplay("这里安全


");
461                      //不用调用OAct函数,会自动执行OAct函数;
462                  }
463                  break;
464              case 4:
465                  place_sign=place.forest2;
466                  s=SuiJi();    
467                 if(s<7)
468                  {
469                      battle=1;
470                      guai=witch;
471                      printf("%s扑了过来!


",guai.name);
472                      BattleAct();
473                  }
474                  else if(s<9)
475                  {
476                      battle=1;
477                      guai=strongman;
478                      printf("%s扑了过来!


",guai.name);
479                      BattleAct();
480                  }
481                  else
482                  {
483                      SlowDisplay("这里安全


");
484                  }
485                  break;
486              case 5:
487                  place_sign=place.forest3;
488                  s=SuiJi();    
489                 if(s<7)
490                  {
491                      battle=1;
492                      guai=strongman;
493                      printf("%s扑了过来!


",guai.name);
494                      BattleAct();
495                  }
496                  else if(s<9)
497                  {
498                      battle=1;
499                      guai=big_strongman;
500                      printf("%s扑了过来!


",guai.name);
501                      BattleAct();
502                  }
503                  else
504                  {
505                      SlowDisplay("这里安全


");
506                  }
507                  break;
508              case 6:
509                  place_sign=place.grass1;
510                  s=SuiJi();    
511                 if(s<7)
512                  {
513                      battle=1;
514                      guai=bee;
515                      printf("%s扑了过来!


",guai.name);
516                      BattleAct();
517                  }
518                  else if(s<9)
519                  {
520                      battle=1;
521                      guai=horse;
522                      printf("%s扑了过来!


",guai.name);
523                      BattleAct();
524                  }
525                  else
526                  {
527                      SlowDisplay("这里安全


");
528                  }
529                  break;
530              case 7:
531                  place_sign=place.grass2;
532                  s=SuiJi();    
533                 if(s<7)
534                  {
535                      battle=1;
536                      guai=horse;
537                      printf("%s扑了过来!


",guai.name);
538                      BattleAct();
539                  }
540                  else if(s<9)
541                  {
542                      battle=1;
543                      guai=lion;
544                      printf("%s扑了过来!


",guai.name);
545                      BattleAct();
546                  }
547                  else
548                  {
549                      SlowDisplay("这里安全


");
550                  }
551                  break;
552              case 8:
553                  place_sign=place.grass3;
554                  s=SuiJi();    
555                 if(s<7)
556                  {
557                      battle=1;
558                      guai=lion;
559                      printf("%s扑了过来!


",guai.name);
560                      BattleAct();
561                  }
562                  else if(s<9)
563                  {
564                      battle=1;                    
565                      if(strongman_arm)
566                      {
567                          SlowDisplay("神秘老人:


    哈哈,年轻人,做的不错,不过...嘿嘿,你上当啦!巨人之臂我要了,公主你也别想带走!



");
568                          printf("%s",player.name);
569                          SlowDisplay(" :


    你休想!我好不容易才拿到巨人之臂,你别想占我的便宜!


神秘老人(脸色阴沉):


     既然你这么不识相,那么也别怪我不客气了!使徒,上!



"); 
570                          guai=shitu;
571                      printf("%s扑了过来!


",guai.name);
572                      BattleAct();
573                      }
574                      else SlowDisplay("神秘老人:


    年轻人,你好啊.如果你有巨人之臂,我可以告诉你公主的下落哦~


");
575                  }
576                  else
577                  {
578                      SlowDisplay("这里安全


");
579                  }
580                  break;
581              default:printf("choose map error!


");
582              }
583              break;
584          case 2:   ChooseWupin();break;              //显示道具,并可以使用.
585          case 3:                                               //对话选项
586              if(place_sign==place.bar) 
587             {
588                  SlowDisplay("要和谁说话?


1,红发女郎 2,赏金猎人 3,酒吧老板


");     //显示对话人物
589                 switch(scanf("%d",&choose_number),choose_number)
590                 {
591                 case 1:
592                     SlowDisplay("红发女郎:


    吧台边那个Hunter好帅啊!(~脸红~)


听说他经常外出打猎,外面的路他应该很熟悉的!


");
593                     break;
594                 case 2:
595                     if(fang1n<1&&gong1n<1)
596                     {
597                         SlowDisplay("赏金猎人:


    你要救公主啊!好胆量!


    不过外面的丛林和草原很险恶,而且越深越危险,这是匕首和布衣,对你会有些帮助的,拿去吧!


");
598                         printf("%s心想:(哇,这位大叔人真好啊!


)",player.name);
599                         gong1n++;
600                         fang1n++;
601                     }
602                     else SlowDisplay("赏金猎人:


    加油吧,年轻人!


    不要被外面丛林和草原所吓倒!


");
603                     break;
604                 case 3:
605                     printf("要喝点什么?


    1,二锅头25金币 HP+20  2,XO酒80金币 HP+50  3,人头马面150金币 HP+100  0,返回


");
606                     choose_number=1;
607                     while(choose_number)
608                     {
609                          switch(scanf("%d",&choose_number),choose_number)
610                          {
611                          case 1:if(money<25)
612                                 {
613                                   SlowDisplay("钱不够!");                              
614                                 }
615                                 else
616                                 {
617                                   if(player.health+20<=player.max_health)
618                                   {
619                                       SlowDisplay("HP+20.");
620                                       money-=25;
621                                       player.health+=20;
622                                   }
623                                   else
624                                   {
625                                       SlowDisplay("HP满了");                                    
626                                       player.health=player.max_health;
627                                   }
628                                 }
629                                 break;
630                          case 2:if(money<80)
631                                 {
632                                   SlowDisplay("钱不够!");                              
633                                 }
634                                 else
635                                 {
636                                   if(player.health+50<=player.max_health)
637                                   {
638                                       SlowDisplay("HP+50.");
639                                       money-=80;
640                                       player.health+=50;
641                                   }
642                                   else
643                                   {
644                                       SlowDisplay("HP满了");                                    
645                                       player.health=player.max_health;
646                                   }
647                                 }
648                                 break;
649                          case 3:if(money<150)
650                                 {
651                                   SlowDisplay("钱不够!");                              
652                                 }
653                                 else
654                                 {
655                                   if(player.health+100<=player.max_health)
656                                   {
657                                       SlowDisplay("HP+100.");
658                                       money-=150;
659                                       player.health+=100;
660                                   }
661                                   else
662                                   {
663                                       SlowDisplay("HP满了");                                    
664                                       player.health=player.max_health;
665                                   }
666                                 }
667                                 break;
668                          case 0:SlowDisplay("下次在来!
");break;
669                          default:SlowDisplay("输入错误


");
670                          }
671                     }
672                 }
673              }
674              else if(place_sign==place.hotel)
675                      SlowDisplay("“老板娘!我...”


“我忙着呢,没空理你~”


");
676              else SlowDisplay("这里好像没人可以聊天


");
677              break;
678          case 4:   DisplayState(); break;             //显示状态
679          case 5:                                 //装备
680              printf("攻装: 1,匕首:%d个 2,长剑:%d个 3,碧血剑:%d个 4,绝世好剑:%d个


",gong1n,gong2n,gong3n,gong4n);
681              printf("防装: 5,布衣:%d个 6,铁甲:%d个 7,银甲:%d个   8,黄金圣衣:%d个		0,返回


",fang1n,fang2n,fang3n,fang4n);
682              SlowDisplay("选择要装备的武器或防具:


");
683              switch(scanf("%d",&choose_number),choose_number)
684              {
685              case 1:if(gong1n>=1)
686                     {
687                         SlowDisplay("拿起了匕首


");
688                         gong=gong1;
689                         strcpy(gongname,"匕首");
690                     }
691                     else SlowDisplay("你没有匕首可以装备


");
692                     break;
693              case 2:if(gong2n>=1)
694                     {
695                         SlowDisplay("拿起了长剑


");
696                         gong=gong2;
697                         strcpy(gongname,"长剑");
698                     }
699                     else SlowDisplay("你没有长剑可以装备


");
700                     break;
701              case 3:if(gong3n>=1)
702                     {
703                         SlowDisplay("拿起了碧血剑


");
704                         gong=gong3;
705                         strcpy(gongname,"碧血剑");
706                     }
707                     else SlowDisplay("你没有碧血剑可以装备


");
708                     break;
709              case 4:if(gong4n>=1)
710                     {
711                         SlowDisplay("拿起了绝世好剑


");
712                         gong=gong4;
713                         strcpy(gongname,"绝世好剑");
714                     }
715                     else SlowDisplay("你没有绝世好剑可以装备


");
716                     break;
717              case 5:if(fang1n>=1)
718                     {
719                         SlowDisplay("穿上了布衣


");
720                         fang=fang1;
721                         strcpy(fangname,"布衣");
722                     }
723                     else SlowDisplay("你没有布衣可以装备


");
724                     break;
725              case 6:if(fang2>=1)
726                     {
727                         SlowDisplay("穿上了铁甲


");
728                         fang=fang2;
729                         strcpy(fangname,"铁甲");
730                     }
731                     else SlowDisplay("你没有铁甲可以装备


");
732                     break;
733              case 7:if(fang3n>=1)
734                     {
735                         SlowDisplay("穿上了银甲


");
736                         fang=fang3;
737                         strcpy(fangname,"银甲");
738                     }
739                     else SlowDisplay("你没有银甲可以装备


");
740                     break;
741              case 8:if(fang4n>=1)
742                     {
743                         SlowDisplay("穿上了黄金圣衣


");
744                         fang=fang4;
745                         strcpy(fangname,"黄金圣衣");
746                     }
747                     else SlowDisplay("你没有黄金圣衣可以装备


");
748                     break;
749              case 0:SlowDisplay("未更换装备


");break;
750              default:printf("change error!");
751              }
752              break;
753          case 0: 
754             SlowDisplay("确定推出游戏?(Y/N)


");
755              getchar();
756              proof=getchar();
757              if(proof=='y'||proof=='Y')
758              {
759                  SlowDisplay("数据存储中...");
760                  //向文件中更新数据;
761                  getchar();
762                  SlowDisplay("按回车退出");
763                  getchar();
764                  return;
765              }
766              else if(proof=='n'||proof=='N')printf("继续游戏!


");
767              else SlowDisplay("继续!


");
768              break;
769          default:SlowDisplay("输入错误!


");
770          }
771      }
772      }
773      void DisplayState()
774      {
775          printf("%s 攻击力:%d+%d=%d  防御力:%d+%d=%d  HP:%d/%d 


",player.name,player.attack,gong,player.attack+gong,player.defense,fang,player.defense+fang,player.health,player.max_health);
776          printf("武器: %s 防具: %s 


",gongname,fangname);
777          printf("等级:%d  经验:%d/%d 还需要%d经验升级 金币:%d 


",player.level,player.exp,player.max_exp,player.max_exp-player.exp,money);
778      }
779      void BattleAct()
780      {
781          while(1)
782          {
783              puts("=============================================================================");
784              printf("要怎么办?


    1,攻击 2,物品 3,查看状态 4,逃跑


");
785              switch(scanf("%d",&choose_number),choose_number)
786              {
787              case 1:
788                  s=SuiJi();
789                  printf("%s攻击! %sHP减少%d


",player.name,guai.name,player.attack+s+gong-guai.defense/3);
790                  guai.health-=player.attack+s+gong-guai.defense/3;
791                  if(AttackResult())return;            //如果攻击有结果(敌人或玩家战死)退出函数
792                  else continue; 
793             case 2: ChooseWupin();break;             //选择物品,可以使用,战斗中允许使用攻击性物品
794              case 3:DisplayState();break;             //显示状态
795              case 4:
796                  s=SuiJi();
797                  if(s<4)                               //40%的概率可以逃跑
798                  {
799                      printf("%s逃跑了~


",player.name);
800                      battle=0;
801                      return;
802                  }
803                  else printf("%s逃跑失败!


",player.name);
804                  break;
805              default:SlowDisplay("输入错误,重新输入!


");
806              }
807          }
808      }
809      void SlowDisplay(char *p)
810      {
811          while(1)
812          {
813              if(*p!=0)
814                  printf("%c",*p++);
815              else 
816                 break;
817              Sleep(100);
818          }
819      }
原文地址:https://www.cnblogs.com/Semora-2004/p/5684852.html