📄 main.c
字号:
#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 + -