概述
角色扮演游戏c语言
这是大一程序设计课大作业,大致的框架是借鉴:
这是我最先开始借鉴的文章地址
在此基础上,换汤不换药的改了boss名称,加了两个人物:蜘蛛侠和钢铁侠,大家随便玩玩吧。
``#include<stdio.h>
#define DECISION "1
基地n2
冒险n3
查看个人信息n4
存档(首次游戏请先存储一次再游戏)n5
返回上一级"
#define DECISION1 "你想挑战的副本是:1.诡计之神
2.奥创纪元
3.终局之战"
#define DECISION2 "你想挑战的副本是:1.绿魔
2.蜥蜴教授
3.蝎子"
void zdmk(void);//攻击
int csrw;
void gtx(void);//钢铁侠
void fjyf(void);//防具研发
void wqyf(void);//武器研发
void jidi(void);//基地
void lvup(void);//升级
void luoji(void);//洛基
void luoji1(void);
void luoji2(void);//end
void aochuang(void);//奥创
void aochuang1(void);
void aochuang2(void);//end
void mieba(void);//灭霸
void mieba1(void);//
void mieba2(void);//end//我把这些函数整理了下,显得整洁
void maoxian(void);
void pi(void);//personal information本来想叫rw(人物),但害怕后期加任务栏
void cd(void);//存档
int hp=200,mp=20,sp,ex=0,p=5,q=20,lv=1,i=1,eak=0,edf=0,gd=0,select=0,sh,tybosshp,hpboss,fb;
void zzx(void);//蜘蛛侠
void fjyf1(void);//防具研发
void wqyf1(void);//武器研发
void jidi1(void);//基地
void zdmk1(void);//攻击
void lvup1(void);//升级
void lvmo(void);//绿魔
void lvmo1(void);
void lvmo2(void);//end
void xyjs(void);//蜥蜴教授
void xyjs1(void);
void xyjs2(void);//end
void xiezi(void);//蝎子
void xiezi1(void);//
void xiezi2(void);//end
void maoxian1(void);
void pi1(void);//personal information本来想叫rw(人物),但害怕后期加任务栏
void cd1(void);//存档
int hp1=220,mp1=30,ex1=0,p1=3,q1=15,lv1=1,i1=1,eak1=0,edf1=0,gd1=0,select1=0,zzgy=2,zzgy1=0,sh1,sp1,tybosshp1,hpboss1,fb1;
int main()//主程序开始
{
while(1)
{
printf("
角色扮演游戏n");
printf("
选择你喜欢的人物开始游戏吧!n");
printf("1
钢铁侠n2
蜘蛛侠n3
敬请期待n");
printf("选择人物:");
scanf("%d",&csrw);
printf("n");
if(csrw)
switch(csrw)
{
case 1:
gtx();
break;
case 2:
zzx();
break;
default:
printf("敬请期待!nn");
}
}
}//主程序到此处完结
void gtx(void)//钢铁侠
{
while(csrw)
{
printf("%sn",DECISION);
int x;
printf("请选择:");
scanf("%d",&x);
printf("n");
switch(x)
{
case 1:
jidi();
select=0;
break;
case 2:
maoxian();
break;
case 3:`在这里插入代码片`
pi();
break;
case 4:
cd();
break;
case 5:
csrw=0;
break;
default:
printf("请在1~5中做选择n");
}
}
}
void cd(void)//存档模块
{
int du;
printf("你想要读取还是存储?n1
读取n2
存储n3
取消n");
printf("请选择:");
scanf("%d",&du);
printf("n");
int a[]={lv,hp,mp,ex,gd};
while(du==1)
{
FILE *fpRead=fopen("data.txt","r");
int b[5];
for(int i=0;i<5;i++)
{
fscanf(fpRead,"%d ",&b[i]);
a[i]=b[i];
}
lv=a[0],hp=a[1],mp=a[2],ex=a[3],gd=a[4];
du=-1;
}
while(du==2)
{
FILE *fpWrite=fopen("data.txt","w");
for(int i=0;i<5;i++)
{
fprintf(fpWrite,"%d ",a[i]);
}
fclose(fpWrite);
du=-1;
}
while(du==3)
{
du=-1;
}
}
void pi(void)//个人信息模块
{
printf("
个人信息
n") ;
printf("称号:钢铁侠n");
printf("等级:%d
hp:%d
mp:%d
经验:%d
财富:%d万美元
n",lv,hp,mp,ex,gd);
printf("技能伤害:1.脉冲炮:%d
2.微型导弹:boss越强,伤害越高
3.方舟激光炮:%d
nn",p,q);
}
void lvup(void)//升级模块
{
while(ex>100*lv)//把经验栏提出来,因为每个怪物经验不同
{
printf("升级了,你的等级为%dnn",lv+1);
p=p+3;
q=q+10;
ex=ex-100*lv;
lv=lv+1;
hp=200+20*(lv-1);
mp=20+2*(lv-1);
}
}
void jidi(void)//基地
{
while(select==0)
{
printf("欢迎回到基地斯塔克先生n请选择目的n1
武器研发n2
防具研发n3
退出基地n");
printf("请选择:");
scanf("%d",&select);
printf("n");
while(select>=3)
{
if(select==3)
{
printf("退出基地n");
select=-1;
}
else
{
printf("请做出正确选择(1~3)");
select=0;
}
}
while(select==1)
{
wqyf();
}
while(select==2)
{
fjyf();
}
}
}//基地模块
void wqyf(void)//武器研发
{
int wq=0,dj=1,cj=1;
while(select==1)
{
printf("你好,欢迎来到武器研发n请问你需要研发什么?n1
离子发射器(伤害加10)
500万美元n2
红外线切割光线(伤害加30)
2000万美元n3
退出武器店n");
printf("请选择:");
scanf("%d",&wq);
printf("n");
if(wq>2)
{
while(wq>3)
{
printf("未开放,敬请期待n");
wq=0;
}
while(wq==3)
{
printf("你选择退出n;");
select=0;
wq=0;
}
}
else
{
while(wq==1)
{
if(gd>500)
{
if(dj=1)
{
printf("你研发了离子发射器,伤害加十n");
eak=10;
p=p+eak;//声明全局变量,装备加成攻击力
dj=0;
wq=0;
}
else
{
printf("你已经研发过了n");
}
}
else
{
printf("经费不足n");
}
wq=0;
}
while(wq==2)
{
if(gd>2000)
{
if(cj=1)
{
printf("你研发了红外线切割光线,伤害加三十,重复研发无效n");
eak=30;
p=p+eak;//声明全局变量,装备加成攻击力
cj=0;
}
else
{
printf("你已经研发过了n");
}
}
else
{
printf("经费不足n");
}
wq=0;
}
}
}
}
void fjyf(void)//防具研发
{
int fj=0,bj=1,szj=1;
while(select==2)
{
printf("你好,欢迎来到防具研发n请问你需要研发什么?n1
能量防御罩(伤害抵消4)
500万美元n2
航空钛合金盔甲(伤害抵消7)
1000万美元n3 退出防具店n");
printf("请选择:");
scanf("%d",&fj);
printf("n:");
if(fj>2)
{
while(fj>3)
{
printf("未开放,敬请期待n");
fj=0;
}
while(fj==3)
{
printf("你选择退出n;");
select=0;
fj=0;
}
}
else
{
while(fj==1)
{
if(gd>500)
{
if(bj=1)
{
printf("你研发了能量防御罩,伤害抵消4,重复研发无效n");
edf=4;//声明全局变量,装备加成攻击力
bj=0;
}
else
{
printf("你已经购买过了n");
}
}
else
{
printf("经费不足n");
}
fj=0;
}
while(fj==2)
{
if(gd>1000)
{
if(szj=1)
{
printf("你购买了航空钛合金盔甲,伤害抵消7,重复购买无效n");
edf=7;//声明全局变量,装备加成攻击力
szj=0;
}
else
{
printf("你已经购买过了n");
}
}
else
{
printf("经费不足n");
}
fj=0;
}
}
}
}
void maoxian(void)//冒险模块
{
printf("%sn",DECISION1);
scanf("%d",&fb);//副本
if(fb>3)
{
printf("未开放请重新选择n");
}
else
{
switch (fb)//这样看起来不简洁,但后期加掉落物品时很方便
{
case 1:
luoji();
break;
case 2:
aochuang();
break;
case 3:
mieba();
break;
}
}
lvup();
hp=200+20*lv;
mp=20+2*lv;
}
void luoji(void)//怪物模块
{
luoji1();
zdmk();
luoji2();
}
void aochuang(void)
{
aochuang1();
zdmk();
aochuang2();
}
void mieba(void)
{
mieba1();
zdmk();
mieba2();
}
void zdmk(void)//战斗模块
{
while(hp>0&&tybosshp>0)
{
i=1;
printf("请选择技能n1.脉冲炮
(造成%d点伤害,mp+1)n2.微型导弹
(造成当前生命值百分之八的伤害,mp-3)n3.方舟激光炮
(造成%d点伤害,mp-5)n4.放弃战斗n",p,q);//待添加
printf("选择:");
scanf("%d",&sp);
printf("n");
while(4<sp)
{
printf("技能选择错误,请重新选择n");
sp=-1;
}
while(sp==1)
{
tybosshp=tybosshp-p;
mp++;
printf("你使用脉冲炮对boss造成%d点伤害,恢复一点mp,boss还有%d血量,你的mp还有%d.n",p,tybosshp,mp);
sp=0;//代表一次攻击的完结,boss开始攻击
}
while(sp==2)
{
while(mp>=3&&sp==2)
{
sh=tybosshp*0.08;
tybosshp=tybosshp*0.92;
mp=mp-3;
printf("你使用微型导弹对boss造成%d点伤害,boss还有%d血量,你的mp还有%d.n",sh,tybosshp,mp);
sp=0;
}
while(mp<3&&sp==2)
{
printf("mp不足3点,无法释放技能微型导弹.n");
sp=-1;
}
}
while(sp==3)
{
while(mp>=5&&sp==3)
{
tybosshp=tybosshp-q;
mp=mp-5;
sp=0;
printf("你使用方舟激光炮对boss造成%d点伤害,boss还有%d血量,你的mp还有%d.n",q,tybosshp,mp);//待定
}
while(mp<5&&sp==3)
{
printf("mp不足5点,无法释放方舟激光炮.n");
sp=-1;
}
}
while(sp==4)
{
hp=-1;
sp=-2;
}
while(tybosshp>0&&sp==0)
{
if(tybosshp>hpboss*0.1)//boss血量下降到10%以下暴怒
{
sh=15+hp*0.01-edf;
hp=hp-sh;
printf("boss朝你回击,你的hp减少了%d点,你还有%d点生命值.nn",sh,hp);
sp=-1;
}
else
{
printf("boss狂暴!");
sh=15+hpboss*0.1-edf;//伤害提升
hp=hp-sh;
printf("boss向你发动更为猛烈的攻击,你的hp减少了%d点,你还有%d点生命值.nn",sh,hp);
sp=-1;
}
}
}
while(tybosshp<=0&&i==1)
{
printf("你已击败BOSS,恭喜通关!nn");
i=i+1;
}
while(hp<0&&i==1)
{
if(sp==-2)
{
printf("你已退出战斗返回基地!n");
i=i+2;
getchar();
}
else
{
printf("惨败,请在简单副本提升能力.nn");
i=i+2;
getchar();
printf("你已原地复活;n恢复hp,mp;n");
hp=200+20*lv;
mp=20+2*lv;
}
}
}
//分割线洛基
void luoji1(void)
{
printf("洛基出现nn");
hpboss=100;//BOSS的生命值
tybosshp=hpboss;
}
void luoji2(void)
{
if(i==2)
{
printf("你获得20ex,50万美金.n");//怪物经验已全部调整
ex=ex+20;
gd=gd+50;
printf("你的经验为%d.nn",ex);
}
else
{
printf("继续努力吧!nn");
}
}
void aochuang1(void)//奥创
{
printf("奥创出现!nn");
hpboss=300;//BOSS的生命值
tybosshp=hpboss;
}
void aochuang2(void)//end
{
if (i==2)
{
printf("你获得100ex,200万美金.n");
ex=ex+100;
gd=gd+200;
printf("你的经验为%d.n",ex);
}
else
{
printf("继续努力吧!nn");
}
}
void mieba1(void)//灭霸
{
printf("灭霸出现!nn");
hpboss=800;//BOSS的生命值
tybosshp=hpboss;
}
void mieba2(void)
{
if(i==2)
{
printf("你获得300ex,500万美金.n");
ex=ex+300;
gd=gd+500;
printf("你的经验为%d.nn",ex);
}
else
{
printf("继续努力吧!nn");
}
}
void zzx(void)//蜘蛛侠
{
while(csrw)
{
printf("%sn",DECISION);
int x;
printf("选择:");
scanf("%d",&x);
printf("n");
switch(x)
{
case 1:
jidi1();
select1=0;
break;
case 2:
maoxian1();
break;
case 3:
pi1();
break;
case 4:
cd1();
break;
case 5:
csrw=0;
break;
default:
printf("请在1~5中做选择n");
}
}
}
void cd1(void)//存档模块
{
int du;
printf("你想要读取还是存储?n1
读取n2
存储n3
取消n");
printf("请选择:");
scanf("%d",&du);
printf("n");
int a[]={lv1,hp1,mp1,ex1,gd1};
while(du==1)
{
FILE *fpRead=fopen("data1.txt","r");
int b[5];
for(int i=0;i<5;i++)
{
fscanf(fpRead,"%d ",&b[i]);
a[i]=b[i];
}
lv1=a[0],hp1=a[1],mp1=a[2],ex1=a[3],gd1=a[4];
du=-1;
}
while(du==2)
{
FILE *fpWrite=fopen("data1.txt","w");
for(int i=0;i<5;i++)
{
fprintf(fpWrite,"%d ",a[i]);
}
fclose(fpWrite);
du=-1;
}
while(du==3)
{
du=-1;
}
}
void pi1(void)//个人信息模块
{
printf("
个人信息
n") ;
printf("称号:蜘蛛侠 n");
printf("等级:%d
hp:%d
mp:%d
经验:%d
财富:%d万美元
n",lv1,hp1,mp1,ex1,gd1);
printf("技能伤害:1.蛛丝射击:%d
2.蜘蛛感应:抵挡%d伤害,回复10血量
3.一击必杀:%d
nn",p1,zzgy,q1);
}
void lvup1(void)//升级模块
{
while(ex>100*lv)//把经验栏提出来,因为每个怪物经验不同
{
printf("升级了,你的等级为%dnn",lv1+1);
p1=p1+3;
q1=q1+10;
zzgy=zzgy+2;
ex1=ex1-100*lv1;
lv1=lv1+1;
hp1=220+20*(lv1-1);
mp1=30+2*(lv1-1);
}
}
void jidi1(void)//基地
{
while(select1==0)
{
printf("欢迎回家,小蜘蛛n请选择目的n1
武器研发n2
防具研发n3
退出基地n");
printf("请选择:");
scanf("%d",&select1);
printf("n");
while(select1>=3)
{
if(select1==3)
{
printf("退出基地n");
select1=-1;
}
else
{
printf("请做出正确选择(1~3)");
select1=0;
}
}
while(select1==1)
{
wqyf1();
}
while(select1==2)
{
fjyf1();
}
}
}//基地模块
void wqyf1(void)//武器研发
{
int wq=0,dj=1,cj=1;
while(select1==1)
{
printf("你好,欢迎来到武器研发n请问你需要研发什么?n1
改良的蛛丝发射器(伤害加12)
450万美元n2
高科技蛛丝发射器(伤害加40)
2100万美元n3
退出武器店n");
scanf("%d",&wq);
if(wq>2)
{
while(wq>3)
{
printf("未开放,敬请期待n");
wq=0;
}
while(wq==3)
{
printf("你选择退出n;");
select1=0;
wq=0;
}
}
else
{
while(wq==1)
{
if(gd1>500)
{
if(dj=1)
{
printf("你研发了改良的蛛丝发射器,伤害加十,重复研发无效n");
eak1=10;
p1=p1+eak1;//声明全局变量,装备加成攻击力
dj=0;
wq=0;
}
else
{
printf("你已经研发过了n");
}
}
else
{
printf("经费不足n");
}
wq=0;
}
while(wq==2)
{
if(gd1>2000)
{
if(cj=1)
{
printf("你研发了高科技蛛丝发射器,伤害加三十,重复研发无效n");
eak1=30;
p1=p1+eak1;//声明全局变量,装备加成攻击力
cj=0;
}
else
{
printf("你已经研发过了n");
}
}
else
{
printf("经费不足n");
}
wq=0;
}
}
}
}
void fjyf1(void)//防具研发
{
int fj=0,bj=1,szj=1;
while(select1==2)
{
printf("你好,欢迎来到防具研发n请问你需要研发什么?n1
毒液共生体(伤害抵消4,攻击力加5)
800万美元n2
蜘蛛战衣(伤害抵消7)
1000万美元n3 退出防具店n");
scanf("%d",&fj);
if(fj>2)
{
while(fj>3)
{
printf("未开放,敬请期待n");
fj=0;
}
while(fj==3)
{
printf("你选择退出n;");
select1=0;
fj=0;
}
}
else
{
while(fj==1)
{
if(gd1>500)
{
if(bj=1)
{
printf("你研发了毒液共生体,伤害抵消4,重复研发无效n");
eak1=5;
p1=p1+eak1;
edf1=4;//声明全局变量,装备加成防御
bj=0;
}
else
{
printf("你已经购买过了n");
}
}
else
{
printf("经费不足n");
}
fj=0;
}
while(fj==2)
{
if(gd>1000)
{
if(szj=1)
{
printf("你购买了蜘蛛战衣,伤害抵消7,重复购买无效n");
edf1=7;//声明全局变量,装备加成防御
szj=0;
}
else
{
printf("你已经购买过了n");
}
}
else
{
printf("经费不足n");
}
fj=0;
}
}
}
}
void maoxian1(void)//冒险模块
{
printf("%sn",DECISION2);
scanf("%d",&fb1);//副本
if(fb1>3)
{
printf("未开放请重新选择n");
}
else
{
switch (fb1)//这样看起来不简洁,但后期加掉落物品时很方便
{
case 1:
lvmo();
break;
case 2:
xyjs();
break;
case 3:
xiezi();//同上
break;
}
}
lvup1();
hp1=200+20*lv1;
mp1=20+2*lv1;
}
void lvmo(void)//BOSS模块
{
lvmo1();
zdmk1();
lvmo2();
}
void xyjs(void)
{
xyjs1();
zdmk1();
xyjs2();
}
void xiezi(void)
{
xiezi1();
zdmk1();
xiezi2();
}
void zdmk1(void)//战斗模块
{
while(hp1>0&&tybosshp1>0)
{
i=1;
printf("请选择技能n1.蛛丝射击
(造成%d点伤害,mp+1)n2.蜘蛛感应
(抵挡%d伤害,回复10血量,mp-3)n3.一击必杀
(造成%d点伤害,mp-5)n4.放弃战斗n",p1,zzgy,q1);//待添加
printf("选择:");
scanf("%d",&sp1);
printf("n");
while(4<sp1)
{
printf("选择错误,请重新选择n");
sp1=-1;
}
while(sp1==1)
{
tybosshp1=tybosshp1-p1;
mp1++;
printf("你使用蛛丝射击对boss造成%d点伤害,恢复一点mp,boss还有%d血量,你的mp还有%d.n",p1,tybosshp1,mp1);
sp1=0;//代表一次攻击的完结,boss开始攻击
}
while(sp1==2)
{
while(mp1>=3&&sp1==2)
{
if(hp1<(210+20*(lv1-1)))
{
hp1=hp1+10;
mp1=mp1-3;
printf("利用蜘蛛感应你闪躲了部分伤害,并回复了十点血量,你还有还有%d血量,你的mp还有%d.n",hp1,mp1);
}
else
{
hp1=220+20*(lv1-1);
int zzgyhp=220+20*(lv1-1)-hp1;
mp1=mp1-3;
printf("利用蜘蛛感应你闪躲了部分伤害,并回复了%d点血量,你还有还有%d血量,你的mp还有%d.n",zzgyhp,mp1);
}
zzgy1=1;
sp1=0;//代表一次攻击的完结,boss开始攻击
}
while(mp1<3&&sp1==2)
{
printf("mp不足3点,无法释放技能蜘蛛感应.n");
sp1=-1;//该操作不可行,重新选择
}
}
while(sp1==3)
{
while(mp1>=5&&sp1==3)
{
tybosshp1=tybosshp1-q1;
mp1=mp1-5;
sp1=0;//代表一次攻击的完结,boss开始攻击
printf("你使用一击必杀对boss造成%d点伤害,boss还有%d血量,你的mp还有%d.n",q1,tybosshp1,mp1);//待定
}
while(mp1<5&&sp1==3)
{
printf("mp不足5点,无法释放一击必杀.n");
sp1=-1;
}
}
while(sp1==4)
{
hp1=-1;
sp1=-2;
}
while(tybosshp1>0&&sp1==0)
{
if(tybosshp1>hpboss1*0.1)//boss血量下降到10%以下暴怒
{
sh=15+hp*0.01-edf;
if(zzgy1)
{
sh=sh-zzgy;
zzgy1=0;
}
hp1=hp1-sh;
printf("boss朝你回击,你的hp减少了%d点,你还有%d点生命值.nn",sh,hp1);
sp1=-1;
}
else
{
printf("boss狂暴!");
sh=15+hpboss1*0.1-edf1;//伤害提升
if(sp1==2)
sh=sh-zzgy;
hp1=hp1-sh1;
printf("boss向你发动更为猛烈的攻击,你的hp减少了%d点,你还有%d点生命值.nn",sh,hp1);
sp1=-1;
}
}
}
while(tybosshp1<=0&&i1==1)
{
printf("你已击败BOSS,恭喜通关!nn");
i1=i1+1;
}
while(hp1<0&&i1==1)//后者确保退出循环
{
if(sp1==-2)
{
printf("你已退出战斗返回基地!n");
i1=i1+2;
getchar();
}
else
{
printf("惨败,请在简单副本提升能力.nn");
i1=i1+2;
getchar();
printf("你已原地复活;n恢复hp,mp;n");
hp1=220+20*lv1;
mp1=30+2*lv1;
}
}
}
//分割线绿魔
void lvmo1(void)
{
printf("绿魔出现nn");
hpboss1=100;//BOSS的生命值
tybosshp1=hpboss1;
}
void lvmo2(void)
{
if(i1==2)
{
printf("你获得20ex,50万美金.n");//怪物经验已全部调整
ex1=ex1+20;
gd1=gd1+50;
printf("你的经验为%d.nn",ex1);
}
else
{
printf("继续努力吧!nn");
}
}
void xyjs1(void)//蜥蜴教授
{
printf("蜥蜴教授出现!nn");
hpboss1=300;//BOSS的生命值
tybosshp1=hpboss1;
}
void xyjs2(void)//end
{
if (i1==2)
{
printf("你获得100ex,200万美金.n");
ex1=ex1+100;
gd1=gd1+200;
printf("你的经验为%d.nn",ex1);
}
else
{
printf("继续努力吧!nn");
}
}
void xiezi1(void)//蝎子
{
printf("蝎子出现!nn");
hpboss1=800;//BOSS的生命值
tybosshp1=hpboss1;
}
void xiezi2(void)
{
if(i==2)
{
printf("你获得300ex,500万美金.n");
ex1=ex1+300;
gd1=gd1+500;
printf("你的经验为%d.nn",ex1);
}
else
{
printf("继续努力吧!nn");
}
}
最后
以上就是默默大白为你收集整理的角色扮演游戏c语言的全部内容,希望文章能够帮你解决角色扮演游戏c语言所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复