C语言写的一个简单文字游戏-勇者斗恶龙

最近在学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;
};

  • 16
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值