C++ 拯救公主(自创小游戏)

制作不易,不喜勿喷。

#include<stdlib.h>
 #include<stdio.h>
 #include<time.h>       //suiji        
 #include<string.h>
 #include<windows.h>          //SLEEP函数
 struct Player                        //玩家结构体,并初始化player
 {
     char name[21];
     int attack;
     int defense;
     int health;
     long int max_health;
     int level;
     int exp;
     int range_exp;
     long int max_exp;
 }player={"勇者",50,40,100,100,1,0,0,100};
 struct Enemy                         //怪的结构体,并初始化各种怪
 {
     char name[20];
     char wupin[12];
     int attack;
     int defense;
     int health;
     int money;
     long int exp;
     int wupin_sign;
     int wupinpro;
     int double_attack;
     int miss;
 }strongman={"森林巨人","黄金圣衣",40,50,350,200,100,1,2,1,0},
 witch={"森林女巫","银甲",25,15,100,50,50,2,2,1,1},
 xiyi={"森林蜥蜴","铁甲",18,10,50,30,35,3,3,2,2},
 big_strongman={"森林巨人王","巨人之臂",40*5,50*5,350*5,200*5,100*5,4,4,2,0},
 lion={"草原雄狮","绝世好剑",60,30,280,200,100,5,2,1,0},
 horse={"草原野马","碧血剑",28,12,90,50,50,6,2,1,1},
 bee={"草原黄蜂","长剑",17,11,60,30,35,7,3,2,2},
 shitu={"使徒","\0",60*8,30*8,280*8,200*8,100*8,9,1,1,0},
 guai={"\0","\0",0,0,0,0,0,0,0,0,0};
     struct Place
     {
       int bar,hotel,forest1,forest2,forest3,grass1,grass2,grass3;
     }place={1,2,3,4,5,6,7,8};
 
    int max_exp=0;
     int choose_number=0,s=0,strongman_arm=0,battle=0,money=500,place_sign=9;
     int cao=3,jijiubao=2,baiyao=2,superbaiyao=1,boom=3,dubiao=2,atom_boom=1;
     int fang=0,fang1=10,fang1n=0,fang2=20,fang2n=0,fang3=40,fang3n=0,fang4=100,fang4n=0;
     int gong=0,gong1=8,gong1n=0,gong2=15,gong2n=0,gong3=25,gong3n=0,gong4=60,gong4n=0;
     char gongname[20]="无",fangname[20]="无";
     char proof;
 
    void AddWupin(int);
     int AttackResult();
     void BattleAct();
     void ChooseWupin();
     void DisplayState();
     void OrdinaryAct();   
    int SuiJi();
     int SuiJi100();
     void WhetherLevelUp();
     void SlowDisplay(char *);   

int main()
 {
     

    int i=0,j=0,k=0;
     char player_name[21];

       SlowDisplay("这是一个勇者的世界! 雅莉萨斯国的罗茜公主被陌生人绑架了!\n\n 伟大的勇者啊~拿起你们的武器,营救公主!\n\n\n输入你的名字:   (20个字符)\n\n\n");
         
         //    sndPlaySound("res\\F005.wav",SND_LOOP);
     scanf("%s",player_name);   
    strncpy(player.name,player_name,20);
     if(strcmp(player.name,"EVA初号机")==0)
     {
         SlowDisplay("封印多年的 EVA初号机 啊!你终于可以重见天日了!\n\n\n EVA初号机 重新启动...      随即...     暴走!!!\n\n\n");
         player.attack=999;
         player.defense=999;
         player.health=9999;
         player.max_health=9999;
     }   
    getchar();
 
    OrdinaryAct();
     return 0;
 }
 
    int SuiJi()
 {
     srand((unsigned)time(NULL));
     return rand()%10;
 }
 

    int SuiJi100()
 {
     srand((unsigned)time(NULL));
     return rand()%100;
 }
 

    void ChooseWupin()                         //选择物品 并使用
 {
     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);
     switch(scanf("%d",&choose_number),choose_number)
     {
     case 1:
         if(cao>0)
         {
             SlowDisplay("使用止血草,HP增加60\n\n\n");
             cao--;
             if(player.health+60>player.max_health)player.health=player.max_health;
             else player.health+=60;
         }
         else SlowDisplay("没有止血草了\n\n\n");
         break;
     case 2:
         if(jijiubao>0)
         {
             SlowDisplay("使用急救包,HP增加80\n\n\n");
             jijiubao--;
             if(player.health+80>player.max_health)player.health=player.max_health;
             else player.health+=80;
         }
         else SlowDisplay("没有急救包了\n\n\n");
         break;
     case 3:
         if(baiyao>0)
         {
             SlowDisplay("使用云南白药,HP增加120\n\n\n");
             baiyao--;
             if(player.health+120>player.max_health)player.health=player.max_health;
             else player.health+=120;
         }
         else SlowDisplay("没有云南白药了\n\n\n");
         break;
     case 4:
         if(superbaiyao>0)
         {
             SlowDisplay("使用超级云南白药,HP增加200\n\n\n");
             superbaiyao--;
             if(player.health+200>player.max_health)player.health=player.max_health;
             else player.health+=200;
         }
         else SlowDisplay("没有超级云南白药了\n\n\n");
         break;
     case 5:
         if(battle)                   //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
         {
             if(boom>0)
             {
             SlowDisplay("使用手雷,敌人HP减少100\n\n\n");
             boom--;
             guai.health-=100;
             AttackResult();
             }
         }
         else SlowDisplay("非战斗状态,不能使用手雷!\n\n\n");
         break;
     case 6:
         if(battle)                   //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
         {
             if(dubiao>0)
             {
             SlowDisplay("使用毒标,敌人HP减少200\n\n\n");
             dubiao--;
             guai.health-=200;
             AttackResult();
             }
         }
         else SlowDisplay("非战斗状态,不能使用毒标!\n\n\n");
         break;
     case 7:
         if(battle)                   //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
         {
             if(atom_boom>0)
             {
             SlowDisplay("使用手抛式原子弹,敌人HP减少500\n\n\n");
             atom_boom--;
             guai.health-=500;
             AttackResult();
             }
         }
         else SlowDisplay("非战斗状态,不能使用手抛式原子弹!\n\n\n");
         break;
     case 0:break;
     default:printf("ChooseWupin error!\n\n\n");
     }
 }
     int AttackResult()                      //攻击结果:判断是否获胜 是否获得物品 和 是否升级
 {
     
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值