#include<stdio.h>
#include<time.h>
#include<stdlib.h>
struct legend{
char name[30];
int hp;
int health;
int damage;
int level;
};
struct monsters{
char name[30];
int hp;
int damage;
};
void suffer(struct legend *a,int event);
void opportunity(struct legend *a,int event);
void fight(struct legend *a,int event,struct monsters mon);
void plus(struct legend *a,int event);
int main()
{
char a;
int things,dragon=0,open=0;
struct legend man;
printf("II___ikun历险记___II\n********************\n [输入您的名字]\n********************\n");
struct monsters mon[4]={{"嚎啸马",40,13},{"泥醉嚎狮",80,6},{"梅狸猫",65,12},{"珍德食泥鸭",80,10}};
/*for(int z=0;z<4;z++)
{
printf("%s %d %d\n",mon[z].name,mon[z].hp,mon[z].damage);
}*/
scanf("%s",&man.name);
man.hp=100;
man.health=20;
man.damage=15;
man.level=0;
printf("您的角色创立成功,名叫'%s',以下是他的属性:\nhp=%d\nhealth=%d\ndamage=%d\nlevel=%d\n随意按键加回车继续,按b键结束\n",man.name,man.hp,man.health,man.damage,man.level);
scanf("\n%c",&a);
srand(time(0));
while(1)
{
things=rand()%100;
if(open==1&&things>=95)
{
things-=5;
printf("还剩%d回合",10-dragon);
}
int event=rand()%4+1;
if(things<=10)
{
printf("机遇:\n");
opportunity(&man,event);
}
else if(things>10&&things<=30)
{
printf("遭遇:\n");
suffer(&man,event);
}
else if(things>30&&things<=50)
{
printf("升级:\n(除升级事件外,其它事件等级提升无回复等buff)\n");
plus(&man,event);
}
else if(things>50&&things<=80)
{
printf("战斗:\n");
fight(&man,event,mon[event-1]);
}
else if(things>80&&things<=95)
{
int j,c=0;
printf("你来到了一个神秘商店,你可以用60生命值兑换店内任何一物品,或按其它键离开商店\n");
printf("(1)ikun专属篮球 damage+20\t(2)背带裤 health+12\n(3)中分 health+8 damage+8\t(4)鸡汤 level+4\n");
scanf("%d",&j);
if(j==1)
man.damage+=20;
else if(j==2)
man.health+=12;
else if(j==3)
{
man.health+=8;
man.damage+=8;
}
else if(j==4)
man.level+=4;
else
{
printf("您选择离开\n");
c=1;
}
c==0?man.hp-=60:0;
}
else
{
printf("梦里遇见神龙,神龙说可以直接带你得道升天,前提是需要活过10回合\n");
open=1;
}
if(open==1)
dragon++;
printf("%s:\nhp=%d\nhealth=%d\ndamage=%d\nlevel=%d\n",man.name,man.hp,man.health,man.damage,man.level);
scanf("\n%c",&a);
if(man.health<8)
{
printf("每回合健康值低于8,生命值-10\n");
man.hp-=10;
}
if(a=='b')
{
printf("你确定要退出吗?若确定,请再次按b键,若取消请按b以外的其它键\n");
scanf("\n%c",&a);
if(a=='b')
break;
}
if(man.level==25||dragon==10)
{
printf("你已成功修炼得道,飞升入坤界,坐享无数篮球\n");
break;
}
if(man.hp<=0)
{
printf("你噶了\n");
break;
}
man.health-=1;
}
printf("********************游戏结束********************\n");
}
void opportunity(struct legend *a,int event)
{
switch(event)
{
case 1:
printf("你遇到了鸽鸽,鸽鸽给你了一个坤蛋,你吃掉了它,健康值+5\n");
a->health+=5;
break;
case 2:
printf("你捡到了坤拳秘籍残页,钻研了一番,伤害值+10\n");
a->damage+=10;
break;
case 3:
printf("你遇到了一颗荔枝树,吃了些荔枝,生命值+50\n");
a->hp+=50;
break;
default:
printf("你偶然捡到鸽鸽的CD,观看后,悟出只因大道,各项能力增加\n");
a->hp+=20;
a->damage+=5;
a->health+=2;
}
}
void suffer(struct legend *a,int event)
{
switch(event)
{
case 1:
printf("遭到一群小黑子的攻击,健康值-3,生命值-35\n");
a->health-=3;
a->hp-=25;
break;
case 2:
char c;
printf("你在一空旷处看到了一枚篮球,是否要去捡?\n是(y)\t否(n)\n");
scanf("\n%c",&c);
if(c=='n')
{
printf("你觉得没有必要冒险,跑了\n");
break;
}
else if(c!='y')
{
printf("按其它键默认捡篮球\n");
c='y';
}
if(c=='y')
{
int b=rand()%3;
if(b==0)
{
printf("你成功拿到篮球,没有任何阻碍,拥有了一个篮球,你的伤害+10\n");
a->damage+=10;
}
else if(b==1)
{
printf("你被一群虾头男偷袭,不得已逃跑,生命值-30\n");
a->hp-=30;
}
else
{
printf("这个篮球是陷阱,你被一群鸽鸽的女粉丝围攻,健康值-8\n");
a->health-=8;
}
}
break;
case 3:
printf("你遇到一群强盗,是拼死抵抗还是屈服缴械?\n抵抗(y)\t缴械(n)\n");
char b;
scanf("\n%c",&b);
if(b=='n')
{
printf("你知道拼死抵抗会吃亏,于是乖乖上缴武器(hp-15;damage-7)\n");
a->hp-=15;
a->damage-=7;
}
else if(b!='y'&&b!='n')
{
printf("按其它键默认抵抗");
b='y';
}
if(b=='y')
{
int hp,health,damage;
if(a->damage>=30&&a->damage<60)
{
hp=25;health=2;damage=7;
}
else if(a->damage>=60)
{
hp=15;health=1;damage=4;
}
else
{
hp=35;health=3;damage=10;
}
printf("你与强盗交手,打退了强盗,因此也受伤(hp-%d;health-%d;damage+%d)\n",hp,health,damage);
a->hp-=hp;
a->health-=health;
a->damage+=damage;
}
break;
default:
printf("你误打误撞地走进一个山洞,里面有练习两年半的得道高鸡,你被他打至重伤,生命值-60\n");
a->hp-=60;
break;
}
}
void plus(struct legend *a,int event)
{
int i=0;
switch(event)
{
case 1:
printf("你得到一本《武林秘鸡》,修炼之后等级提升1\n");
i++;
break;
case 2:
printf("受到高人指点,等级提升1\n");
i++;
break;
case 3:
printf("找到一处风水宝地,修炼三天,等级提升2\n");
i+=2;
break;
default:
printf("遇到一个神秘商人,他说他也是ikun,所以可以赠送一本秘鸡,但是需要靠自己的运气\n(三本中只有一本是秘鸡,在第一本(1),第二本(2),第三本(3),中任选其一)\n");
int m,n;
scanf("\n%d",&n);
m=rand()%3+1;
if(n==m)
{
printf("你运气很好,抽到了秘鸡,修炼之后等级+3\n");
i+=3;
}
else
{
printf("很可惜,你没抽到秘鸡\n");
}
break;
}
for(i;i>0;i--)
{
int k;
printf("每升一级可以选择一项加成,请选择您要给人物所加的属性:\n生命+10(1)\t健康值+2(2)\t伤害+2(3)");
scanf("%d",&k);
if(k!=1&&k!=2&&k!=3)
{
printf("按其它键默认加生命值");
a->hp+=10;
}
if(k==2)
a->health+=2;
else if(k==3)
a->damage+=2;
else if(k==1)
a->hp+=10;
a->level++;
}
}
void fight(struct legend *a,int event,struct monsters mon)
{
char n;
printf("你遇到了%s:\nhp=%d\ndamage=%d\n是否与其对战?\n对战(y)\t逃跑(n)\n",mon.name,mon.hp,mon.damage);
scanf("\n%c",&n);
if(n=='n')
{
printf("你觉得不敌,于是逃跑(逃跑会受到怪物造成的一次伤害),且一无所获\n");
a->hp-=mon.damage;
}
else if(n!='y'&&n!='n')
{
printf("按其它键默认对战\n");
n='y';
}
if(n=='y')
{
int i=0;
for(;mon.hp>0;i++)
{
mon.hp-=a->damage;
}
printf("你受到了%d的伤害,但是打败了%s,等级+1\n",i*mon.damage,mon.name);
a->hp-=i*mon.damage;
a->level+=1;
switch(event)
{
case 1:
printf("你吃掉了马鞭,健康值+5\n");
a->health+=5;
break;
case 2:
printf("你拔下了狮子的牙齿,伤害+5\n");
a->damage+=5;
break;
case 3:
printf("你拿梅狸猫的答辩泡了杯猫屎咖啡,生命值+10\n");
a->hp+=10;
break;
default:
printf("你吃了鸭爪,等级+1\n");
a->level++;
break;
}
}
}
因为这也是短时间内写出来的,有许多明显的缺陷,例如必须要输入一个随机按键才可继续运行,或者一些bug等等;
加上基础不是很扎实,代码太长且些许多余,这里我会在之后的学习中更加精进。