codevs莫题解搞来的游戏 (题号1000)

  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={"使徒","\0",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,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.     int max_exp=0;
  45.     int choose_number=0,s=0,strongman_arm=0,battle=0,money=500,place_sign=9;
  46.     int cao=3,jijiubao=2,baiyao=2,superbaiyao=1,boom=3,dubiao=2,atom_boom=1;
  47.     int fang=0,fang1=10,fang1n=0,fang2=20,fang2n=0,fang3=40,fang3n=0,fang4=100,fang4n=0;
  48.     int gong=0,gong1=8,gong1n=0,gong2=15,gong2n=0,gong3=25,gong3n=0,gong4=60,gong4n=0;
  49.     char gongname[20]="无",fangname[20]="无";
  50.     char proof;
  51.     void AddWupin(int);
  52.     int AttackResult();
  53.     void BattleAct();
  54.     void ChooseWupin();
  55.     void DisplayState();
  56.     void OrdinaryAct();    
  57.     int SuiJi();
  58.     int SuiJi100();
  59.     void WhetherLevelUp();
  60.     void SlowDisplay(char *);    
  61. int main()

  62.     int i=0,j=0,k=0;
  63.     char player_name[21];
  64.     SlowDisplay("这是一个勇者的世界!  gdfzoj的逸宁公主被陌生人绑架了!\n\n 伟大的勇者啊~拿起你们的武器,营救逸宁公主!\n\n\n输入你的名字:   (20个字符)\n\n\n");       
  65.     //    sndPlaySound("res\\F005.wav",SND_LOOP);
  66.     scanf("%s",player_name);
  67. system("cls");
  68. //SlowDisplay("你叫fzj\n\n\n");
  69. system("pause");
  70. system("cls");
  71.     strncpy(player.name,player_name,20);
  72.     if(strcmp(player.name,"fzj")==0){
  73.         SlowDisplay("封号多年的 fzj 啊!你终于可以重见天日了!\n\n\n fzj 重新启动...      随即...     暴走!!!\n\n\nattack=999\ndefence=999\nhealth=9999\nhealthmax=9999");
  74.         player.attack=500;
  75.         player.defense=400;
  76.         player.health=1000;
  77.         player.max_health=1000;
  78.     }  
  79.     getchar(); 
  80.     OrdinaryAct();
  81.     return 0;
  82. }
  83. int SuiJi()
  84. {
  85.      srand((unsigned)time(NULL));
  86.      return rand()%10;
  87. }
  88. int SuiJi100()
  89. {
  90.      srand((unsigned)time(NULL));
  91.      return rand()%100;
  92. }
  93. void ChooseWupin()                         //选择物品 并使用
  94. {
  95.     printf("物品: 1,止血草%d个 2,急救包%d个 3,云南白药%d个 4,超级云南白药%d个 5,手雷%d个 6,毒标%d个 7,手抛式原子弹%d个 0,返回\n\n\n",cao,jijiubao,baiyao,superbaiyao,boom,dubiao,atom_boom);
  96.     switch(scanf("%d",&choose_number),choose_number)
  97.     {
  98.     case 1:
  99.         if(cao>0)
  100.         {
  101.             SlowDisplay("使用止血草,HP增加60\n\n\n");
  102.             cao--;
  103.             if(player.health+60>player.max_health)player.health=player.max_health;
  104.             else player.health+=60;
  105.         }
  106.         else SlowDisplay("没有止血草了\n\n\n");
  107.         break;
  108.     case 2:
  109.         if(jijiubao>0)
  110.         {
  111.             SlowDisplay("使用急救包,HP增加80\n\n\n");
  112.             jijiubao--;
  113.             if(player.health+80>player.max_health)player.health=player.max_health;
  114.             else player.health+=80;
  115.         }
  116.         else SlowDisplay("没有急救包了\n\n\n");
  117.         break;
  118.     case 3:
  119.         if(baiyao>0)
  120.         {
  121.             SlowDisplay("使用云南白药,HP增加120\n\n\n");
  122.             baiyao--;
  123.             if(player.health+120>player.max_health)player.health=player.max_health;
  124.             else player.health+=120;
  125.         }
  126.         else SlowDisplay("没有云南白药了\n\n\n");
  127.         break;
  128.     case 4:
  129.         if(superbaiyao>0)
  130.         {
  131.             SlowDisplay("使用超级云南白药,HP增加200\n\n\n");
  132.             superbaiyao--;
  133.             if(player.health+200>player.max_health)player.health=player.max_health;
  134.             else player.health+=200;
  135.         }
  136.         else SlowDisplay("没有超级云南白药了\n\n\n");
  137.         break;
  138.     case 5:
  139.         if(battle)                   //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
  140.         {
  141.             if(boom>0)
  142.             {
  143.             SlowDisplay("使用手雷,敌人HP减少100\n\n\n");
  144.             boom--;
  145.             guai.health-=100;
  146.             AttackResult();
  147.             }
  148.         }
  149.         else SlowDisplay("非战斗状态,不能使用手雷!\n\n\n");
  150.         break;
  151.     case 6:
  152.         if(battle)                   //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
  153.         {
  154.             if(dubiao>0)
  155.             {
  156.             SlowDisplay("使用毒标,敌人HP减少200\n\n\n");
  157.             dubiao--;
  158.             guai.health-=200;
  159.             AttackResult();
  160.             }
  161.         }
  162.         else SlowDisplay("非战斗状态,不能使用毒标!\n\n\n");
  163.         break;
  164.     case 7:
  165.         if(battle)                   //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
  166.         {
  167.             if(atom_boom>0)
  168.             {
  169.             SlowDisplay("使用手抛式原子弹,敌人HP减少500\n\n\n");
  170.             atom_boom--;
  171.             guai.health-=500;
  172.             AttackResult();
  173.             }
  174.         }
  175.         else SlowDisplay("非战斗状态,不能使用手抛式原子弹!\n\n\n");
  176.         break;
  177.     case 0:break;
  178.     default:printf("ChooseWupin error!\n\n\n");
  179.     }
  180. }
  181. int AttackResult()                      //攻击结果:判断是否获胜 是否获得物品 和 是否升级
  182. {
  183.     if(guai.health<=0)
  184.     {
  185.         battle=0;
  186.         printf("战斗胜利!获得金币%d,经验%d\n\n\n",guai.money,guai.exp);
  187.         player.exp+=guai.exp;
  188.         player.range_exp+=guai.exp;
  189.         money+=guai.money;
  190.         s=SuiJi();
  191.         if(s<guai.wupinpro)
  192.         {
  193.             SlowDisplay("从敌人尸骸中发现");
  194.             printf("%s\n\n\n",guai.wupin);
  195.             AddWupin(guai.wupin_sign);
  196.         }
  197.         WhetherLevelUp();
  198.         if(strcmp(guai.name,"使徒")==0)
  199.         {
  200.             puts("战斗胜利,救出逸宁公主!!!");
  201.             getchar();
  202.             getchar();
  203.             exit(0);
  204.         }
  205.         return 1;                 //攻击有结果了返回1,否则返回0,用于判断是否继续做战斗行为
  206.     }
  207.     else 
  208.    {
  209.         int s=SuiJi();
  210.         if((guai.attack+s-player.defense/3)<0)
  211.         {
  212.             player.health-=1;
  213.             printf("%s反击,你的HP减少了 1\n\n",guai.name);
  214.         }
  215.         else
  216.         {
  217.             player.health-=guai.attack+s-player.defense/3;
  218.             printf("%s反击,你的HP减少了%d\n\n",guai.name,guai.attack+s-player.defense/3);
  219.         }
  220.         if(player.health<0)
  221.         {
  222.             battle=0;
  223.             printf("%s战死!金币掉落%d\n\n\n",player.name,player.level*500);
  224.             money-=player.level*500;
  225.             player.health=player.max_health/5;
  226.             OrdinaryAct();//
  227.             return 1;
  228.         }
  229.     }
  230.     return 0;
  231. }
  232.     void AddWupin(int wupin_sign)
  233.     {
  234.         switch(wupin_sign)
  235.         {
  236.         case 1:fang4n++;        break;
  237.         case 2:fang3n++;        break;
  238.         case 3:fang2n++;        break;
  239.         case 4:strongman_arm=1;break;
  240.         case 5:gong4n++;        break;
  241.         case 6:gong3n++;        break;
  242.         case 7:gong2n++;        break;
  243.         default:printf("AddWupin error\n\n\n");
  244.        }
  245.     }
  246.     void WhetherLevelUp()
  247.     {
  248.         int i=0,j=0;
  249.         int l1=player.range_exp/100;
  250.         int l2=player.range_exp/300;
  251.         int l3=player.range_exp/600;
  252.         if(player.level<=15&&l1>0)                     //15级以下,经验足够 都满足则升级
  253.          {
  254.              if(l1==1)
  255.              {
  256.                  printf("%s",player.name);
  257.                  SlowDisplay("   升级!\n\n\n攻击力+3, 防御力+2, HP上限+20\n\n\n");
  258.                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
  259.                  player.attack+=3;
  260.                  player.defense+=2;
  261.                  player.max_health+=20;
  262.                  player.health=player.max_health;
  263.                  player.level++;
  264.                  player.range_exp=0;
  265.                  player.exp=player.max_exp;
  266.                  player.max_exp+=100;
  267.              }
  268.              else
  269.              {
  270.                  printf("好厉害!连升%d级!",l1);
  271.                  printf("攻击力+%d, 防御力+%d, HP上限+%d\n\n\n",3*l1,2*l1,20*l1);
  272.                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
  273.                  player.attack+=3*l1;
  274.                  player.defense+=2*l1;
  275.                  player.max_health+=20*l1;
  276.                  player.health=player.max_health;
  277.                  player.level+=l1;
  278.                  player.range_exp=0;
  279.                  player.exp=player.max_exp;
  280.                  player.max_exp+=100*l1;
  281.              }
  282.          }
  283.          else if(player.level<=40&&l2>0)
  284.          {
  285.              if(l2==1)
  286.              {
  287.                  printf("%s",player.name);
  288.                  SlowDisplay("   升级!\n\n\n攻击力+3, 防御力+2, HP上限+20\n\n\n");
  289.                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
  290.                  player.attack+=3;
  291.                  player.defense+=2;
  292.                  player.max_health+=20;
  293.                  player.health=player.max_health;
  294.                  player.level++;
  295.                  player.range_exp=0;
  296.                  player.exp=player.max_exp;
  297.                  player.max_exp+=300;
  298.              }
  299.              else
  300.              {
  301.                  printf("好厉害!连升%d级!",l1);
  302.                  printf("攻击力+%d, 防御力+%d, HP上限+%d\n\n\n",3*l2,2*l2,20*l2);
  303.                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
  304.                  player.attack+=3*l2;
  305.                  player.defense+=2*l2;
  306.                  player.max_health+=20*l2;
  307.                  player.health=player.max_health;
  308.                  player.level+=l2;
  309.                  player.range_exp=0;
  310.                  player.exp=player.max_exp;
  311.                  player.max_exp+=300*l2;
  312.              }
  313.          }
  314.          else if(l3>0)
  315.          {
  316.              if(l3==1)
  317.              {
  318.                  printf("%s",player.name);
  319.                  SlowDisplay("   升级!\n\n\n攻击力+3, 防御力+2, HP上限+20\n\n\n");
  320.                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
  321.                  player.attack+=3;
  322.                  player.defense+=2;
  323.                  player.max_health+=20;
  324.                  player.health=player.max_health;
  325.                  player.level++;
  326.                  player.range_exp=0;
  327.                  player.exp=player.max_exp;
  328.                  player.max_exp+=600;
  329.              }
  330.              else
  331.              {
  332.                  printf("好厉害!连升%d级!",l1);
  333.                  printf("攻击力+%d, 防御力+%d, HP上限+%d\n\n\n",3*l3,2*l3,20*l3);
  334.                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
  335.                  player.attack+=3*l3;
  336.                  player.defense+=2*l3;
  337.                  player.max_health+=20*l3;
  338.                  player.health=player.max_health;
  339.                  player.level+=l3;
  340.                  player.range_exp=0;
  341.                  player.exp=player.max_exp;
  342.                  player.max_exp+=600*l3;
  343.              }
  344.          }
  345.      }
  346.      void OrdinaryAct()                    //正常行为菜单(移动,物品,对话,查看状态,装备,退出游戏)
  347.      {
  348.          
  349.          while(1)
  350.          {
  351.  //            \(1000);
  352.  //            system("cls");
  353.              puts("=============================================================================");
  354.              printf("要做什么?\n\n\n   1,移动  2,道具  3,对话  4,查看状态  5,装备  0,退出游戏\n\n\n");
  355.              puts("=============================================================================");
  356.          switch(scanf("%d",&choose_number),choose_number)
  357.          { 
  358.              case 1:                                    //显示移动菜单
  359.              SlowDisplay("要去哪里?\n\n\n");
  360.              printf("1,酒吧 2,旅馆 3,森林一层 4,森林二层 5,森林三层 6,草原一层 7,草原二层 8,草原三层\n\n\n");
  361.              switch(scanf("%d",&choose_number),choose_number)
  362.              {
  363.              case 1:place_sign=place.bar;                        //记录目前位置-酒吧
  364.          //           OrdinaryAct();
  365.                     break;
  366.              case 2:place_sign=place.hotel;                      //进入旅店
  367.                     SlowDisplay("要住店吗? 200个金币 1,是  0,否\n\n\n");
  368.                     choose_number=1;
  369.                     switch(scanf("%d",&choose_number),choose_number)
  370.                     {
  371.                     case 1:if(money-200<0)                       //判断钱是否够
  372.                              {
  373.                                  SlowDisplay("Sorry,你的钱不够~\n\n\n");        
  374.                              }
  375.                              else 
  376.                             {
  377.                                  SlowDisplay("好好休息\n\tHP满\n\t\t第二天了\n\n");
  378.                                  money-=200;                         //花费200住店费
  379.                                  player.health=player.max_health;    //体力满
  380.                              }
  381.                              break;
  382.                     case 0:SlowDisplay("下次再来!\n\n\n");break;
  383.                     default:printf("hotel talk error!\n\n\n");
  384.                     }
  385.                     place_sign=0;
  386.                     break;
  387.              case 3:
  388.                  place_sign=place.forest1;
  389.                  s=SuiJi();    
  390.                 if(s<7)
  391.                  {
  392.                      battle=1;
  393.                      guai=xiyi;
  394.                      printf("%s扑了过来!\n\n\n",guai.name);
  395.                      BattleAct();
  396.                  }
  397.                  else if(s<9)
  398.                  {
  399.                      battle=1;
  400.                      guai=witch;
  401.                      printf("%s扑了过来!\n\n\n",guai.name);
  402.                      BattleAct();
  403.                  }
  404.                  else
  405.                  {
  406.                      SlowDisplay("这里安全\n\n\n");
  407.                      //不用调用OAct函数,会自动执行OAct函数;
  408.                  }
  409.                  break;
  410.              case 4:
  411.                  place_sign=place.forest2;
  412.                  s=SuiJi();    
  413.                 if(s<7)
  414.                  {
  415.                      battle=1;
  416.                      guai=witch;
  417.                      printf("%s扑了过来!\n\n\n",guai.name);
  418.                      BattleAct();
  419.                  }
  420.                  else if(s<9)
  421.                  {
  422.                      battle=1;
  423.                      guai=strongman;
  424.                      printf("%s扑了过来!\n\n\n",guai.name);
  425.                      BattleAct();
  426.                  }
  427.                  else
  428.                  {
  429.                      SlowDisplay("这里安全\n\n\n");
  430.                  }
  431.                  break;
  432.              case 5:
  433.                  place_sign=place.forest3;
  434.                  s=SuiJi();    
  435.                  
  436.                      battle=1;
  437.                      guai=big_strongman;
  438.                      printf("%s扑了过来!\n\n\n",guai.name);
  439.                      BattleAct();
  440.                  
  441.                  break;
  442.              case 6:
  443.                  place_sign=place.grass1;
  444.                  s=SuiJi();    
  445.                 if(s<7)
  446.                  {
  447.                      battle=1;
  448.                      guai=bee;
  449.                      printf("%s扑了过来!\n\n\n",guai.name);
  450.                      BattleAct();
  451.                  }
  452.                  else if(s<9)
  453.                  {
  454.                      battle=1;
  455.                      guai=horse;
  456.                      printf("%s扑了过来!\n\n\n",guai.name);
  457.                      BattleAct();
  458.                  }
  459.                  else
  460.                  {
  461.                      SlowDisplay("这里安全\n\n\n");
  462.                  }
  463.                  break;
  464.              case 7:
  465.                  place_sign=place.grass2;
  466.                  s=SuiJi();    
  467.                 if(s<7)
  468.                  {
  469.                      battle=1;
  470.                      guai=horse;
  471.                      printf("%s扑了过来!\n\n\n",guai.name);
  472.                      BattleAct();
  473.                  }
  474.                  else if(s<9)
  475.                  {
  476.                      battle=1;
  477.                      guai=lion;
  478.                      printf("%s扑了过来!\n\n\n",guai.name);
  479.                      BattleAct();
  480.                  }
  481.                  else
  482.                  {
  483.                      SlowDisplay("这里安全\n\n\n");
  484.                  }
  485.                  break;
  486.              case 8:
  487.                  place_sign=place.grass3;
  488.                  s=SuiJi();    
  489.                 if(s<7)
  490.                  {
  491.                      battle=1;
  492.                      guai=lion;
  493.                      printf("%s扑了过来!\n\n\n",guai.name);
  494.                      BattleAct();
  495.                  }
  496.                  else if(s<9)
  497.                  {
  498.                      battle=1;                    
  499.                      if(strongman_arm)
  500.                      {
  501.                          SlowDisplay("神秘老人:\n\n\n    哈哈,年轻人,做的不错,不过...嘿嘿,你上当啦!巨人之臂我要了,逸宁公主你也别想带走!\n\n\n");
  502.                          guai=shitu;
  503.                      printf("%s扑了过来!\n\n\n",guai.name);
  504.                      BattleAct();
  505.                      }
  506.                      else SlowDisplay("神秘老人:\n\n\n    年轻人,你好啊.如果你有巨人之臂,我可以告诉你逸宁的下落哦~\n\n\n");
  507.                  }
  508.                  else
  509.                  {
  510.                      SlowDisplay("这里安全\n\n\n");
  511.                  }
  512.                  break;
  513.              default:printf("choose map error!\n\n\n");
  514.              }
  515.              break;
  516.          case 2:   ChooseWupin();break;              //显示道具,并可以使用.
  517.          case 3:                                               //对话选项
  518.              if(place_sign==place.bar) 
  519.             {
  520.                  SlowDisplay("要和谁说话?\n\n\n1,红发女郎 2,赏金猎人 3,酒吧老板\n\n\n");     //显示对话人物
  521.                 switch(scanf("%d",&choose_number),choose_number)
  522.                 {
  523.                 case 1:
  524.                     SlowDisplay("红发女郎:\n\n\n    我们一起xxx吧!(~脸红~)\n\n\n听说你经常外出打猎,外面的路你应该很熟悉的!\n\n\n");
  525.                     break;
  526.                 case 2:
  527.                     if(fang1n<1&&gong1n<1)
  528.                     {
  529.                         SlowDisplay("赏金猎人:\n\n\n    你要救逸宁啊!好胆量!\n\n\n    不过外面的丛林和草原很险恶,而且越深越危险,这是匕首和布衣,对你会有些帮助的,拿去吧!\n\n\n");
  530.                         printf("%s心想:(哇,这位大叔人真好啊!\n\n\n)",player.name);
  531.                         gong1n++;
  532.                         fang1n++;
  533.                     }
  534.                     else SlowDisplay("赏金猎人:\n\n\n    加油吧,年轻人!\n\n\n    不要被外面丛林和草原所吓倒!\n\n\n");
  535.                     break;
  536.                 case 3:
  537.                     printf("要喝点什么?(逸宁水)\n\n\n    1,二锅头25金币 HP+20  2,XO酒80金币 HP+50  3,人头马面150金币 HP+100  0,返回\n\n\n");
  538.                     choose_number=1;
  539.                     while(choose_number)
  540.                     {
  541.                          switch(scanf("%d",&choose_number),choose_number)
  542.                          {
  543.                          case 1:if(money<25)
  544.                                 {
  545.                                   SlowDisplay("钱不够!");                              
  546.                                 }
  547.                                 else
  548.                                 {
  549.                                   if(player.health+20<=player.max_health)
  550.                                   {
  551.                                       SlowDisplay("HP+20.");
  552.                                       money-=25;
  553.                                       player.health+=20;
  554.                                   }
  555.                                   else
  556.                                   {
  557.                                       SlowDisplay("HP满了");                                    
  558.                                       player.health=player.max_health;
  559.                                   }
  560.                                 }
  561.                                 break;
  562.                          case 2:if(money<80)
  563.                                 {
  564.                                   SlowDisplay("钱不够!");                              
  565.                                 }
  566.                                 else
  567.                                 {
  568.                                   if(player.health+50<=player.max_health)
  569.                                   {
  570.                                       SlowDisplay("HP+50.");
  571.                                       money-=80;
  572.                                       player.health+=50;
  573.                                   }
  574.                                   else
  575.                                   {
  576.                                       SlowDisplay("HP满了");                                    
  577.                                       player.health=player.max_health;
  578.                                   }
  579.                                 }
  580.                                 break;
  581.                          case 3:if(money<150)
  582.                                 {
  583.                                   SlowDisplay("钱不够!");                              
  584.                                 }
  585.                                 else
  586.                                 {
  587.                                   if(player.health+100<=player.max_health)
  588.                                   {
  589.                                       SlowDisplay("HP+100.");
  590.                                       money-=150;
  591.                                       player.health+=100;
  592.                                   }
  593.                                   else
  594.                                   {
  595.                                       SlowDisplay("HP满了");                                    
  596.                                       player.health=player.max_health;
  597.                                   }
  598.                                 }
  599.                                 break;
  600.                          case 0:SlowDisplay("下次在来!\n");break;
  601.                          default:SlowDisplay("输入错误\n\n\n");
  602.                          }
  603.                     }
  604.                 }
  605.              }
  606.              else if(place_sign==place.hotel)
  607.                      SlowDisplay("“老板娘!我...”\n\n\n“我忙着呢,没空理你~”\n\n\n");
  608.              else SlowDisplay("这里好像没人可以聊天\n\n\n");
  609.              break;
  610.          case 4:   DisplayState(); break;             //显示状态
  611.          case 5:                                 //装备
  612.              printf("攻装: 1,匕首:%d个 2,长剑:%d个 3,碧血剑:%d个 4,绝世好剑:%d个\n\n\n",gong1n,gong2n,gong3n,gong4n);
  613.              printf("防装: 5,布衣:%d个 6,铁甲:%d个 7,银甲:%d个   8,黄金圣衣:%d个\t\t0,返回\n\n\n",fang1n,fang2n,fang3n,fang4n);
  614.              SlowDisplay("选择要装备的武器或防具:\n\n\n");
  615.              switch(scanf("%d",&choose_number),choose_number)
  616.              {
  617.              case 1:if(gong1n>=1)
  618.                     {
  619.                         SlowDisplay("拿起了匕首\n\n\n");
  620.                         gong=gong1;
  621.                         strcpy(gongname,"匕首");
  622.                     }
  623.                     else SlowDisplay("你没有匕首可以装备\n\n\n");
  624.                     break;
  625.              case 2:if(gong2n>=1)
  626.                     {
  627.                         SlowDisplay("拿起了长剑\n\n\n");
  628.                         gong=gong2;
  629.                         strcpy(gongname,"长剑");
  630.                     }
  631.                     else SlowDisplay("你没有长剑可以装备\n\n\n");
  632.                     break;
  633.              case 3:if(gong3n>=1)
  634.                     {
  635.                         SlowDisplay("拿起了碧血剑\n\n\n");
  636.                         gong=gong3;
  637.                         strcpy(gongname,"碧血剑");
  638.                     }
  639.                     else SlowDisplay("你没有碧血剑可以装备\n\n\n");
  640.                     break;
  641.              case 4:if(gong4n>=1)
  642.                     {
  643.                         SlowDisplay("拿起了绝世好剑\n\n\n");
  644.                         gong=gong4;
  645.                         strcpy(gongname,"绝世好剑");
  646.                     }
  647.                     else SlowDisplay("你没有绝世好剑可以装备\n\n\n");
  648.                     break;
  649.              case 5:if(fang1n>=1)
  650.                     {
  651.                         SlowDisplay("穿上了布衣\n\n\n");
  652.                         fang=fang1;
  653.                         strcpy(fangname,"布衣");
  654.                     }
  655.                     else SlowDisplay("你没有布衣可以装备\n\n\n");
  656.                     break;
  657.              case 6:if(fang2>=1)
  658.                     {
  659.                         SlowDisplay("穿上了铁甲\n\n\n");
  660.                         fang=fang2;
  661.                         strcpy(fangname,"铁甲");
  662.                     }
  663.                     else SlowDisplay("你没有铁甲可以装备\n\n\n");
  664.                     break;
  665.              case 7:if(fang3n>=1)
  666.                     {
  667.                         SlowDisplay("穿上了银甲\n\n\n");
  668.                         fang=fang3;
  669.                         strcpy(fangname,"银甲");
  670.                     }
  671.                     else SlowDisplay("你没有银甲可以装备\n\n\n");
  672.                     break;
  673.              case 8:if(fang4n>=1)
  674.                     {
  675.                         SlowDisplay("穿上了黄金圣衣\n\n\n");
  676.                         fang=fang4;
  677.                         strcpy(fangname,"黄金圣衣");
  678.                     }
  679.                     else SlowDisplay("你没有黄金圣衣可以装备\n\n\n");
  680.                     break;
  681.              case 0:SlowDisplay("未更换装备\n\n\n");break;
  682.              default:printf("change error!");
  683.              }
  684.              break;
  685.          case 0: 
  686.             SlowDisplay("确定退出游戏?(Y/N)\n\n\n");
  687.              getchar();
  688.              proof=getchar();
  689.              if(proof=='y'||proof=='Y')
  690.              {
  691.                  SlowDisplay("数据存储中...");
  692.                  //向文件中更新数据;
  693.                  getchar();
  694.                  SlowDisplay("按回车退出");
  695.                  getchar();
  696.                  return;
  697.              }
  698.              else if(proof=='n'||proof=='N')printf("继续游戏!\n\n\n");
  699.              else SlowDisplay("继续!\n\n\n");
  700.              break;
  701.          default:SlowDisplay("输入错误!\n\n\n");
  702.          }
  703.      }
  704.      }
  705.      void DisplayState()
  706.      {
  707.          printf("%s 攻击力:%d+%d=%d  防御力:%d+%d=%d  HP:%d/%d \n\n\n",player.name,player.attack,gong,player.attack+gong,player.defense,fang,player.defense+fang,player.health,player.max_health);
  708.          printf("武器: %s 防具: %s \n\n\n",gongname,fangname);
  709.          printf("等级:%d  经验:%d/%d 还需要%d经验升级 金币:%d \n\n\n",player.level,player.exp,player.max_exp,player.max_exp-player.exp,money);
  710.      }
  711.      void BattleAct()
  712.      {
  713.          while(1)
  714.          {
  715.              puts("=============================================================================");
  716.              printf("要怎么办?\n\n\n    1,攻击 2,物品 3,查看状态 4,逃跑\n\n\n");
  717.              switch(scanf("%d",&choose_number),choose_number)
  718.              {
  719.              case 1:
  720.                  s=SuiJi();
  721.                  printf("%s攻击! %sHP减少%d\n\n\n",player.name,guai.name,player.attack+s+gong-guai.defense/3);
  722.                  guai.health-=player.attack+s+gong-guai.defense/3;
  723.                  if(AttackResult())return;            //如果攻击有结果(敌人或玩家战死)退出函数
  724.                  else continue; 
  725.             case 2: ChooseWupin();break;             //选择物品,可以使用,战斗中允许使用攻击性物品
  726.              case 3:DisplayState();break;             //显示状态
  727.              case 4:
  728.                  s=SuiJi();
  729.                  if(s<4)                               //40%的概率可以逃跑
  730.                  {
  731.                      printf("%s逃跑了~\n\n\n",player.name);
  732.                      battle=0;
  733.                      return;
  734.                  }
  735.                  else printf("%s逃跑失败!\n\n\n",player.name);
  736.                  break;
  737.              default:SlowDisplay("输入错误,重新输入!\n\n\n");
  738.              }
  739.          }
  740.      }
  741.      void SlowDisplay(char *p)
  742.      {
  743.          while(1)
  744.          {
  745.              if(*p!=0)
  746.                  printf("%c",*p++);
  747.              else 
  748.                 break;
  749.              Sleep(100);
  750.          }
  751.      }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值