遊戲2.0版本 代碼

   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,shop;
  43      }place={1,2,3,4,5,6,7,8,9};
  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        SlowDisplay("這是一個勇者的世界! 雅莉薩斯國的羅茜公主被陌生人綁架了!\n\n 偉大的勇者啊~拿起大家的武器,營救公主!\n\n\n輸入你的名字:   (20個字符)\n\n\n");
  71          
  72          //    sndPlaySound("res\\F005.wav",SND_LOOP);
  73      scanf("%s",player_name);    
  74     strncpy(player.name,player_name,20);
  75      if(strcmp(player.name,"EVA初號機")==0)
  76      {
  77          SlowDisplay("\n  隱身多年的 EVA初號機 啊! 你終於出來了!雅莉薩斯國正須要你的幫助,快去吧!\n\n\n\n\n\n\n    這時,一道白光射出,射到了 EVA初號機 的身上\n\n\n\n\n\n\n    ......\n\n\n\n\n\n\n    EVA初號機 吸取能量ing...      隨即...     能力覺醒!!!\n\n\n\n\n\n\n");
  78          player.attack=100000;
  79          player.defense=100000;
  80          player.health=100000;
  81          player.max_health=100000;
  82      }    
  83      else
  84      {
  85          SlowDisplay("\n雅莉薩斯國國王:\n\n\n    勇者,歡迎你來到個人王國!可是,因爲個人女兒被搶走了,煩請勇士幫咱們一下吧!會有豐厚的報酬哦~~\n\n\n");
  86          printf("%s",player.name);
  87          SlowDisplay(" :\n\n\n    您放心好了,我必定幫您把公主救出來!\n\n\n\n    國王大手一揮,你落到了這個世界,開始了拯救公主的征程。\n\n\n\n\n\n\n"); 
  88      }
  89     getchar();
  90  
  91     OrdinaryAct();
  92      return 0;
  93  }
  94  
  95     int SuiJi()
  96  {
  97      srand((unsigned)time(NULL));
  98      return rand()%10;
  99  }
 100  
 101 
 102     int SuiJi100()
 103  {
 104      srand((unsigned)time(NULL));
 105      return rand()%100;
 106  }
 107  
 108 
 109     void ChooseWupin()                         //選擇物品 並使用
 110  {
 111      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);
 112      switch(scanf("%d",&choose_number),choose_number)
 113      {
 114      case 1:
 115          if(cao>0)
 116          {
 117              SlowDisplay("使用止血草,HP增長60\n\n\n");
 118              cao--;
 119              if(player.health+60>player.max_health)player.health=player.max_health;
 120              else player.health+=60;
 121          }
 122          else SlowDisplay("沒有止血草了\n\n\n");
 123          break;
 124      case 2:
 125          if(jijiubao>0)
 126          {
 127              SlowDisplay("使用急救包,HP增長80\n\n\n");
 128              jijiubao--;
 129              if(player.health+80>player.max_health)player.health=player.max_health;
 130              else player.health+=80;
 131          }
 132          else SlowDisplay("沒有急救包了\n\n\n");
 133          break;
 134      case 3:
 135          if(baiyao>0)
 136          {
 137              SlowDisplay("使用雲南白藥,HP增長120\n\n\n");
 138              baiyao--;
 139              if(player.health+120>player.max_health)player.health=player.max_health;
 140              else player.health+=120;
 141          }
 142          else SlowDisplay("沒有云南白藥了\n\n\n");
 143          break;
 144      case 4:
 145          if(superbaiyao>0)
 146          {
 147              SlowDisplay("使用超級雲南白藥,HP增長200\n\n\n");
 148              superbaiyao--;
 149              if(player.health+200>player.max_health)player.health=player.max_health;
 150              else player.health+=200;
 151          }
 152          else SlowDisplay("沒有超級雲南白藥了\n\n\n");
 153          break;
 154      case 5:
 155          if(battle)                   //在戰鬥中(battle=1),不然(battle=0)不能使用攻擊性物品
 156          {
 157              if(boom>0)
 158              {
 159              SlowDisplay("使用手雷,敵人HP減小100\n\n\n");
 160              boom--;
 161              guai.health-=100;
 162              AttackResult();
 163              }
 164          }
 165          else SlowDisplay("非戰鬥狀態,不能使用手雷!\n\n\n");
 166          break;
 167      case 6:
 168          if(battle)                   //在戰鬥中(battle=1),不然(battle=0)不能使用攻擊性物品
 169          {
 170              if(dubiao>0)
 171              {
 172              SlowDisplay("使用毒標,敵人HP減小200\n\n\n");
 173              dubiao--;
 174              guai.health-=200;
 175              AttackResult();
 176              }
 177          }
 178          else SlowDisplay("非戰鬥狀態,不能使用毒標!\n\n\n");
 179          break;
 180      case 7:
 181          if(battle)                   //在戰鬥中(battle=1),不然(battle=0)不能使用攻擊性物品
 182          {
 183              if(atom_boom>0)
 184              {
 185              SlowDisplay("使用手拋式原子彈,敵人HP減小500\n\n\n");
 186              atom_boom--;
 187              guai.health-=500;
 188              AttackResult();
 189              }
 190          }
 191          else SlowDisplay("非戰鬥狀態,不能使用手拋式原子彈!\n\n\n");
 192          break;
 193      case 0:break;
 194      default:printf("ChooseWupin error!\n\n\n");
 195      }
 196  }
 197      int AttackResult()                      //攻擊結果:判斷是否獲勝 是否得到物品 和 是否升級
 198  {
 199      if(guai.health<=0)
 200      {
 201          battle=0;
 202          printf("戰鬥勝利!得到金幣%d,經驗%d\n\n\n",guai.money,guai.exp);
 203          player.exp+=guai.exp;
 204          player.range_exp+=guai.exp;
 205          money+=guai.money;
 206          s=SuiJi();
 207          if(s<guai.wupinpro)
 208          {
 209              SlowDisplay("從敵人屍骸中發現");
 210              printf("%s\n\n\n",guai.wupin);
 211              AddWupin(guai.wupin_sign);
 212          }
 213          WhetherLevelUp();
 214          if(strcmp(guai.name,"使徒")==0)
 215          {
 216              SlowDisplay("神祕老人(神色大變):\n\n\n    什麼?你居然戰勝了個人使徒?你究竟是誰?怎麼會這麼厲害?\n\n\n"); 
 217              printf("%s",player.name);
 218              SlowDisplay(" : \n\n\n    嘿嘿,反正你也快死了,我就告訴你一條消息吧。我就是傳說中的勇者!你想戰勝我?沒門!基於你的「良好」表現,我決定:殺了你,以絕後患!\n\n\n\n\n\n    這時,");
 219              printf("%s",player.name);
 220              SlowDisplay("的手裏發出一道白光,那白光直直的擊中了老人,神祕老人和他手中的巨人之臂雙雙飛出,不過巨人之臂掉到了 ");
 221              printf("%s",player.name);
 222              SlowDisplay(" 的腳下,而神祕老人狠狠的撞到了岩石上,一口鮮血噴出......\n\n\n\n\n\n    ......\n\n\n\n\n\n    ");
 223              printf("%s",player.name);
 224              SlowDisplay("緩緩的走到神祕老人的面前,說:\n\n\n     如今,用你的生命來償還吧!\n\n\n\n\n    老人驚恐的瞪着");
 225              printf("%s",player.name);
 226              SlowDisplay(",而後化做一道白光,逃走了......\n\n\n\n\n    這時,一個鐵籠出如今");
 227              printf("%s",player.name);
 228              SlowDisplay("的面前,裏面正關着淚流滿面的公主。\n\n\n\n公主:\n\n\n    勇士,快來救我!\n\n\n");
 229              printf("%s",player.name);
 230              SlowDisplay(" (皺眉頭):\n\n\n    我該怎麼救你呢?\n\n\n公主:\n\n\n     你把巨人之臂給我就好了。\n\n\n\n\n    "); 
 231              printf("%s",player.name);
 232              SlowDisplay("把巨人之臂經過鐵籠的縫隙給了公主,公主用巨人之臂把鎖的背面捅了兩下,鎖便開了,公主緩緩的走了出來,跟着你回到了皇宮^_^\n\n\n\n\n"); 
 233              puts("你完成了救出公主的任務,國王重賞了你!!!");
 234              getchar();
 235              getchar();
 236              exit(0);
 237          }
 238          return 1;                 //攻擊有結果了返回1,不然返回0,用於判斷是否繼續作戰鬥行爲
 239      }
 240      else 
 241     {
 242          int s=SuiJi();
 243          
 244          
 245          if((guai.attack+s-player.defense/3)<0)
 246          {
 247              player.health-=1;
 248              printf("%s反擊,你的HP減小了 1\n\n",guai.name);
 249          }
 250          else
 251          {
 252              player.health-=guai.attack+s-player.defense/3;
 253              printf("%s反擊,你的HP減小了%d\n\n",guai.name,guai.attack+s-player.defense/3);
 254          }
 255          if(player.health<0)
 256          {
 257              if(strcmp(guai.name,"使徒")==0)
 258              {
 259                  SlowDisplay("神祕老人(奸笑着):\n\n\n    嘿嘿,小子,想對付個人使徒你還嫩了點,如今,我要你的鮮血做爲代價......哈哈哈哈哈哈...... \n\n\n");
 260                  SlowDisplay("老人手一揮,使徒拿着鋼刀衝過來......將刀對準了");
 261                  printf("%s",player.name);
 262                  SlowDisplay("的脖子......而後......刀砍了下來......鮮血四濺......\n\n\n");
 263                  battle=0;
 264                  printf("%s戰死!金幣掉落%d\n\n\n",player.name,player.level*500);
 265                  money-=player.level*500;
 266                  player.health=player.max_health/5;
 267                  SlowDisplay("\n\n\n\n\n\n\n    頭好沉啊......怎麼回事......我這是在哪裏......\n    不對!我不是被使徒殺了嗎?怎麼復活了?不過把使徒殺了是個人任務!\n\n"); 
 268                  SlowDisplay("     你獲得了國王的庇護,復活了!如今請從新開始任務吧!\n\n"); 
 269              }
 270              else
 271              {
 272                  battle=0;
 273                  printf("%s戰死!金幣掉落%d\n\n\n",player.name,player.level*500);
 274                  money-=player.level*500;
 275                  player.health=player.max_health/5;
 276              }
 277              OrdinaryAct();//////////
 278              return 1;
 279          }
 280      }
 281      return 0;
 282  }
 283      void AddWupin(int wupin_sign)
 284      {
 285          
 286          switch(wupin_sign)
 287          {
 288          case 1:fang4n++;        break;
 289          case 2:fang3n++;        break;
 290          case 3:fang2n++;        break;
 291          case 4:strongman_arm=1;break;
 292          case 5:gong4n++;        break;
 293          case 6:gong3n++;        break;
 294          case 7:gong2n++;        break;
 295          default:printf("AddWupin error\n\n\n");
 296          }
 297        
 298      }
 299      void WhetherLevelUp()
 300      {
 301          int i=0,j=0;
 302          int l1=player.range_exp/100;
 303          int l2=player.range_exp/300;
 304          int l3=player.range_exp/600;
 305          if(player.level<=15&&l1>0)                     //15級如下,經驗足夠 都知足則升級
 306          {
 307              if(l1==1)
 308              {
 309                  printf("%s",player.name);
 310                  SlowDisplay("   升級!\n\n\n攻擊力+3, 防護力+2, HP上限+20\n\n\n");
 311                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
 312                  player.attack+=3;
 313                  player.defense+=2;
 314                  player.max_health+=20;
 315                  player.health=player.max_health;
 316                  player.level++;
 317                  player.range_exp=0;
 318                  player.exp=player.max_exp;
 319                  player.max_exp+=100;
 320              }
 321              else
 322              {
 323                  printf("好厲害!連升%d級!",l1);
 324                  printf("攻擊力+%d, 防護力+%d, HP上限+%d\n\n\n",3*l1,2*l1,20*l1);
 325                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
 326                  player.attack+=3*l1;
 327                  player.defense+=2*l1;
 328                  player.max_health+=20*l1;
 329                  player.health=player.max_health;
 330                  player.level+=l1;
 331                  player.range_exp=0;
 332                  player.exp=player.max_exp;
 333                  player.max_exp+=100*l1;
 334              }
 335          }
 336          else if(player.level<=40&&l2>0)
 337          {
 338              if(l2==1)
 339              {
 340                  printf("%s",player.name);
 341                  SlowDisplay("   升級!\n\n\n攻擊力+3, 防護力+2, HP上限+20\n\n\n");
 342                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
 343                  player.attack+=3;
 344                  player.defense+=2;
 345                  player.max_health+=20;
 346                  player.health=player.max_health;
 347                  player.level++;
 348                  player.range_exp=0;
 349                  player.exp=player.max_exp;
 350                  player.max_exp+=300;
 351              }
 352              else
 353              {
 354                  printf("好厲害!連升%d級!",l1);
 355                  printf("攻擊力+%d, 防護力+%d, HP上限+%d\n\n\n",3*l2,2*l2,20*l2);
 356                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
 357                  player.attack+=3*l2;
 358                  player.defense+=2*l2;
 359                  player.max_health+=20*l2;
 360                  player.health=player.max_health;
 361                  player.level+=l2;
 362                  player.range_exp=0;
 363                  player.exp=player.max_exp;
 364                  player.max_exp+=300*l2;
 365              }
 366          }
 367          else if(l3>0)
 368          {
 369              if(l3==1)
 370              {
 371                  printf("%s",player.name);
 372                  SlowDisplay("   升級!\n\n\n攻擊力+3, 防護力+2, HP上限+20\n\n\n");
 373                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
 374                  player.attack+=3;
 375                  player.defense+=2;
 376                  player.max_health+=20;
 377                  player.health=player.max_health;
 378                  player.level++;
 379                  player.range_exp=0;
 380                  player.exp=player.max_exp;
 381                  player.max_exp+=600;
 382              }
 383              else
 384              {
 385                  printf("好厲害!連升%d級!",l1);
 386                  printf("攻擊力+%d, 防護力+%d, HP上限+%d\n\n\n",3*l3,2*l3,20*l3);
 387                  player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
 388                  player.attack+=3*l3;
 389                  player.defense+=2*l3;
 390                  player.max_health+=20*l3;
 391                  player.health=player.max_health;
 392                  player.level+=l3;
 393                  player.range_exp=0;
 394                  player.exp=player.max_exp;
 395                  player.max_exp+=600*l3;
 396              }
 397          }
 398      }
 399      void OrdinaryAct()                    //正常行爲菜單(移動,物品,對話,查看狀態,裝備,退出遊戲)
 400      {
 401          
 402          while(1)
 403          {
 404  //            \(1000);
 405  //            system("cls");
 406              puts("=============================================================================");
 407              printf("要作什麼?\n\n\n   1,移動  2,道具  3,對話  4,查看狀態  5,裝備  0,退出遊戲\n\n\n");
 408              puts("=============================================================================");
 409          switch(scanf("%d",&choose_number),choose_number)
 410          { 
 411         case 1:                                    //顯示移動菜單
 412              SlowDisplay("要去哪裏?\n\n\n");
 413              printf("1,酒吧 2,旅館 3,森林一層 4,森林二層 5,森林三層 6,草原一層 7,草原二層 8,草原三層\n9,商店\n\n\n");
 414              switch(scanf("%d",&choose_number),choose_number)
 415              {
 416              case 1:place_sign=place.bar;                        //記錄目前位置-酒吧
 417          //           OrdinaryAct();
 418                     break;
 419              case 2:place_sign=place.hotel;                      //進入旅店
 420                     SlowDisplay("要住店嗎? 200個金幣 1,是  0,否\n\n\n");
 421                     choose_number=1;
 422                     switch(scanf("%d",&choose_number),choose_number)
 423                     {
 424                     case 1:if(money-200<0)                       //判斷錢是否夠
 425                              {
 426                                  SlowDisplay("Sorry,你的錢不夠~\n\n\n");        
 427                              }
 428                              else 
 429                             {
 430                                  SlowDisplay("好好休息\n\tHP滿\n\t\t次日了\n\n");
 431                                  money-=200;                         //花費200住店費
 432                                  player.health=player.max_health;    //體力滿
 433                              }
 434                              break;
 435                     case 0:SlowDisplay("下次再來!\n\n\n");break;
 436                     default:printf("hotel talk error!\n\n\n");
 437                     }
 438                     place_sign=0;
 439                     break;
 440              case 3:
 441                  place_sign=place.forest1;
 442                  s=SuiJi();    
 443                 if(s<7)
 444                  {
 445                      battle=1;
 446                      guai=xiyi;
 447                      printf("%s撲了過來!\n\n\n",guai.name);
 448                      BattleAct();
 449                  }
 450                  else if(s<9)
 451                  {
 452                      battle=1;
 453                      guai=witch;
 454                      printf("%s撲了過來!\n\n\n",guai.name);
 455                      BattleAct();
 456                  }
 457                  else
 458                  {
 459                      SlowDisplay("這裏安全\n\n\n");
 460                      //不用調用OAct函數,會自動執行OAct函數;
 461                  }
 462                  break;
 463              case 4:
 464                  place_sign=place.forest2;
 465                  s=SuiJi();    
 466                 if(s<7)
 467                  {
 468                      battle=1;
 469                      guai=witch;
 470                      printf("%s撲了過來!\n\n\n",guai.name);
 471                      BattleAct();
 472                  }
 473                  else if(s<9)
 474                  {
 475                      battle=1;
 476                      guai=strongman;
 477                      printf("%s撲了過來!\n\n\n",guai.name);
 478                      BattleAct();
 479                  }
 480                  else
 481                  {
 482                      SlowDisplay("這裏安全\n\n\n");
 483                  }
 484                  break;
 485              case 5:
 486                  place_sign=place.forest3;
 487                  s=SuiJi();    
 488                 if(s<7)
 489                  {
 490                      battle=1;
 491                      guai=strongman;
 492                      printf("%s撲了過來!\n\n\n",guai.name);
 493                      BattleAct();
 494                  }
 495                  else if(s<9)
 496                  {
 497                      battle=1;
 498                      guai=big_strongman;
 499                      printf("%s撲了過來!\n\n\n",guai.name);
 500                      BattleAct();
 501                  }
 502                  else
 503                  {
 504                      SlowDisplay("這裏安全\n\n\n");
 505                  }
 506                  break;
 507              case 6:
 508                  place_sign=place.grass1;
 509                  s=SuiJi();    
 510                 if(s<7)
 511                  {
 512                      battle=1;
 513                      guai=bee;
 514                      printf("%s撲了過來!\n\n\n",guai.name);
 515                      BattleAct();
 516                  }
 517                  else if(s<9)
 518                  {
 519                      battle=1;
 520                      guai=horse;
 521                      printf("%s撲了過來!\n\n\n",guai.name);
 522                      BattleAct();
 523                  }
 524                  else
 525                  {
 526                      SlowDisplay("這裏安全\n\n\n");
 527                  }
 528                  break;
 529              case 7:
 530                  place_sign=place.grass2;
 531                  s=SuiJi();    
 532                 if(s<7)
 533                  {
 534                      battle=1;
 535                      guai=horse;
 536                      printf("%s撲了過來!\n\n\n",guai.name);
 537                      BattleAct();
 538                  }
 539                  else if(s<9)
 540                  {
 541                      battle=1;
 542                      guai=lion;
 543                      printf("%s撲了過來!\n\n\n",guai.name);
 544                      BattleAct();
 545                  }
 546                  else
 547                  {
 548                      SlowDisplay("這裏安全\n\n\n");
 549                  }
 550                  break;
 551              case 8:
 552                  place_sign=place.grass3;
 553                  s=SuiJi();    
 554                 if(s<7)
 555                  {
 556                      battle=1;
 557                      guai=lion;
 558                      printf("%s撲了過來!\n\n\n",guai.name);
 559                      BattleAct();
 560                  }
 561                  else if(s<9)
 562                  {
 563                      battle=1;                    
 564                      if(strongman_arm)
 565                      {
 566                          SlowDisplay("神祕老人:\n\n\n    哈哈,年輕人,作的不錯,不過...嘿嘿,你上當啦!巨人之臂我要了,公主你也別想帶走!\n\n\n\n");
 567                          printf("%s",player.name);
 568                          SlowDisplay(" :\n\n\n    你休想!我好不容易纔拿到巨人之臂,你別想佔個人便宜!\n\n\n神祕老人(臉色陰沉):\n\n\n     既然你這麼不識相,那麼也別怪我不客氣了!使徒,上!\n\n\n\n"); 
 569                          guai=shitu;
 570                      printf("%s撲了過來!\n\n\n",guai.name);
 571                      BattleAct();
 572                      }
 573                      else SlowDisplay("神祕老人:\n\n\n    年輕人,你好啊.若是你有巨人之臂,我能夠告訴你公主的下落哦~\n\n\n");
 574                  }
 575                  else
 576                  {
 577                      SlowDisplay("這裏安全\n\n\n");
 578                  }
 579                  break;
 580              case 9:place_sign=place.shop;
 581                     SlowDisplay("您好,請問您須要什麼?\n\n 急救:1,止血草 500金幣 2,急救包 600金幣 3,雲南白藥 800金幣 4,超級雲南白藥 1000金幣\n 攻擊:5,手雷 500金幣 6,毒標 1000金幣 7,手拋式原子彈 2500金幣\n   0,我只看看,不買\n\n\n");
 582                     //choose_number=1;
 583                     SlowDisplay("您目前有");
 584                     printf("%d",money);
 585                     SlowDisplay("金幣\n\n"); 
 586                     switch(scanf("%d",&choose_number),choose_number)
 587                     {
 588                     case 1:if(money-500<0)                       //判斷錢是否夠
 589                              {
 590                                  SlowDisplay("  抱歉,你的錢好像不太夠呢~\n\n去打怪吧\n\n\n");        
 591                              }
 592                              else 
 593                              {
 594                                  SlowDisplay("購買成功!\n\n謝謝光臨!下次再來!~^_^~\n\n\n");
 595                                  money-=500;                         
 596                                  cao++;    
 597                              }
 598                              break;
 599                     case 2:if(money-600<0)                       //判斷錢是否夠
 600                              {
 601                                  SlowDisplay("  抱歉,你的錢好像不太夠呢~\n\n去打怪吧\n\n\n");        
 602                              }
 603                              else 
 604                              {
 605                                  SlowDisplay("購買成功!\n\n謝謝光臨!下次再來!~^_^~\n\n\n");
 606                                  money-=600;                         
 607                                  jijiubao++;    
 608                              }
 609                              break;
 610                     case 3:if(money-800<0)                       //判斷錢是否夠
 611                              {
 612                                  SlowDisplay("  抱歉,你的錢好像不太夠呢~\n\n去打怪吧\n\n\n");        
 613                              }
 614                              else 
 615                              {
 616                                  SlowDisplay("購買成功!\n\n謝謝光臨!下次再來!~^_^~\n\n\n");
 617                                  money-=800;                         
 618                                  baiyao++;    
 619                              }
 620                              break;
 621                     case 4:if(money-1000<0)                       //判斷錢是否夠
 622                              {
 623                                  SlowDisplay("  抱歉,你的錢好像不太夠呢~\n\n去打怪吧\n\n\n");        
 624                              }
 625                              else 
 626                              {
 627                                  SlowDisplay("購買成功!\n\n謝謝光臨!下次再來!~^_^~\n\n\n");
 628                                  money-=1000;                         
 629                                  superbaiyao++;    
 630                              }
 631                              break;
 632                     case 5:if(money-500<0)                       //判斷錢是否夠
 633                              {
 634                                  SlowDisplay("  抱歉,你的錢好像不太夠呢~\n\n去打怪吧\n\n\n");        
 635                              }
 636                              else 
 637                              {
 638                                  SlowDisplay("購買成功!\n\n謝謝光臨!下次再來!~^_^~\n\n\n");
 639                                  money-=500;                         
 640                                  boom++;    
 641                              }
 642                              break;
 643                     case 6:if(money-1000<0)                       //判斷錢是否夠
 644                              {
 645                                  SlowDisplay("  抱歉,你的錢好像不太夠呢~\n\n去打怪吧\n\n\n");        
 646                              }
 647                              else 
 648                              {
 649                                  SlowDisplay("購買成功!\n\n謝謝光臨!下次再來!~^_^~\n\n\n");
 650                                  money-=1000;                         
 651                                  dubiao++;    
 652                              }
 653                              break;
 654                     case 7:if(money-2500<0)                       //判斷錢是否夠
 655                              {
 656                                  SlowDisplay("  抱歉,你的錢好像不太夠呢~\n\n去打怪吧\n\n\n");        
 657                              }
 658                              else 
 659                              {
 660                                  SlowDisplay("購買成功!\n\n謝謝光臨!下次再來!~^_^~\n\n\n");
 661                                  money-=2500;                         
 662                                  atom_boom++;    
 663                              }
 664                              break;
 665                     case 0:SlowDisplay("謝謝光臨!下次再來!~^_^~\n\n\n");break;
 666                     default:printf("好像沒有這個貨物呢\n\n\n");
 667                     }
 668                     break;
 669              default:printf("choose map error!\n\n\n");
 670              }
 671              break;
 672          case 2:   ChooseWupin();break;              //顯示道具,並可使用.
 673          case 3:                                               //對話選項
 674              if(place_sign==place.bar) 
 675             {
 676                  SlowDisplay("要和誰說話?\n\n\n1,紅髮女郎 2,賞金獵人 3,酒吧老闆\n\n\n");     //顯示對話人物
 677                 switch(scanf("%d",&choose_number),choose_number)
 678                 {
 679                 case 1:
 680                     SlowDisplay("紅髮女郎:\n\n\n    吧檯邊那個Hunter好帥啊!(~臉紅~)\n\n\n據說他常常外出打獵,外面的路他應該很熟悉的!\n\n\n");
 681                     break;
 682                 case 2:
 683                     if(fang1n<1&&gong1n<1)
 684                     {
 685                         SlowDisplay("賞金獵人:\n\n\n    你要救公主啊!好膽量!\n\n\n    不過外面的叢林和草原很險惡,並且越深越危險,這是匕首和布衣,對你會有些幫助的,拿去吧!\n\n\n");
 686                         printf("%s心想:(哇,這位大叔人真好啊!\n\n\n)",player.name);
 687                         gong1n++;
 688                         fang1n++;
 689                     }
 690                     else SlowDisplay("賞金獵人:\n\n\n    加油吧,年輕人!\n\n\n    不要被外面叢林和草原所嚇倒!\n\n\n");
 691                     break;
 692                 case 3:
 693                     printf("要喝點什麼?\n\n\n    1,二鍋頭25金幣 HP+20  2,XO酒80金幣 HP+50  3,人頭馬面150金幣 HP+100  0,返回\n\n\n");
 694                     choose_number=1;
 695                     while(choose_number)
 696                     {
 697                          switch(scanf("%d",&choose_number),choose_number)
 698                          {
 699                          case 1:if(money<25)
 700                                 {
 701                                   SlowDisplay("錢不夠!");                              
 702                                 }
 703                                 else
 704                                 {
 705                                   if(player.health+20<=player.max_health)
 706                                   {
 707                                       SlowDisplay("HP+20.");
 708                                       money-=25;
 709                                       player.health+=20;
 710                                   }
 711                                   else
 712                                   {
 713                                       SlowDisplay("HP滿了");                                    
 714                                       player.health=player.max_health;
 715                                   }
 716                                 }
 717                                 break;
 718                          case 2:if(money<80)
 719                                 {
 720                                   SlowDisplay("錢不夠!");                              
 721                                 }
 722                                 else
 723                                 {
 724                                   if(player.health+50<=player.max_health)
 725                                   {
 726                                       SlowDisplay("HP+50.");
 727                                       money-=80;
 728                                       player.health+=50;
 729                                   }
 730                                   else
 731                                   {
 732                                       SlowDisplay("HP滿了");                                    
 733                                       player.health=player.max_health;
 734                                   }
 735                                 }
 736                                 break;
 737                          case 3:if(money<150)
 738                                 {
 739                                   SlowDisplay("錢不夠!");                              
 740                                 }
 741                                 else
 742                                 {
 743                                   if(player.health+100<=player.max_health)
 744                                   {
 745                                       SlowDisplay("HP+100.");
 746                                       money-=150;
 747                                       player.health+=100;
 748                                   }
 749                                   else
 750                                   {
 751                                       SlowDisplay("HP滿了");                                    
 752                                       player.health=player.max_health;
 753                                   }
 754                                 }
 755                                 break;
 756                          case 0:SlowDisplay("下次再來!\n");break;
 757                          default:SlowDisplay("輸入錯誤\n\n\n");
 758                          }
 759                     }
 760                 }
 761              }
 762              else if(place_sign==place.hotel)
 763                      SlowDisplay("「老闆娘!我...」\n\n\n「我忙着呢,沒空理你~」\n\n\n");
 764              else SlowDisplay("這裏好像沒人能夠聊天\n\n\n");
 765              break;
 766          case 4:   DisplayState(); break;             //顯示狀態
 767          case 5:                                 //裝備
 768              printf("攻裝: 1,匕首:%d個 2,長劍:%d個 3,碧血劍:%d個 4,絕世好劍:%d個\n\n\n",gong1n,gong2n,gong3n,gong4n);
 769              printf("防裝: 5,布衣:%d個 6,鐵甲:%d個 7,銀甲:%d個   8,黃金聖衣:%d個    9,售賣裝備\n\n\n\t0,返回\n\n\n",fang1n,fang2n,fang3n,fang4n);
 770              SlowDisplay("選擇要裝備的武器或防具:\n\n\n");
 771              switch(scanf("%d",&choose_number),choose_number)
 772              {
 773              case 1:if(gong1n>=1)
 774                     {
 775                         SlowDisplay("拿起了匕首\n\n\n");
 776                         gong=gong1;
 777                         strcpy(gongname,"匕首");
 778                     }
 779                     else SlowDisplay("你沒有匕首能夠裝備\n\n\n");
 780                     break;
 781              case 2:if(gong2n>=1)
 782                     {
 783                         SlowDisplay("拿起了長劍\n\n\n");
 784                         gong=gong2;
 785                         strcpy(gongname,"長劍");
 786                     }
 787                     else SlowDisplay("你沒有長劍能夠裝備\n\n\n");
 788                     break;
 789              case 3:if(gong3n>=1)
 790                     {
 791                         SlowDisplay("拿起了碧血劍\n\n\n");
 792                         gong=gong3;
 793                         strcpy(gongname,"碧血劍");
 794                     }
 795                     else SlowDisplay("你沒有碧血劍能夠裝備\n\n\n");
 796                     break;
 797              case 4:if(gong4n>=1)
 798                     {
 799                         SlowDisplay("拿起了絕世好劍\n\n\n");
 800                         gong=gong4;
 801                         strcpy(gongname,"絕世好劍");
 802                     }
 803                     else SlowDisplay("你沒有絕世好劍能夠裝備\n\n\n");
 804                     break;
 805              case 5:if(fang1n>=1)
 806                     {
 807                         SlowDisplay("穿上了布衣\n\n\n");
 808                         fang=fang1;
 809                         strcpy(fangname,"布衣");
 810                     }
 811                     else SlowDisplay("你沒有布衣能夠裝備\n\n\n");
 812                     break;
 813              case 6:if(fang2>=1)
 814                     {
 815                         SlowDisplay("穿上了鐵甲\n\n\n");
 816                         fang=fang2;
 817                         strcpy(fangname,"鐵甲");
 818                     }
 819                     else SlowDisplay("你沒有鐵甲能夠裝備\n\n\n");
 820                     break;
 821              case 7:if(fang3n>=1)
 822                     {
 823                         SlowDisplay("穿上了銀甲\n\n\n");
 824                         fang=fang3;
 825                         strcpy(fangname,"銀甲");
 826                     }
 827                     else SlowDisplay("你沒有銀甲能夠裝備\n\n\n");
 828                     break;
 829              case 8:if(fang4n>=1)
 830                     {
 831                         SlowDisplay("穿上了黃金聖衣\n\n\n");
 832                         fang=fang4;
 833                         strcpy(fangname,"黃金聖衣");
 834                     }
 835                     else SlowDisplay("你沒有黃金聖衣能夠裝備\n\n\n");
 836                     break;
 837              case 9:SlowDisplay("請輸入您要出售的裝備編號\n\n\n");
 838                     switch(scanf("%d",&choose_number),choose_number)
 839                     {
 840                         case 1:if(gong1n>=1)
 841                                {
 842                                    SlowDisplay("出售了匕首,得到500金幣\n\n\n");
 843                                    money+=500;
 844                                    gong1n--;
 845                                    if(gong1n<1)
 846                                    {
 847                                        gong=0;
 848                                        strcpy(gongname,"");
 849                                    }
 850                                }
 851                                else SlowDisplay("你尚未匕首\n\n\n");
 852                                break;
 853                         case 2:if(gong2n>=1)
 854                                {
 855                                    SlowDisplay("出售了長劍,得到1000金幣\n\n\n");
 856                                    money+=1000;
 857                                    gong2n--;
 858                                    if(gong2n<1)
 859                                    {
 860                                        gong=0;
 861                                        strcpy(gongname,"");
 862                                    }
 863                                }
 864                                else SlowDisplay("你尚未長劍\n\n\n");
 865                                break;
 866                         case 3:if(gong3n>=1)
 867                                {
 868                                    SlowDisplay("出售了碧血劍,得到2500金幣\n\n\n");
 869                                    money+=2500;
 870                                    gong3n--;
 871                                    if(gong3n<1)
 872                                    {
 873                                        gong=0;
 874                                        strcpy(gongname,"");
 875                                    }
 876                                }
 877                                else SlowDisplay("你尚未碧血劍\n\n\n");
 878                                break;
 879                         case 4:if(gong4n>=1)
 880                                {
 881                                    SlowDisplay("出售了絕世好劍,得到5000金幣\n\n\n");
 882                                    money+=5000;
 883                                    gong4n--;
 884                                    if(gong4n<1)
 885                                    {
 886                                        gong=0;
 887                                        strcpy(gongname,"");
 888                                    }
 889                                }
 890                                else SlowDisplay("你尚未絕世好劍\n\n\n");
 891                                break;
 892                         case 5:if(fang1n>=1)
 893                                {
 894                                    SlowDisplay("出售了布衣,得到500金幣\n\n\n");
 895                                    money+=500;
 896                                    fang1n--;
 897                                    if(fang1n<1)
 898                                    { 
 899                                        fang=0;
 900                                        strcpy(fangname,"");
 901                                    } 
 902                                }
 903                                else SlowDisplay("你尚未布衣\n\n\n");
 904                                break;
 905                         case 6:if(fang2>=1)
 906                                {
 907                                    SlowDisplay("出售了鐵甲,得到1000金幣\n\n\n");
 908                                    money+=1000;
 909                                    fang2n--;
 910                                    if(fang2n<1)
 911                                    { 
 912                                        fang=0;
 913                                        strcpy(fangname,"");
 914                                    } 
 915                                }
 916                                else SlowDisplay("你尚未鐵甲\n\n\n");
 917                                break;
 918                         case 7:if(fang3n>=1)
 919                                {
 920                                    SlowDisplay("出售了銀甲,得到2500金幣\n\n\n");
 921                                    money+=2500;
 922                                    fang3n--;
 923                                    if(fang3n<1)
 924                                    { 
 925                                        fang=0;
 926                                        strcpy(fangname,"");
 927                                    } 
 928                                }
 929                                else SlowDisplay("你尚未銀甲\n\n\n");
 930                                break;
 931                         case 8:if(fang4n>=1)
 932                                {
 933                                    SlowDisplay("出售了黃金聖衣,得到5000金幣\n\n\n");
 934                                    money+=5000;
 935                                    fang4n--;
 936                                    if(fang4n<1)
 937                                    { 
 938                                        fang=0;
 939                                        strcpy(fangname,"");
 940                                    } 
 941                                }
 942                                else SlowDisplay("你尚未黃金聖衣\n\n\n");
 943                                break;
 944                         default:printf("sell error!\n\n");
 945                     }
 946                     break;
 947              case 0:SlowDisplay("未更換裝備\n\n\n");break;
 948              default:printf("change error!");
 949              }
 950              break;
 951          case 0: 
 952             SlowDisplay("肯定退出遊戲?(Y/N)\n\n\n");
 953              getchar();
 954              proof=getchar();
 955              if(proof=='y'||proof=='Y')
 956              {
 957                  SlowDisplay("數據存儲中...");
 958                  //向文件中更新數據;
 959                  getchar();
 960                  SlowDisplay("按回車退出");
 961                  getchar();
 962                  return;
 963              }
 964              else if(proof=='n'||proof=='N')printf("繼續遊戲!\n\n\n");
 965              else SlowDisplay("繼續!\n\n\n");
 966              break;
 967          default:SlowDisplay("輸入錯誤!\n\n\n");
 968          }
 969      }
 970      }
 971      void DisplayState()
 972      {
 973          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);
 974          printf("武器: %s 防具: %s \n\n\n",gongname,fangname);
 975          printf("等級:%d  經驗:%d/%d 還須要%d經驗升級 金幣:%d \n\n\n",player.level,player.exp,player.max_exp,player.max_exp-player.exp,money);
 976      }
 977      void BattleAct()
 978      {
 979          while(1)
 980          {
 981              puts("=============================================================================");
 982              printf("要怎麼辦?\n\n\n    1,攻擊 2,物品 3,查看狀態 4,逃跑\n\n\n");
 983              switch(scanf("%d",&choose_number),choose_number)
 984              {
 985              case 1:
 986                  s=SuiJi();
 987                  printf("%s攻擊! %sHP減小%d\n\n\n",player.name,guai.name,player.attack+s+gong-guai.defense/3);
 988                  guai.health-=player.attack+s+gong-guai.defense/3;
 989                  if(AttackResult())return;            //若是攻擊有結果(敵人或玩家戰死)退出函數
 990                  else continue; 
 991             case 2: ChooseWupin();break;             //選擇物品,可使用,戰鬥中容許使用攻擊性物品
 992              case 3:DisplayState();break;             //顯示狀態
 993              case 4:
 994                  s=SuiJi();
 995                  if(s<4)                               //40%的機率能夠逃跑
 996                  {
 997                      printf("%s逃跑了~\n\n\n",player.name);
 998                      if(strcmp(guai.name,"使徒")==0)
 999                          SlowDisplay("神祕老人:\n\n\n    哈哈,年輕人,仍是以爲本身很弱吧,多歷練歷練再來救公主吧!哈哈哈哈哈哈哈.....\n\n\n\n");
1000                      battle=0;
1001                      return;
1002                  }
1003                  else printf("%s逃跑失敗!\n\n\n",player.name);
1004                  break;
1005              default:SlowDisplay("輸入錯誤,從新輸入!\n\n\n");
1006              }
1007          }
1008      }
1009      void SlowDisplay(char *p)
1010      {
1011          while(1)
1012          {
1013              if(*p!=0)
1014                  printf("%c",*p++);
1015              else 
1016                 break;
1017              Sleep(60);
1018          }
1019      }
1020      
1021      
1022 //提示:四個手拋式原子彈能夠炸死一個巨人王,五個能夠炸死一個使徒!
相關文章
相關標籤/搜索