⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 封魔录游戏代码,对游戏有研究的拿来参考还可以的
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <time.h>
#include <stdio.h>
#include <windows.h> 
#include <conio.h>
#include "menoy_make.h"
#include "man_look.h"
#include "buy.h" 
#include "attack.h"
int n=1,m=0;m1=0,m2=0,m3=0,m4=0,m5=0;//n定义为:交易还是询问   m为主线任务的完成情况   m1为第一次进入的对白   m2,m3,m4,m5定义为是不是接过隐藏任务
int x=35,y=15,x1=2,y1=12,x2=2,y2=12,p=1;     //各地图的坐标   //p为游戏难度的显示
char a_1='w',a_2='s',a_3='a',a_4='d',look='c';   //各个按键的设置

void press_make()            //按键的设置
{
	char ch1,ch2,ch3,ch4,ch5;
	system("cls");
	system("color f4");
	gotoxy(10,5);printf("请对按键进行设置,只能是26个字母或数字!按键设置不能重复!");
	gotoxy(30,8);printf("上:");
	gotoxy(30,10);printf("下:");
	gotoxy(30,12);printf("左:");
	gotoxy(30,14);printf("右:");
	gotoxy(30,16);printf("人物属性:");
	gotoxy(33,8);
	ch1=getch();printf("%c",ch1);
	a_1=ch1;
	gotoxy(33,10);
	ch2=getch();printf("%c",ch2);
	a_2=ch2;
	gotoxy(33,12);
	ch3=getch();printf("%c",ch3);
	a_3=ch3;
	gotoxy(33,14);
	ch4=getch();printf("%c",ch4);
	a_4=ch4;
	gotoxy(39,16);
	ch5=getch();printf("%c",ch5);
	look=ch5;
	gotoxy(10,19);printf("你的按键设置是  上:%c  下:%c  左:%c  右:%c  人物属性:%c",ch1,ch2,ch3,ch4,ch5);
}

void game_showmake()                 //游戏难度的设置
{
	char ch=1;
	int n=0;
	gotoxy(25,4);printf("请你选择游戏难度:");
	gotoxy(30,8);printf("简单");
	gotoxy(28,8);printf("%c",16);
	gotoxy(30,11);printf("中等");
	gotoxy(30,14);printf("困难");
	ch=getch();
	while(ch!=13)
	{
		if(ch==a_2)
		{
			n=n+3;
			if(n>6)n=n-3;
			gotoxy(28,n+5);printf(" ");
			gotoxy(28,8+n);printf("%c",16); 
		}
		if(ch==a_1)
		{
			n=n-3;
			if(n<0)n=n+3;
			gotoxy(28,11+n);printf(" ");
			gotoxy(28,8+n);printf("%c",16);
		}
		ch=getch();
	}
	if(n==0)
	{
		gotoxy(22,18);printf("你选择的游戏难度是: 简单");
		man.menoy=2000;
		p=0;
	}
	if(n==3)
	{
		gotoxy(22,18);printf("你选择的游戏难度是: 中等");
		man.menoy=500;
		p=1;
	}
	if(n==6)
	{
		gotoxy(22,18);printf("你选择的游戏难度是: 困难");
		man.menoy=0;
		p=2;
	}
}

void game_show()                           //游戏难度的显示
{
	gotoxy(1,1);printf("游戏难度:");
	if(p==0)printf("简单");
	if(p==1)printf("中等");
	if(p==2)printf("困难");
}

int main(void)
{
	void map_7(int x,int y);
	void map_6(int x,int y);
	void map_5(int x,int y);
	void map_4(int x,int y);
	void map_3(int x,int y);
	void map_2(int x1,int y1);
	void map_1(int x,int y);
	char ch=1;
	int h=0;
	system("title 封魔录");
	system("color f1");
	while(h<8)
	{
		if(h==0)gotoxy(20,8);printf("%c%c",16,16);
		game_show();
		gotoxy(22,8);printf("开始游戏");
		gotoxy(22,10);printf("按键设置");
		gotoxy(22,12);printf("难度设置");
		gotoxy(22,14);printf("游戏制作");
		ch=getch();
		if(ch==a_2)
		{
			h=h+2;
			if(h>6)h=h-2;
			gotoxy(20,6+h);printf("   ");
			gotoxy(20,8+h);printf("%c",16);
		}
		if(ch==a_1)
		{
			h=h-2;
			if(h<0)h=h+2;
			gotoxy(20,10+h);printf("   ");
			gotoxy(20,8+h);printf("%c",16);
		}
		if(h==0&&ch==13)
		{
			h=8;
		}
		if(h==2&&ch==13)
		{
			system("cls");
			press_make();
			getch();
			h=0;
			system("cls");
		}
		if(h==4&&ch==13)
		{
			system("cls");
			game_showmake();
			getch();
			h=0;
			system("cls");
		}
		if(h==6&&ch==13)
		{
			system("cls");
			printf("\n\n\n\n\n\n\n\n\n\n\t\t\t制作者:  未定\n\n\t\t\t完成时间:未定");
			getch();
			h=0;
			system("cls");
		}
	}
	system("cls");
	printf("\n\n\n\n\t\t箭隐%c:星月啊,你下山去吧!\n\n\n",2);
	dalay(2);
	printf("\t\t%s%c:师傅难道不要徒儿了吗??               \n\n\n",man.name,1);
	dalay(2);
	printf("\t\t箭隐%c:不是为师的不要你,而是你已学成,该去锻炼一下自己了!\n\n\n",2);
	dalay(2);
	printf("\t\t%s%c:是吗?那师傅徒儿该去哪儿呢?                           \n\n\n",man.name,1);
	dalay(2);
	printf("\t\t箭隐%c:山下的村子最近有了麻烦,你去找黎夫人问问吧!             \n\n\n",2);
	dalay(2);
	system("cls");
	printf("等待,进入中....");
	dalay(1);
	man.weapon[0]=1;
	man.cloth[0]=1;
	map_1(x,y);
}


void up_down(char ch_1)  //NPC对话的函数
{
	gotoxy(1,23);
	printf("%c 买卖",16);
    gotoxy(2,24);
	printf(" 离开");
	ch_1=getch();
	while(ch_1!=13)
	{
	if(ch_1==a_2)
	{
	gotoxy(1,23);
	printf(" ");
	gotoxy(1,24);
	printf("%c",16);
	n=2;
	}
	if(ch_1==a_1)
	{
	gotoxy(1,24);
	printf(" ");
	gotoxy(1,23);
	printf("%c",16);
	n=1;
	}
	ch_1=getch();
	}
}

void map_1(int x,int y)                    //第一张地图
{
	//ch_0定义为初始时说村子奇怪的话
	char ch,ch_2,ch_1;//ch_2是山洞找人任务对话  ch是人物移动命令     ch_是吃药命令
	int i,j;/*m定义为是否接过山洞找人任务    1为没有,2为接了,m1为人物查询是退出状态*/    
	char a[20][70];
 /*全部变空格*/
	for(i=0;i<20;i++) 
    for(j=0;j<70;j++)
		a[i][j]=' ';
/*围墙设置*/
	for(j=0;j<70;j++)
	{
		a[0][j]='#';
		a[19][j]='#';
	}
	for(i=0;i<20;i++)
	{
		a[i][0]='#';
		a[i][69]='#';
	}
/*设置出口*/
	a[10][69]=' ';
/*建筑房屋*/
	for(j=8;j<16;j++)
	{
		a[3][j]='#';
		a[4][j]='#';
		a[13][j]='#';
		a[14][j]='#';
	}
	for(j=56;j<64;j++)
	{
		a[3][j]='#';
		a[4][j]='#';
		a[13][j]='#';
		a[14][j]='#';
	}
/*井的设置*/
	for(j=32;j<36;j++)
	{
		a[7][j]='#';
		a[9][j]='#';
	}
	a[8][32]=a[8][35]='#';
/*NPC的设置*/
	a[5][12]='@';
	a[15][12]='$';
	a[5][60]='!';
	a[15][60]='&';
/*以背景色输出*/
	system("cls");
    system("color f2");
	printf("\t\t\t\t桃源村\n");
	for(i=0;i<20;i++)
	{
    for(j=0;j<70;j++)
		printf("%c",a[i][j]);
	printf("\n");
	}
	game_show();
	gotoxy(x,y);printf("%c",1);
	if(m1==0)        //人物退出属性查询状态
	{
		gotoxy(1,22);printf("%s: 这地方好奇怪,怎么没有几个人呢??  ",man.name);
		dalay(1);
		m1=1;
		gotoxy(1,22);printf("%s: 还是先找个人来问问再说!!            ",man.name);
		dalay(1);
		gotoxy(1,22);printf("                                         ");
	}
	while(x<70)
	{
		/*人物的移动*/
		ch=getch();
		if( ((int)ch==a_1) && (a[y-3][x-1]==' ') )
		{
			gotoxy(x,y);printf(" ");
		    y=y-1;
			gotoxy(x,y);printf("%c",1);
			gotoxy(1,22);
		}
		else if( ((int)ch==a_4) && (a[y-2][x]==' ') )
		{
			gotoxy(x,y);printf(" ");
		    x=x+1;
			gotoxy(x,y);printf("%c",1);
			gotoxy(1,22);
		}
		else if( ((int)ch==a_3) && (a[y-2][x-2]==' ') )
		{
			gotoxy(x,y);printf(" ");
		    x=x-1;
			gotoxy(x,y);printf("%c",1);
			gotoxy(1,22);
		}
		else if( ((int)ch==a_2) && (a[y-1][x-1]==' ') )
		{
			gotoxy(x,y);printf(" ");
		    y=y+1;
			gotoxy(x,y);printf("%c",1);
			gotoxy(1,22);
		}
		/*武器的买卖*/
		else if((int)ch==13&&(a[y-2][x]=='$'||a[y-2][x-2]=='$'||a[y-3][x-1]=='$'))
		{
			gotoxy(1,22);
			printf("铁匠%c:我这有各种武器,你想看看吗?  %c",2,31);
            up_down(ch_1);
			if(n==1)
			{
			gotoxy(1,22);printf("                                    \n        \n          ");
			gotoxy(1,22);buy_1();
			m1=1;
			map_1(x,y);
			}
			if(n==2)
			{
			gotoxy(1,22);printf("                                    \n        \n          ");
			gotoxy(1,22);printf("村子好多人都不见了,我这生意也不好做了!");
			dalay(1);
			gotoxy(1,22);printf("                                               ");
			}
			n=1;
		}
		/*衣服的买卖*/
		else if((int)ch==13&&(a[y-2][x]=='@'||a[y-2][x-2]=='@'||a[y-3][x-1]=='@'))
		{
			gotoxy(1,22);
			printf("裁缝%c:我这有各种护甲,你要看看吗?  %c",2,31);
            up_down(ch_1);
			if(n==1)
			{
			gotoxy(1,22);printf("                                    \n        \n          ");
			gotoxy(1,22);buy_2();
			m1=1;
			map_1(x,y);
			}
			if(n==2)
			{
			gotoxy(1,22);printf("                                    \n        \n          ");
			gotoxy(1,22);printf("村子好多人都不见了,我这生意也不好做了!");
			dalay(1);
			gotoxy(1,22);printf("                                               ");
			}
			n=1;
		}
		/*药品的买卖*/
		else if((int)ch==13&&(a[y-2][x]=='&'||a[y-2][x-2]=='&'||a[y-3][x-1]=='&'))
		{
			gotoxy(1,22);
			printf("药师%c:我这有各种药品,你要看看吗?  %c",2,31);
            up_down(ch_1);
			if(n==1)
			{
			gotoxy(1,22);printf("                                    \n        \n          ");
			gotoxy(1,22);buy_3();
			m1=1;
			map_1(x,y);
			}
			if(n==2)
			{
			gotoxy(1,22);printf("                                    \n        \n          ");
			gotoxy(1,22);printf("村子好多人都不见了,我这生意也不好做了!");
			dalay(1);
			gotoxy(1,22);printf("                                               ");
			}
			n=1;
		}
		/*接到的一个救人任务*/
		else if((int)ch==13&&m==0&&(a[y-2][x]=='!'||a[y-2][x-2]=='!'||a[y-3][x-1]=='!'))
		{
			gotoxy(1,22);
			printf("黎夫人%c:村里好多人都不见了,还有我的老伴,你能帮我找找吗?  %c",2,31);
	        gotoxy(1,23);printf("%c 好,我帮你找找吧!",16);
            gotoxy(2,24);printf(" 不了,我还有事!");
	        ch_1=getch();
	        while(ch_1!=13)
			{
	         if(ch_1==a_2)
			 {
	           gotoxy(1,23);printf(" ");
	           gotoxy(1,24);printf("%c",16);
	           n=2;
			 }
	         if(ch_1==a_1)
			 {
	           gotoxy(1,24);printf(" ");
	           gotoxy(1,23);printf("%c",16);
			   n=1;
			 }
	           ch_1=getch();
			}
			if(n==1)
			{
			gotoxy(1,22);printf("                                                                   \n                   \n                    ");
			gotoxy(1,22);printf("黎夫人%c:他们去了外面的一个山洞里,就再也没有回来过了!%c",2,31);
			ch_2=getch();
			if(ch_2==13)
			{
			gotoxy(1,22);printf("                                                         \n                         \n                       ");
			gotoxy(1,22);printf("你接到一个任务:去山洞找失踪的人们!");
			m=1;
			dalay(2);
			gotoxy(1,22);printf("                                         ");
			}
			}
			else if(n==2)
			{
			gotoxy(1,22);printf("                                                                        \n                      \n                       ");
			gotoxy(1,22);printf("黎夫人%c:那我还是另找它人吧!%c",2,31);
			dalay(1);
			gotoxy(1,22);printf("                                                       ");
			}
			n=1;
		}
		else if((int)ch==13&&m==2&&(a[y-2][x]=='!'||a[y-2][x-2]=='!'||a[y-3][x-1]=='!'))
		{
			gotoxy(1,22);
			printf("黎夫人%c:这把雀画弓就送给你吧!",2);
			save(man.weapon,3);
			m=3;
			dalay(1);
			printf("黎夫人%c:谢谢你救出这么多村民,但怎么没见我老伴回来呢!",2);
			dalay(1);
			printf("黎夫人%c:肯定是黑山老妖把他抓去了,你去帮我救他吧!         ",2);
			dalay(1);
			gotoxy(1,22);
			printf("                                                                      ");
		}
		else if((int)ch==13&&m==4&&(a[y-2][x]=='!'||a[y-2][x-2]=='!'||a[y-3][x-1]=='!'))
		{
			gotoxy(1,22);
			printf("黎夫人%c:这把降魔弓就送给你吧!",2);
			save(man.weapon,4);
			m=5;
			dalay(1);
			printf("黎夫人%c:谢谢你把大伙都救出来了!     ",2);
			dalay(1);
			gotoxy(1,22);
			printf("                                                                      ");
		}
		else if((int)ch==13&&(m==1||m==3)&&(a[y-2][x]=='!'||a[y-2][x-2]=='!'||a[y-3][x-1]=='!'))
		{
			gotoxy(1,22);
			printf("黎夫人%c:你去山洞救救他们吧,谢谢你了,壮士!",2);
			dalay(1);
			gotoxy(1,22);
			printf("                                           ");
		}
		else if((int)ch==13&&m==5&&(a[y-2][x]=='!'||a[y-2][x-2]=='!'||a[y-3][x-1]=='!'))
		{
			gotoxy(1,22);
			printf("黎夫人%c:你把全村的人都找回来了,太感谢你了!",2);
			dalay(1);
			gotoxy(1,22);
			printf("                                              ");
		}
		else if(ch==look)
		{
			man_look();
			m1=1;
			map_1(x,y);
		}

		//隐藏的金钱任务
		else if((int)ch==13&&x==2&&y==3&&m2==0)
		{
			man.menoy=man.menoy+100;
			gotoxy(1,22);printf("%s%c: 哈哈,我找到了100个金币!%c",man.name,1,31);
			getch();
			gotoxy(1,22);printf("                                   ");
			gotoxy(1,22);m2=1;
		}
	}
	if(x==70)
	{
		map_2(x1,y1);
	}
}

void map_2(int x1,int y1)           //第二张地图
{
	time_t t;
	int i,j;
	char a[20][70],ch;
    srand(time(&t));
 /*全部变空格*/
	for(i=0;i<20;i++)
		for(j=0;j<70;j++)
			a[i][j]=' ';
/*围墙设置*/
	for(j=0;j<70;j++)
	{
		a[0][j]='#';
		a[19][j]='#';
	}
	for(i=0;i<20;i++)
	{
		a[i][0]='#';
		a[i][69]='#';
	}
/*建筑房屋*/
	for(j=8;j<16;j++)//左边
	{
		a[3][j]='#';
		a[4][j]='#';
		a[15][j]='#';
		a[16][j]='#';
	}
	for(j=1;j<24;j++)
	{
		a[7][j]='#';
	}
	for(j=1;j<11;j++)
	{
		a[6][j*2]='*';
	}
	for(i=1;i<7;i++)
	{
		a[i][23]='#';
	}
	for(j=57;j<69;j++)
	{
		a[7][j]='#';
	}
	for(i=1;i<7;i++)
	{
		a[i][57]='#';
	}
/*设置出口*/
	a[10][0]=' ';
	a[4][23]=' ';
	a[0][40]=' ';
	a[19][40]=' ';
	a[10][69]=' ';
	a[7][62]=' ';
	//相子的设置
	a[1][65]='$';
	a[1][66]='$';
	a[2][65]='$';
	a[2][66]='$';
	a[1][64]='$';
	a[2][64]='$';
/*NPC的设置*/
	a[5][12]='!';
	a[17][12]='&';
/*以背景色输出*/
	system("cls");
    system("color 2f");
	printf("\t\t\t\t野外\n");
	for(i=0;i<20;i++)
	{
    for(j=0;j<70;j++)
		printf("%c",a[i][j]);
	printf("\n");
	}
	game_show();
	gotoxy(x1,y1);printf("%c",1);
	while(x1>1&&x1<70&&y1>2&&y1<21)
	{
		ch=getch();
	/*人物的移动*/
		if( ((int)ch==a_1) && (a[y1-3][x1-1]==' ') )
		{
			gotoxy(x1,y1);printf(" ");
			y1=y1-1;
			gotoxy(x1,y1);printf("%c",1);
			gotoxy(1,22);
		}
		else if( ((int)ch==a_4) && (a[y1-2][x1]==' ') )
		{
			gotoxy(x1,y1);printf(" ");
			x1=x1+1;
			gotoxy(x1,y1);printf("%c",1);
			gotoxy(1,22);
		}
		else if( ((int)ch==a_3) && (a[y1-2][x1-2]==' ') )
		{
			gotoxy(x1,y1);printf(" ");
			x1=x1-1;
			gotoxy(x1,y1);printf("%c",1);
			gotoxy(1,22);
		}
		else if( ((int)ch==a_2) && (a[y1-1][x1-1]==' ') )
		{
			gotoxy(x1,y1);printf(" ");
			y1=y1+1;
			gotoxy(x1,y1);printf("%c",1);
			gotoxy(1,22);
		}
        if(m3==0&&ch==13&&(a[y1-2][x1]=='$'||a[y1-2][x1-2]=='$'||a[y1-3][x1-1]=='$'))
		{
			gotoxy(1,22);printf("你找到一把铁匠胎弓!");
			m3=1;save(man.weapon,2);
			dalay(1);
			gotoxy(1,22);printf("                    ");
		}
        if(ch==13&&(a[y1-2][x1]=='!'||a[y1-2][x1-2]=='!'||a[y1-3][x1-1]=='!'))
		{
			gotoxy(1,22);printf("荷花:现在这个年头啊,喂点鸡都要被狼吃!");
			dalay(1);
			gotoxy(1,22);printf("                                      ");
		}
		if(ch==look)
		{
		  man_look();
		  map_2(x1,y1);
		}
		if(  7==rand()%20  )
		{
		  enter(0);
		  attack(0);
		  getch();
		  map_2(x1,y1);
		}
	}
	if(x1==1)
	{
		map_1(69,12);
	}
	if(x1==70)
	{
		map_3(x2,y2);
	}
	if(y1==2)
	{
		map_4(41,20);
	}
	if(y1==21)
	{
		map_6(41,3);
	}
}
void map_3(int x,int y)   //打四个BOSS的地图

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -