最近在学C语言,昨晚利用已学的循环、函数、变量等知识写了这样一个简陋的文字游戏,发在CSDN论坛上试试~~另外,如果代码有什么问题或者坏习惯,希望能帮我指出来。谢谢!
#include <stdio.h>;
void state(int hp, int hp2, int mp, int mp2, int atk) {
printf("你的属性:HP:%d/%d,MP%d/%d,攻击力 %d", hp2, hp, mp2, mp, atk);
};
int main(void)
{
printf(" ===============================================================\n");
printf(" = =\n");
printf(" = =\n");
printf(" = 勇 者 斗 恶 龙 V0.9 2 0 2 2 =\n");
printf(" = =\n");
printf(" = 新创造社荣誉出品 =\n");
printf(" = =\n");
printf(" ===============================================================\n\n\n\n");
printf("剧情介绍:\n从前,有一个美丽的王国,人民安居乐业,政治清明经济繁荣。\n");
printf("直到有一天,一头恶龙来到了首都的西部荒野,它用魔法建立了一座城堡,\n并且派它手下的大将,恐惧魔王抓走了公主,把她关在城堡的地牢里。\n");
printf("国王忧急万分,他向全国发出了号召,哪位勇士能杀死恶魔,救出公主,就\n把公主许配给他,并在今后继承王位!\n");
printf("可是,有一千名勇士前往了城堡,他们全都一去无回……\n");
printf("终于,你出现了!你是全国最强大的勇士,你相信自己能成功打败魔王,救出公主。\n");
printf("现在,你正准备在首都做一些准备,擦亮武器,准备补给,前往城堡……\n\n\n");
int hp = 500, mp = 100, atk = 50, skill = 100;/*定义主角的生命值,魔力值,基础攻击力,技能攻击力*/
int hp2 = hp, mp2 = mp;int gold = 500;/*定义主角的当前生命值,魔力值*/
int a=0,b=0,c = 0;/*定义几个形参*/
do{
printf("你现在的位置是 王国首都。\n你目前的状态是\n");
state(hp,hp2,mp,mp2,atk);
printf(" 你现在有金币%d个。\n你现在可以去:\n",gold);
printf("1.恶龙城堡 2.武器铺 3.旅店 4.练武馆 \n");
scanf_s("%d", &c);
switch (c){
case 1: /*恶龙城堡*/ {
printf("你确定吗?前往恶龙城堡即将面临一场恶战……\n确定:1// 取消//0\n");
scanf_s("%d", &a);
if (a != 1)
c = 5;
break;
};
case 2:/*武器铺*/ {
puts("你来到了武器铺。");
puts("老板:欢迎光临!想要点什么?");
printf("1.铁剑-200g 2.银剑-300g 3.金盾-200g 4.圣盾-500g\n");scanf_s("%d", &b);
switch (b)
{
case 1:/*铁剑*/ {
if (gold < 200) {
printf("金币不足!");
}
else
{
puts("你装备了铁剑,攻击力+20!");
gold -= 200;atk += 20;
}
break;
;}
case 2:/*银剑*/{
if (gold < 300) {
printf("金币不足!");
}
else
{
puts("你装备了铁剑,攻击力+40!");
gold -= 300;atk += 40;
}
break;
};
case 3:/*金盾*/ {
if (gold < 300) {
printf("金币不足!");
}
else
{
puts("你装备了金盾,最大生命+300!");
gold -= 300;hp += 300;hp2 += 300;
}
break;
}
case 4:/*圣盾*/ {
if (gold < 500) {
printf("金币不足!");
}
else
{
puts("你装备了金盾,最大生命+500!十字斩的基础伤害提高了!");
gold -= 500;hp += 500;hp2 += 500;skill += 100;
};
break;
}
}
break;
};
case 3:/*旅店*/ {
printf("旅店现在空无一人……(旅店即将在1.0版本中开放,敬请期待)");
break;
};
case 4:/*练武馆*/ {
puts("你要找谁?\n1.圣骑士-50g 2.狂战士-100g 3.法师-50g 4.离开");scanf_s("%d", &b);
switch (b) {
case 1: {
if (gold < 50) {
printf("金币不足!");
}
else
{
puts("十字斩的基础伤害提高了!");
gold -= 50;skill += 50;
};
break;
}
case 2: {
if (gold < 100) {
printf("金币不足!");
}
else
{
puts("普通攻击基础伤害提高了!");
gold -= 100;atk += 7;
};
break;
}
case 3: {
if (gold < 50) {
printf("金币不足!");
}
else
{
puts("法力值上升了!");
gold -= 50;mp += 50;mp2 = 50;
};
break;}
case 4:break;
default: {printf("你的输入错误!");break;}
};
}
};
printf("\n\n\n");
} while (c != 1);/*首都事件组*/
printf("你来到了恶龙城堡,你见到了恶龙!你抽出长剑,开始与巨龙恶斗!");
int hp3 = 1000,atk3 = 50;/*定义敌人血量、攻击力*/
printf("\n你观察到恶龙还有1000点生命!\n");
do/*操作阶段*/
{
printf("轮到你行动了!\n1.普通攻击 2.十字斩 3.休息 4.判断战局形势");
scanf_s("%d", &b);
switch (b) {
case 1: {hp3 -= atk;
printf("你向恶龙猛砍了过去!恶龙受到%d点伤害!恶龙还有%d点血量!\n", atk,hp3);
break;
};
case 2: {hp3 -= skill;
printf("你对恶龙使用了技能十字斩!恶龙受到%d点伤害!恶龙还有%d点血量!\n", skill,hp3);
break;
};
case 3: {
printf("你开始休息回血。你恢复了20点HP,20点MP!\n");
hp2 += 20;mp2 += 20;
if (hp2 > hp)
{
hp2 = hp;
};
if (mp2 > mp)
{
mp2 = mp;
};/*防止数值溢出*/
break;
}
case 4:state(hp, hp2, mp, mp2, atk);printf("\n恶龙还有%d点血量",hp3);
};
hp2 -= 50;
printf("轮到恶龙行动了!恶龙对你造成了50点伤害!你还剩%d点血量!", hp2);
if (hp2 <= 0) {
printf("\n\n你的血量已经归零!你被恶龙打败了!这都打不过,赶紧重开吧!");
printf("程序结束。请按ENTER键退出。");scanf_s("%d", &a);
return 0;
};
} while (hp3 > 0);
printf("\n恶龙的血量归零了!\n你击败了恶龙!救出了公主!从此过上了幸福的生活!。\n");
printf("程序结束。请按ENTER键退出。");scanf_s("%d", &a);
return 0;
};