解救公主

#include<bits/stdc++.h>
//#define slow 10
#define quick 0
struct bz_{
bool bs;
bool by;
}bz;
struct tz_{
bool tj;
bool cj;
}tz;
char name[20];
char da[2][200]={" 森林蜥蜴\n 特征:经常喜欢发出怪叫。怪物类型:普通喽啰\n 攻击范围:1~50\n 血量:50,死后金币奖励:30"," 森林女巫\n 特征:带有药水。怪物类型:低级BOSS\n 攻击范围:1~50\n 血量:100,死后金币奖励:50"};
int life=150,coins=0,isquit=0,zuobi=0,slow=10;
void menu(),shop(),look(),da_(int ),forest(int ),show(char *,bool ),talk(),init();
int main()
{
// printf("请输入写字的速度:");
// scanf("%d",&slow);getchar();
init();
show("输入你的名字(小于21个字符):",slow); 
gets(name);
gets(name);
printf("处理中");
Sleep(1000);
putchar('.');
Sleep(1000);
putchar('.');
Sleep(1000);
putchar('.');
while(1)
{
system("cls");
menu();
if(isquit==1)
return 0;
}
}
void show(char *str,bool speed)
{
if(speed)
for(int i=0;i<strlen(str);i++)
{
putchar(str[i]);
Sleep(10);
}
else
for(int i=0;i<strlen(str);i++)
putchar(str[i]);
}
void menu()
{
// getch();
srand((unsigned)time(NULL));
int num=rand()%2;
int choose;
show("---------------------------------------\n\n",quick);
show("你想去哪里? 1、森林 2、商店 3、查看状态 4、查看档案 5、作弊模式 6、聊天(如果你想退出,按Ctrl+C)\n\n",quick);
show("---------------------------------------\n",quick);
scanf("%d",&choose);
switch(choose)
{
case 1:
forest(num);break;
case 2:
shop();break;
case 3:
look();break;
case 4:
da_(2);break;
case 5:
show("作弊模式:",slow);
if(zuobi)
printf("开\n");
else
printf("关\n"); 
if(zuobi==0)
{
show("作弊模式开启",slow);
zuobi=1;
}
else
{
show("作弊模式关闭",slow);
zuobi=0;
}
puts("");
system("pause");break;
case 6:
talk();
break;
//default:
// show("输入有误!",slow);
}
}
void forest(int num)
{
srand((unsigned)time(NULL));
char list[2][20]={"森林蜥蜴","森林女巫"},g[20];
int lives[2]={50,100},coin[2]={30,50};
strcpy(g,list[num]);
int gongji=rand()%50,fanji=rand()%50,suiji=rand()%50;
show(g,slow);show("扑了过来!",slow);
show("你的生命有:",slow);
printf("%d\n",life);
if(bz.bs==1 && bz.by==1)
{
if(bz.bs==1)
show("由于匕首的攻击,攻击力增加10\n",slow);
if(bz.bs==1)
show("由于布衣的保护,防御力增加10\n",slow);
}
printf("请选择:1、攻击 2、逃跑 3、查看状态 4、查看档案 5、作弊模式");
int choose;
here:
scanf("%d",&choose);
gongji=rand()%50;
fanji=rand()%50;
if(bz.bs==1 && bz.by==1)
{
gongji+=10;
fanji-=10;
}
switch(choose)
{
case 1:
show(name,slow);
show("选择了攻击!",slow);
show(g,slow);
show("现在的血量减少了",slow);
printf("%d",gongji); 
lives[num]-=gongji;
show("!\n原来是",slow);
printf("%d\n",gongji-10);
if(lives[num]>0 && num==0)
{
show(g,slow);
show("反击,",slow);
show(name,slow);
show("现在的生命减少",slow);
if(!zuobi)
{
printf("%d\n",fanji);
life-=fanji;
show("原来是",slow); 
printf("%d\n",fanji+10);
}
else
printf("0\n");
if(lives[num]<=0)
{
show(g,slow); 
show("死了,金币掉落",slow);
printf("%d\n",coin[num]);
coins+=coin[num];
if(suiji==0)
{
show("从敌人尸首中发现30点回血包!",slow);
life+=30;
}
system("pause");
}
else
{
printf("请选择:1、攻击 2、逃跑 3、查看状态 4、查看档案 5、作弊模式");
goto here;
}
return;
}
else
{
if(lives[num]<=0)
{
show(g,slow); 
show("死了,金币掉落",slow);
printf("%d\n",coin[num]);
coins+=coin[num];
if(suiji==0)
{
show("从敌人尸首中发现30点回血包!",slow);
life+=30;
}
system("pause");
return;
}
if(lives[1]<=0)
{
show("森林女巫死了,掉落金币50",slow);
coins+=50;
break;
}
else
{
show(name,slow);
show("被女巫攻击了!剧毒开始持续!\n",slow);
if(!zuobi)
for(int i=0;i<(rand()%4+1);i++)
{
show(name,slow);
show("的生命减少",slow);
printf("%d\n",fanji);
life-=fanji;
show("原来是",slow); 
printf("%d\n",fanji+10);
life-=fanji;
}
else
for(int i=0;i<rand()%5;i++)
{
show(name,slow);
show("的生命减少0\n",slow);
}
goto here;
}
}
break;
case 2:
show(name,slow);
show("逃跑了\n",slow);
system("pause");
break;
case 3:
look();
goto here;
break;
case 4:
da_(num);
goto here;
break;
case 5:
show("作弊模式:",slow);
if(zuobi)
printf("开\n");
else
printf("关\n"); 
if(zuobi==0)
{
show("作弊模式开启",slow);
zuobi=1;
}
else
{
show("作弊模式关闭",slow);
zuobi=0;
}
puts("");
system("pause");
goto here;
break;
default:
show("输入有误!",slow);
goto here;
}
}
void shop()
{
show("你当前金币有:",slow);
printf("%d\n",coins);
show("用20金币可以买回20滴血,要继续吗?(1,0),或100金币可以买回300滴血(3,2)",slow);
int choose;
scanf("%d",&choose);
if(choose==1 || choose==3)
{
if(choose==1)
{
if(coins<20)
show("金币不足!",slow);
else
{
show("购买成功!",slow);
life+=20;
coins-=20;
}
}
if(choose==3)
{
if(coins<100)
show("金币不足!",slow);
else
{
show("购买成功!",slow);
coins-=100;
life+=300;
}
}
}
if(choose==0 || choose==2)
show("你取消了",slow);
system("pause");
}
void look()
{
show("你的金币有:",quick);
printf("%d",coins);
show(", 你的生命有:",quick);
printf("%d\n",life);
system("pause");
}
void da_(int num)
{
if(num==0 || num==1)
puts(da[num]);
else
{
puts(da[0]);
puts(da[1]);
}
system("pause");
}
void talk()
{
show("要跟谁聊天?\n1、红衣女郎 2、赏金猎人 3、酒店老板\n",slow);
int choose;
scanf("%d",&choose);
switch(choose)
{
case 1:
printf("暂时不能与此人聊天\n");
system("pause");
break;
case 2:
show(name,slow);
show("啊!你的勇敢你让我感动!喏,这是匕首和布衣,拿去吧!\n",slow);
bz.bs=1;
bz.by=1;
system("pause");
break;
case 3:
printf("暂时不能与此人聊天\n");
system("pause");
}
}
void init()
{
bz.bs=0;
bz.by=0;
tz.cj=0;
tz.tj=0;
printf("是打开样例文件(此功能研究中,不推荐),还是测试?(推荐)(1,2)");
int c;
scanf("%d",&c);
if(c==1)
{
freopen("example.txt","r",stdin);
gets(name);
scanf("%d%d%d",&life,&coins,&zuobi);
getchar();
}
else
return;
/*printf("是打开保存文件,还是创建新的?(1,2)");
int c;
scanf("%d",&c);getchar();
if(c==2)
{
freopen("player.txt","w",stdout);
puts(name);
printf("%d\n%d\n%d\n",life,coins,zuobi);
}
if(c==1)
{
char str[100];
printf("请输入文件名:(example.txt文件可以作为样例)");
getchar();gets(str);
freopen(str,"r",stdin);
gets(name);
scanf("%d%d%d",&life,&coins,&zuobi);
}
char st[100];
gets(st);*/
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值