基础功能实现
对于一个迷宫游戏,最重要的功能就是要让角色实时移动。在这里,我们可以利用getch()函数。但是这里我们用另外一个函数——GetAsyncKeyState。这个函数更加方便,不懂的可以自行再去搜索。
void control(char mp[105][105]){ //mp是当前地图
while(true){
Sleep(60);
if(KD(87)&&!check(mp,ix-1,iy)){ix--;if(!check(mp,monster_x-1,monster_y)){monster_x--;}break;}
if(KD(65)&&!check(mp,ix,iy-1)){iy--;if(!check(mp,monster_x,monster_y-1)){monster_y--;}break;}
if(KD(83)&&!check(mp,ix+1,iy)){ix++;if(!check(mp,monster_x+1,monster_y)){monster_x++;}break;}
if(KD(68)&&!check(mp,ix,iy+1)){iy++;if(!check(mp,monster_x,monster_y+1)){monster_y++;}break;}
}
至于里面的check函数就根据自己的设定编写即可。这里的KD其实就是前面的GetAsyncKeyState函数(使用了define缩短代码长度)。KD中的值为键值,详细可自行搜索。
除此之外,我们在让角色坐标移动的同时要让地图实时更新。打印函数如下。
void print(char mp[105][105],int ix,int iy,int n,int m){
pair<int,int> AB;
AB = get_AB(mp,n,m);
for(int i = 0;i < n;i++){
for(int j = 0;j < m;j++){
bool flag = 0;
//视野功能
if(!(abs(ix-i) <= eye*0.7))flag = 1;
if(!(abs(iy-j) <= eye))flag = 1;
//圆形视野
//if(!(abs(ix-i)*abs(ix-i)+abs(iy-j)*abs(iy-j)*0.3<=eye*eye))flag = 1;
if(eye == -1)flag = 0;
if(ix == i && iy == j){
cout << 'i';
continue;
}
if(flag)cout << ' ';
else cout << (mp[i][j] == '&' ? ' ' : mp[i][j]);
}
cout << '\n';
}
}
拓展
做完基本功能后,你会发现这个游戏很平庸。
下面这些函数可以帮助你优化自己的程序
隐藏光标
void HideCursor(){
CONSOLE_CURSOR_INFO cursor_info = {1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
缓慢输出
void slowout(char *p,int t){
while(1){
if(*p != 0)cout << *p;
else break;
Sleep(t);
*p++;
}
}
更改颜色
int changecolor(string text,int r,int g,int b){
HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
if(hOut==INVALID_HANDLE_VALUE) return GetLastError();
DWORD dwMode = 0;
if(!GetConsoleMode(hOut,&dwMode)) return GetLastError();
dwMode |= 0x0004;
if(!SetConsoleMode(hOut,dwMode)) return GetLastError();
wprintf(L"\x1b[38;2;%d;%d;%dm\x1b[48;2;%d;%d;%dm",r,g,b,12,12,12);
printf(text.c_str());
wprintf(L"\x1b[38;2;%d;%d;%dm\x1b[48;2;%d;%d;%dm",204,204,204,12,12,12);
return 0;
}
作者程序
比较史山。见谅。
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
#define KD(VK_NONAME) ((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)
#define cls system("cls")
#define init ix = 1,iy = 1,have_mon = 0,monster_x = -1,monster_y = -1,al_monster_x = -1,al_monster_y = -1,sw_open = 0,sw_x = -1,sw_y = -1,get_key = 0,get_small_key = 0,eye = -1,open = 0,get_water = 0,o1x=-1,o1y=-1,o2x=-1,o2y=-1,s_o1x=-1,s_o1y=-1,s_o2x=-1,s_o2y=-1
#define init_al_mon while(!mp18mon.empty())mp18mon.pop();mp18mon.push({10,7}),mp18mon.push({10,8}),mp18mon.push({10,9}),mp18mon.push({10,10}),mp18mon.push({10,11}),mp18mon.push({10,10}),mp18mon.push({10,9}),mp18mon.push({10,8}),mp18mon.push({10,7}); while(!mp19mon.empty())mp19mon.pop();mp19mon.push({1,4}),mp19mon.push({1,5}),mp19mon.push({1,6}),mp19mon.push({1,7}),mp19mon.push({1,8}),mp19mon.push({1,9}),mp19mon.push({1,8}),mp19mon.push({1,7}),mp19mon.push({1,6}),mp19mon.push({1,5}),mp19mon.push({1,4});
using namespace std;
int level_sum;
char backlevel[50][105][105] = {};
int ix = 1,iy = 1,fx,fy;
int o1x,o1y,o2x,o2y;
int s_o1x,s_o1y,s_o2x,s_o2y;
int monster_x,monster_y;
int al_monster_x,al_monster_y;
int sw_x,sw_y;
int eye = -1;
bool sw_open = 0;
bool open = 0;
bool get_water = 0;
bool get_key = 0;
bool get_small_key = 0;
bool accepted[105],open_level[105];
bool goback = 0;
bool have_mon = 0;
char mp1[105][105] = {{'#','#','#','#','#','#','#','#','#','#'},
{'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#',' ',' ',' ',' ',' ',' ',' ',' ','F'},
{'#','#','#','#','#','#','#','#','#','#'}};
char mp2[105][105] = {{'#','#','#','#','#','#','#','#','F','#'},
{'#',' ','#',' ',' ',' ',' ','#',' ','#'},
{'#',' ','#',' ','#','#',' ','#',' ','#'},
{'#',' ','#',' ','#',' ',' ','#',' ','#'},
{'#',' ','#',' ','#',' ','#','#',' ','#'},
{'#',' ','#',' ','#',' ','#','#',' ','#'},
{'#',' ',' ',' ','#',' ',' ',' ',' ','#'},
{'#','#','#','#','#','#','#','#','#','#'}};
char mp3[105][105] = {{'#','#','#','#','#','#','#','#','#','#','#','F','#'},
{'#',' ','#',' ','#',' ','#',' ',' ',' ','#',' ','#'},
{'#',' ',' ',' ','#',' ',' ','#','#',' ','#',' ','#'},
{'#',' ','#',' ',' ',' ','#','#',' ',' ','#',' ','#'},
{'#',' ','#','#','#',' ','#',' ','#',' ','#',' ','#'},
{'#',' ','#',' ','#','#',' ','#','#',' ',' ',' ','#'},
{'#',' ','#',' ',' ',' ',' ',' ',' ',' ','#','#','#'},
{'#',' ','#','#',' ','#',' ','#',' ','#','#',' ','#'},
{'#',' ',' ',' ',' ','#',' ','#',' ',' ',' ',' ','#'},
{'#','#','#','#','#','#','#','#','#','#','#','#','#'}};
char mp4[105][105] = {{'#','#','#','#','#','#','#','#','#','#','#','F','#'},
{'#',' ','#',' ','#','K',' ','#',' ',' ','#',' ','#'},
{'#',' ',' ',' ','#','#',' ','#','#',' ',' ',' ','#'},
{'#',' ','#',' ',' ',' ',' ','#',' ',' ','#','#','#'},
{'#',' ','#','#','#',' ',' ',' ','#',' ','#',' ','#'},
{'#',' ','#',' ','#','#','#','#','#',' ','#',' ','#'},
{'#',' ','#',' ',' ',' ',' ','D',' ',' ','#',' ','#'},
{'#',' ','#','#',' ','#',' ','#',' ','#','#',' ','#'},
{'#',' ',' ',' ',' ','#',' ','#',' ',' ',' ',' ','#'},
{'#','#','#','#','#','#','#','#','#','#','#','#','#'}};
char mp5[105][105] = {{'#','#','#','#','#','#','#','#','#','#','#','#','#'},
{'#',' ',' ',' ','#','K',' ',' ',' ',' ','#',' ','#'},
{'#',' ','#',' ','#','D','#','#','#',' ',' ',' ','#'},
{'#',' ','#',' ',' ',' ','#',' ',' ',' ','#','#','#'},
{'#',' ','#','#','#',' ',' ',' ','#',' ','#',' ','F'},
{'#',' ','#',' ','#','#','#','#','#',' ','#',' ','#'},
{'#',' ','#',' ',' ',' ',' ','#',' ',' ','#',' ','#'},
{'#',' ','#','#','D','#',' ','#','D','#','#',' ','#'},
{'#',' ',' ',' ',' ','#',' ','#',' ',' ',' ',' ','#'},
{'#','#','#','#','#','#','#','#','#','#','#','#','#'}};
char mp6[105][105] = {{'#','#','#','#','#','#','#','#','#','#','#','#','#'},
{'#',' ',' ',' ','#','K',' ',' ',' ',' ','#','O','#'},
{'#','#','#',' ','#','#','#','#','#',' ','D',' ','#'},
{'#','O','#',' ',' ',' ','#',' ',' ',' ','#','#','#'},
{'#',' ','#','#','#',' ',' ',' ','#',' ','#',' ','F'},
{'#',' ','#',' ','#','#','#','#','#',' ','#',' ','#'},
{'#',' ','#',' ',' ',' ',' ','#',' ',' ','#',' ','#'},
{'#',' ','#',' ','#','#',' ','#','#','#','#',' ','#'},
{'#',' ',' ',' ',' ','#',' ',' ',' ',' ',' ',' ','#'},
{'#','#','#','#','#','#','#','#','#','#','#','#','#'}};
char mp7[105][105] = {{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'},
{'#',' ',' ',' ','#',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#',' ','#',' ','#',' ','#','#','#','#','#','#','#',' ','#'},
{'#',' ','#',' ','#','K','#','O',' ',' ',' ',' ','#',' ','#'},
{'#',' ','#',' ','#','#','#','#',' ','#','#',' ',' ',' ','#'},
{'#',' ','#','#','#',' ',' ',' ',' ','#','#','#','#','#','#'},
{'#',' ','#','O','#','#','#',' ',' ',' ','#',' ',' ',' ','F'},
{'#',' ','#',' ',' ',' ',' ','#','#','#','#',' ','#','#','#'},
{'#',' ','#',' ','#','#',' ','#',' ',' ','D',' ','#',' ','#'},
{'#',' ','#',' ','#','#',' ','#',' ','#','#','#','#',' ','#'},
{'#',' ',' ',' ',' ','#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'}};
char mp8[105][105] = {{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'},
{'#',' ',' ',' ','#',' ',' ',' ',' ','#',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#',' ','#',' ','#',' ','#','#',' ','#',' ','#','#','#','#','#','#','#',' ','#'},
{'#',' ','#',' ','#',' ',' ',' ','#','#','F','#',' ',' ',' ',' ',' ','#',' ','#'},
{'#',' ','#',' ','#','#','#',' ',' ','#','#','#','#',' ','#','#',' ','d',' ','#'},
{'#',' ','#',' ','D',' ','#',' ','#','#',' ',' ',' ',' ',' ','#','#','#','#','#'},
{'#',' ','#','D','#',' ','#',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ','#'},
{'#',' ','#',' ','#',' ',' ',' ','#','#','#','#',' ',' ',' ',' ',' ','#',' ','#'},
{'#',' ','#',' ','O','#','#','#','#',' ',' ',' ',' ','#','#','#','#','#',' ','#'},
{'#',' ','#','#','#','#','#','#','O','#','#','#',' ',' ','k','#',' ',' ',' ','#'},
{'#',' ','#',' ',' ',' ','#','#',' ',' ',' ',' ','#','#','#','#',' ','#',' ','#'},
{'#',' ','#','K','#',' ','#','#',' ','#','#',' ','#',' ',' ','#',' ','#',' ','#'},
{'#',' ','#','#','#',' ','#','#',' ','#','#',' ','#',' ','#','#','#','#',' ','#'},
{'#',' ',' ',' ',' ',' ','#',' ',' ',' ','#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'}};
char mp9[105][105] = {{'#','#','#','#','#','#','#','#','F','#'},
{'#',' ',' ',' ','A',' ',' ','#',' ','#'},
{'#',' ',' ',' ','#',' ',' ','#',' ','#'},
{'#',' ',' ',' ','#',' ',' ','#',' ','#'},
{'#',' ',' ','O','#',' ','#','#',' ','#'},
{'#',' ',' ',' ','#',' ','#',' ',' ','#'},
{'#',' ','O',' ','#',' ',' ',' ',' ','#'},
{'#','#','#','#','#','#','#','#','#','#'}};
char mp10[105][105] = {{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'},
{'#',' ',' ',' ','#',' ',' ',' ',' ','#',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#',' ','#',' ','#',' ','#','#',' ','#',' ','#','#','#','#','#','#','#',' ','#'},
{'#','A','#',' ','#',' ',' ',' ','#','#','F','#',' ',' ',' ',' ',' ','#',' ','#'},
{'#',' ','#',' ','#','#','#',' ',' ','#','#','#','#',' ','#','#',' ','d',' ','#'},
{'#',' ','#',' ','D',' ','#',' ','#','#',' ',' ',' ',' ',' ','#','#','#','#','#'},
{'#',' ','#',' ','#',' ','#',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ','#'},
{'#',' ','#',' ','#',' ',' ',' ','#','#','#','#',' ','#',' ',' ',' ','#',' ','#'},
{'#',' ','#',' ','O','#','#','#','#','k',' ',' ',' ','#','#','#',' ','#',' ','#'},
{'#',' ','#',' ','#','#','#','#','O','#','#','#',' ',' ',' ','#',' ','#',' ','#'},
{'#',' ','#',' ',' ',' ',' ',' ',' ',' ',' ',' ','#','#',' ','#',' ','#',' ','#'},
{'#',' ','#','D','#',' ','#','#',' ','#','#','D','#',' ',' ',' ',' ','#',' ','#'},
{'#',' ','#','K','#',' ','#','#',' ','#','#',' ','#','#','#','#','#','#',' ','#'},
{'#',' ',' ',' ','#',' ','#',' ',' ',' ','#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'}};
char mp11[105][105] ={{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'},
{'#',' ',' ',' ',' ',' ',' ',' ',' ','#',' ',' ',' ',' ','#',' ','D',' ',' ',' ',' ',' ','#'},
{'#',' ','#','#','#',' ','#','#',' ',' ',' ','#','#','#','#',' ','#','#','#','#','#',' ','#'},
{'#',' ',' ',' ','#',' ',' ','o','#','#',' ','#',' ',' ',' ',' ',' ','#','F','#','#',' ','#'},
{'#','#','#',' ','#','#','#','#','#','#',' ',' ',' ','#','#','#',' ','#',' ',' ','d',' ','#'},
{'#','O','#',' ','D',' ','#',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#'},
{'#',' ','#',' ','#',' ','#',' ',' ',' ','#',' ',' ',' ','#','#','#',' ','#',' ',' ',' ','#'},
{'#',' ','#',' ','#',' ',' ',' ','#',' ','#','#','#','#','#',' ','#',' ',' ',' ','#',' ','#'},
{'#',' ','#',' ',' ',' ','#',' ','#',' ','#',' ',' ','K','#',' ','#','#','#',' ','#',' ','#'},
{'#',' ','#',' ','#','#','#','#','#',' ','#','O','#','#','#',' ',' ',' ','#',' ','#',' ','#'},
{'#',' ','#',' ',' ',' ',' ',' ','#',' ','#','#',' ',' ',' ','#','#',' ','#',' ','#',' ','#'},
{'#','A','#',' ','#',' ','#','#',' ',' ','#',' ','#','#',' ','D',' ',' ',' ',' ','#',' ','#'},
{'#',' ','#',' ','#',' ','#','k','#','#','#',' ','#','#',' ','#','#','#','#','#','#',' ','#'},
{'#',' ',' ',' ','#',' ','#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#','o',' ',' ',' ','#'},
{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'}};
char mp12 [105][105]={{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'},
{'#',' ',' ','#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#',' ',' ',' ',' ',' ',' ','#'},
{'#',' ',' ','#','#',' ','#','#','#','#','#','#',' ',' ','#','#',' ','#','#','#','#','d','#'},
{'#',' ','#',' ','#',' ',' ',' ',' ',' ',' ','#','#',' ',' ',' ',' ','#','F','#','#',' ','#'},
{'#',' ','#',' ',' ','#','#','#',' ','#',' ',' ',' ','#','#','#','#','#',' ','D',' ',' ','#'},
{'#',' ','#',' ',' ',' ','#',' ',' ','#','#','#',' ',' ',' ',' ',' ',' ','#','#','#','#','#'},
{'#',' ',' ',' ',' ',' ','#',' ',' ',' ',' ',' ',' ',' ','#','#','#',' ','#',' ',' ',' ','#'},
{'#',' ',' ','#',' ',' ',' ',' ','#',' ','#',' ','#',' ','#','k','#',' ',' ',' ','#',' ','#'},
{'#',' ',' ','#',' ',' ',' ',' ','#',' ','#',' ','#',' ','#',' ','#','#','#',' ','#',' ','#'},
{'#',' ',' ',' ','#','#','#','#','#','#','#',' ','#','#','#',' ',' ',' ','#',' ','#',' ','#'},
{'#',' ',' ',' ',' ',' ',' ',' ','#',' ','#',' ',' ',' ',' ','#','#',' ','#',' ','#',' ','#'},
{'#',' ',' ',' ','#',' ','#','#','#',' ','#',' ','#','#',' ',' ',' ',' ',' ',' ','#',' ','#'},
{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ','#',' ','#','#',' ','#','#','#','#','#','#',' ','#'},
{'#',' ',' ',' ','#',' ','#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#','K',' ',' ',' ','#'},
{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'}};
char mp13[105][105] = {{'#','#','#','#','#','#','#','#','#','#'},
{'#',' ',' ',' ',' ',' ',' ','M',' ','#'},
{'#',' ',' ',' ',' ',' ',' ','M',' ','#'},
{'#',' ',' ',' ',' ',' ',' ','#',' ','#'},
{'#',' ',' ',' ',' ',' ',' ','#',' ','#'},
{'#','W',' ',' ',' ',' ',' ','#',' ','#'},
{'#','W','W',' ',' ',' ',' ','#',' ','F'},
{'#','#','#','#','#','#','#','#','#','#'}};
char mp14[105][105] ={{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'},
{'#',' ','W','#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','o','#',' ',' ',' ','W','#',' ','#'},
{'#',' ',' ','#','#',' ','#','#','#','#','#','#',' ',' ','#','#',' ','#','#','#','#',' ','#'},
{'#',' ','#',' ',' ',' ',' ','#',' ',' ',' ','#','#',' ',' ','d',' ','#','#','F','#',' ','#'},
{'#',' ',' ',' ','#','#','#','#',' ','#',' ',' ',' ','#','#','#','#','#','#','D','M',' ','#'},
{'#',' ','#',' ','#','O',' ',' ',' ','#','#','#',' ',' ',' ',' ','#','#','#','#','#',' ','#'},
{'#',' ','#',' ',' ','#','#',' ',' ',' ',' ',' ',' ',' ','#',' ',' ',' ','#','#','#',' ','#'},
{'#',' ',' ','#',' ',' ','#',' ','#',' ','#',' ','#',' ','#','#',' ',' ',' ','#','#',' ','#'},
{'#',' ',' ','#',' ',' ','M',' ','#',' ','#',' ','#',' ','#',' ','#','#',' ',' ','#',' ','#'},
{'#',' ',' ',' ','#','#','#','#','#','#','#','#','#','#','#',' ',' ',' ','#','M','#',' ','#'},
{'#',' ','#',' ',' ',' ',' ','W','#','W','#',' ',' ',' ',' ','#',' ','#','#',' ','#',' ','#'},
{'#',' ','#',' ','#',' ','#','#','#',' ','#',' ','#','#',' ','#',' ',' ',' ',' ','#',' ','#'},
{'#','#','#',' ','#',' ','#',' ',' ',' ','D',' ','#','#',' ','#','#','#','#',' ','#','M','#'},
{'#','k',' ',' ','#','o','#',' ',' ',' ','#',' ','#',' ',' ',' ','O','#','K',' ','A',' ','#'},
{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'}};
char mp15[105][105] = {{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'},
{'#',' ',' ',' ','#',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#',' ','#',' ','#',' ','#','#','#','#','#','#','#',' ','#'},
{'#',' ','#',' ','#','K','#',' ',' ',' ',' ',' ','#',' ','#'},
{'#',' ','#',' ','#','#','#','#',' ','#','#',' ',' ',' ','#'},
{'#',' ','#',' ','#',' ',' ',' ',' ','#','#','#','#','#','#'},
{'#',' ','#','#','#','#',' ',' ',' ',' ','#',' ',' ',' ','#'},
{'#',' ','#',' ',' ',' ',' ','#','#','#','#',' ','#','#','#'},
{'#',' ','#',' ','#','#',' ','#',' ',' ',' ',' ','#','F','#'},
{'#',' ','#',' ','#','#',' ','#',' ','#','#','#','#','D','#'},
{'#',' ',' ',' ',' ','#',' ',' ',' ',' ',' ',' ',' ','&','#'},
{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'}};
char mp16[105][105] = {{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'},
{'#',' ',' ',' ','#',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#',' ','#','#','#',' ','#','#','#','#','#','#','#',' ','#'},
{'#',' ','#','O','#','K','#',' ',' ',' ',' ',' ','#',' ','#'},
{'#',' ','#',' ','#','#','#',' ','O','#','#',' ',' ',' ','#'},
{'#',' ','#',' ',' ',' ',' ',' ',' ','#','#','#','#','#','#'},
{'#',' ','#','#','#',' ','#','#',' ',' ','#',' ',' ','F','#'},
{'#',' ','#',' ',' ',' ',' ','#','#','#','#',' ','#','#','#'},
{'#',' ','#',' ','#','#','D','#',' ','M',' ',' ','#','W','#'},
{'#',' ',' ',' ','#','#',' ','#',' ','#','#','#','#','&','#'},
{'#',' ','#',' ',' ','#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'}};
char mp17[105][105] ={{'M','M','M','M','M','M','M','M','M','M','M','M','M','M','M','M','M','M','M','M','M','M','M'},
{'M',' ','W','M',' ',' ',' ','M',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','M'},
{'M',' ','M','M',' ','M',' ',' ',' ','M','M','M','M','M','M','M','M','M',' ','M','M',' ','M'},
{'M',' ',' ','M',' ','M','M','M',' ','M','M','M','M','M',' ',' ',' ','M',' ',' ','M',' ','M'},
{'M','M',' ',' ',' ',' ','M','M',' ','M',' ',' ',' ','M',' ','M',' ','M','M',' ','M',' ','M'},
{'M','M','d','M','M',' ','M','M','k','M',' ','M',' ',' ',' ','M',' ',' ',' ','M','M',' ','M'},
{'M',' ',' ','M','M',' ',' ','M','M','M',' ','M',' ','M','M',' ',' ','M',' ','M',' ',' ','M'},
{'M',' ','M','M','M','M',' ','M',' ',' ',' ',' ','M','M','M','M','M','M',' ','M','M',' ','M'},
{'M',' ','M','M','M','M',' ','M',' ','M','M','M','M','O','M','M','M','O',' ',' ','M',' ','M'},
{'M',' ','M','M','M',' ',' ',' ',' ','M','M','M','M',' ',' ',' ','M','M',' ','M',' ',' ','M'},
{'M',' ','M','M','M',' ','M','M','M','M','M','M','M','M','M',' ','M','M','M','M',' ','M','M'},
{'M',' ','M','M','M','M','M','M','M',' ',' ',' ','M',' ','M',' ',' ','M','K','#','D','#','#'},
{'M',' ','M',' ',' ',' ','M',' ',' ',' ','M',' ','M',' ','M','M',' ','M',' ','#','M',' ','#'},
{'M',' ',' ',' ','M',' ',' ',' ','M','M','M',' ',' ',' ','M','M',' ',' ',' ','#','#','F','#'},
{'M','M','M','M','M','M','M','M','M','M','M','M','M','M','M','M','M','M','M','M','#','#','#'}};
char mp18[105][105] = {{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'},
{'#',' ','#','O','#',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#',' ','#','O','#',' ','#','#','#','#','#','#','#',' ','#'},
{'#',' ','#','#','#','*','#',' ',' ',' ',' ',' ','#',' ','#'},
{'#',' ','#',' ','#','#','#',' ','#','#','#',' ',' ',' ','#'},
{'#',' ','#',' ','M','M',' ',' ',' ',' ','#','#','#','#','#'},
{'#',' ','#',' ','M','M',' ',' ',' ',' ','#',' ',' ','K','#'},
{'#',' ','#',' ','M','M',' ',' ',' ',' ','|',' ','#','#','#'},
{'#',' ','#',' ','#','#','-','#','#','#','#',' ','#','F','#'},
{'#',' ',' ',' ','#','#',' ','#','#',' ','#','#','#',' ','#'},
{'#',' ','#',' ','P','#',' ',' ',' ',' ',' ',' ','D',' ','#'},
{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'}};
queue<pair<int,int>> mp18mon;
char mp19[105][105] ={{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'},
{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#',' ','A',' ',' ','D',' ','#'},
{'#',' ','#','#','#','#','-','#','#','#','#','#',' ',' ','#','#',' ','#','#','#','#',' ','#'},
{'#',' ',' ','#',' ','#',' ','#',' ',' ',' ','#','#',' ','K','#',' ','#','#','F','#',' ','#'},
{'#','#',' ',' ',' ',' ','#','#',' ','#',' ',' ',' ','#','#','#','M','#','#',' ','d',' ','#'},
{'#',' ',' ','#','#',' ',' ',' ',' ','#','#','#',' ',' ',' ',' ',' ',' ','#','#','#',' ','#'},
{'#',' ','#','#','O','#','#',' ',' ',' ','#',' ','#','#','#',' ',' ',' ','#','#','#',' ','#'},
{'#',' ',' ','#',' ',' ','#',' ','#','M','#',' ',' ',' ','#','#','#',' ',' ','#','#',' ','#'},
{'#','#',' ','#',' ',' ',' ',' ','#','M','M',' ','#',' ','#',' ','#','#',' ',' ','#',' ','#'},
{'#',' ',' ',' ','#','#','#','#','#','#','#','#','#','#','#',' ',' ',' ','#','M','#',' ','#'},
{'#',' ',' ',' ',' ',' ',' ',' ','#','k','#',' ',' ','M',' ',' ',' ','#','#',' ','#','#','#'},
{'#','D','#','#','#',' ','#','#','#',' ','#',' ',' ','#',' ','#',' ',' ',' ',' ',' ',' ','#'},
{'#',' ','#','P','#',' ','#',' ',' ',' ','|',' ','#','#',' ','#','#','#','#',' ','#',' ','#'},
{'#',' ',' ',' ','#',' ','#',' ',' ',' ','#',' ','#',' ',' ',' ','O','#',' ',' ','#','*','#'},
{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'}};
queue<pair<int,int>> mp19mon;
void position(short x = 0,short y = 0){
HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord = {y,x};
SetConsoleCursorPosition(hout,coord);
}
int changecolor(string text,int r,int g,int b){
HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
if(hOut==INVALID_HANDLE_VALUE) return GetLastError();
DWORD dwMode = 0;
if(!GetConsoleMode(hOut,&dwMode)) return GetLastError();
dwMode |= 0x0004;
if(!SetConsoleMode(hOut,dwMode)) return GetLastError();
wprintf(L"\x1b[38;2;%d;%d;%dm\x1b[48;2;%d;%d;%dm",r,g,b,12,12,12);
printf(text.c_str());
wprintf(L"\x1b[38;2;%d;%d;%dm\x1b[48;2;%d;%d;%dm",204,204,204,12,12,12);
return 0;
}
pair<int,int> get_AB(char mp[105][105],int n,int m){
for(int i = 0;i < n;i++){
for(int j = 0;j < m;j++){
if(mp[i][j] == 'A' || mp[i][j] == 'B'){
return {i,j};
}
}
}
return {-1,-1};
}
void print(char mp[105][105],int ix,int iy,int n,int m){
pair<int,int> AB;
AB = get_AB(mp,n,m);
for(int i = 0;i < n;i++){
for(int j = 0;j < m;j++){
if(mp[ix][iy] == 'P' && !get_water){
get_water = 1;
}
else if(mp[ix][iy] == 'W' && !get_water){
get_water = 1;
mp[ix][iy] = ' ';
}
else if(mp[ix][iy] == 'M'){
get_water = 0;
mp[ix][iy] = ' ';
}
if(i == AB.first && j == AB.second){
mp[i][j] = open?'A':'B';
}
bool flag = 0;
if(!(abs(ix-i) <= eye*0.7))flag = 1;
if(!(abs(iy-j) <= eye))flag = 1;
//if(!(abs(ix-i)*abs(ix-i)+abs(iy-j)*abs(iy-j)*0.3<=eye*eye))flag = 1;
if(eye == -1)flag = 0;
if(ix == i && iy == j){
if(get_water == 1)changecolor("i",30,144,255);
else cout << 'i';
continue;
}
if(flag)cout << ' ';
else if(i == monster_x && j == monster_y && have_mon){
changecolor("&",255,140,0);
continue;
}else if(i == al_monster_x && j == al_monster_y){
changecolor("@",255,140,0);
continue;
}
else if(mp[i][j] == 'P'){
changecolor("P",40,154,255);
continue;
}
else if(mp[i][j] == 'W'){
changecolor("W",30,144,255);
continue;
}
else if(mp[i][j] == 'M'){
changecolor("M",255,0,0);
continue;
}else if(mp[i][j] == '-'){
if(sw_open == 0)changecolor("-",127,255,0);
else cout << '-';
}else if(mp[i][j] == '|'){
if(sw_open == 1)changecolor("|",127,255,0);
else cout << '|';
}
else cout << (mp[i][j] == '&' ? ' ' : mp[i][j]);
}
cout << '\n';
}
}
void HideCursor(){
CONSOLE_CURSOR_INFO cursor_info = {1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void slowout(char *p,int t){
while(1){
if(*p != 0)cout << *p;
else break;
Sleep(t);
*p++;
}
}
bool check(char mp[105][105],int x,int y){
return mp[x][y] == '#' || mp[x][y] == 'D' && !get_key || mp[x][y] == 'd' && !get_small_key || mp[x][y] == '-' && sw_open == 1 || mp[x][y] == '|' && sw_open == 0 || mp[x][y] == 'B';
}
queue<pair<int,int>> q;
int wait = 0;
void control(char mp[105][105],queue<pair<int,int>> &monq = q){
while(true){
Sleep(60);
wait++;
if(wait >= 4){
wait = 0;
monq.push(monq.front());
al_monster_x = monq.front().first;
al_monster_y = monq.front().second;
monq.pop();
}
if(al_monster_x != -1){
print(mp,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO(o)会将你带到另一个O(o)那里\n当AB门为A时可以通过反之无法通过\n&会随着你的移动而移动!";
cout << "\n按C退出关卡\n在*的位置按下空格改变开关门的状态\n橙色的基本都不是什么好东西...";
position();
}
if(ix == al_monster_x && iy == al_monster_y){
ix = 1,iy = 1;
}
if(KD(87)&&!check(mp,ix-1,iy)){ix--;if(!check(mp,monster_x-1,monster_y)){monster_x--;}break;}
if(KD(65)&&!check(mp,ix,iy-1)){iy--;if(!check(mp,monster_x,monster_y-1)){monster_y--;}break;}
if(KD(83)&&!check(mp,ix+1,iy)){ix++;if(!check(mp,monster_x+1,monster_y)){monster_x++;}break;}
if(KD(68)&&!check(mp,ix,iy+1)){iy++;if(!check(mp,monster_x,monster_y+1)){monster_y++;}break;}
if(KD(32) && ix == sw_x && iy == sw_y){sw_open = !sw_open,Sleep(50);break;}
if(KD(67)){goback = 1;return;}
}
if(mp[ix][iy] == 'M' && !get_water){
ix = 1,iy = 1;
}
if(ix == monster_x && iy == monster_y){
ix = 1,iy = 1;
}
if(mp[ix][iy] == 'K'){
mp[ix][iy] = ' ';
get_key = 1;
}
if(mp[ix][iy] == 'k'){
mp[ix][iy] = ' ';
get_small_key = 1;
}
if(ix == o1x && iy == o1y){
ix = o2x,iy = o2y;
}else if(ix == o2x && iy == o2y){
ix = o1x,iy = o1y;
}
if(ix == s_o1x && iy == s_o1y){
ix = s_o2x,iy = s_o2y;
}else if(ix == s_o2x && iy == s_o2y){
ix = s_o1x,iy = s_o1y;
}
open = !open;
}
pair<int,int> getf(char mp[105][105],int n,int m){
for(int i = 0;i < n;i++){
for(int j = 0;j < m;j++){
if(mp[i][j] == 'F')return {i,j};
}
}
}
pair<pair<int,int>,pair<int,int>> geto(char mp[105][105],int n,int m){
int x1=-1,x2=-1,y1=-1,y2=-1;
for(int i = 0;i < n;i++){
for(int j = 0;j < m;j++){
if(mp[i][j] == 'O')x1 == -1?x1 = i,y1 = j:x2 = i,y2 = j;
}
}
return {{x1,y1},{x2,y2}};
}
pair<pair<int,int>,pair<int,int>> gets_o(char mp[105][105],int n,int m){
int x1=-1,x2=-1,y1=-1,y2=-1;
for(int i = 0;i < n;i++){
for(int j = 0;j < m;j++){
if(mp[i][j] == 'o')x1 == -1?x1 = i,y1 = j:x2 = i,y2 = j;
}
}
return {{x1,y1},{x2,y2}};
}
pair<int,int> p;
pair<pair<int,int>,pair<int,int>> po;
pair<pair<int,int>,pair<int,int>> ps_o;
void O(char mp[105][105]){
po = geto(mp,20,25);
o1x = po.first.first;
o1y = po.first.second;
o2x = po.second.first;
o2y = po.second.second;
ps_o = gets_o(mp,20,25);
s_o1x = ps_o.first.first;
s_o1y = ps_o.first.second;
s_o2x = ps_o.second.first;
s_o2y = ps_o.second.second;
}
pair<int,int> getMonsterXY(char mp[105][105]){
for(int i = 1;i <= 104;i++){
for(int j = 1;j <= 104;j++){
if(mp[i][j] == '&'){
return {i,j};
}
}
}
return {-1,-1};
}
pair<int,int> getswitch(char mp[105][105]){
for(int i = 0;i <= 104;i++){
for(int j = 0;j <= 104;j++){
if(mp[i][j] == '*'){
return {i,j};
}
}
}
return {-1,-1};
}
void init_mp(char (&mp)[105][105],int idx){
for(int i = 0;i < 100;i++){
for(int j = 0;j < 100;j++){
mp[i][j] = backlevel[idx][i][j];
}
}
}
void readmp(char mp[105][105],int idx){
for(int i = 0;i < 100;i++){
for(int j = 0;j < 100;j++){
backlevel[idx][i][j] = mp[i][j];
}
}
}
void read_allmp(){
q.push({-1,-1});
readmp(mp1,1);
readmp(mp2,2);
readmp(mp3,3);
readmp(mp4,4);
readmp(mp5,5);
readmp(mp6,6);
readmp(mp7,7);
readmp(mp8,8);
readmp(mp9,9);
readmp(mp10,10);
readmp(mp11,11);
readmp(mp12,12);
readmp(mp13,13);
readmp(mp14,14);
readmp(mp15,15);
readmp(mp16,16);
readmp(mp17,17);
readmp(mp18,18);
readmp(mp19,19);
}
void init_map_together(){
init_mp(mp1,1);
init_mp(mp2,2);
init_mp(mp3,3);
init_mp(mp4,4);
init_mp(mp5,5);
init_mp(mp6,6);
init_mp(mp7,7);
init_mp(mp8,8);
init_mp(mp9,9);
init_mp(mp10,10);
init_mp(mp11,11);
init_mp(mp12,12);
init_mp(mp13,13);
init_mp(mp14,14);
init_mp(mp15,15);
init_mp(mp16,16);
init_mp(mp17,17);
init_mp(mp18,18);
init_mp(mp19,19);
}
int main(){
HideCursor();
read_allmp();
//关卡目录
accepted[0] = 1;
open_level[0] = 1;
level_sum = 18;
string op;
while(true){
returnback : ;
goback = 0;
init_map_together();
init_al_mon;
while(true){
keybd_event(VK_RETURN, 0, 0, 0);
keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
cls;
cout << "关卡目录:\n";
cout << "0. 新手教程 ";
changecolor("open\n",107,196,122);
for(int i = 1;i <= level_sum;i++){
printf("%d. 第%d关 ",i,i);
string state;
state = accepted[i - 1] == 1 || accepted[i] == 1 ? "open" : "locked";
if(state == "open")changecolor("open",107,196,122);
else changecolor("locked",255,0,0);
cout << '\n';
}
for(int i = 1;i <= level_sum;i++){
open_level[i] = (accepted[i - 1] == 1 || accepted[i] == 1) ? 1 : 0;
//删去注释可以随意游玩所有关卡
//open_level[i] = 1;
}
cin >> op;
if(open_level[0] && op == "0"){cls;goto level0;}
if(open_level[1] && op == "1"){cls;goto level1;}
if(open_level[2] && op == "2"){cls;goto level2;}
if(open_level[3] && op == "3"){cls;goto level3;}
if(open_level[4] && op == "4"){cls;goto level4;}
if(open_level[5] && op == "5"){cls;goto level5;}
if(open_level[6] && op == "6"){cls;goto level6;}
if(open_level[7] && op == "7"){cls;goto level7;}
if(open_level[8] && op == "8"){cls;goto level8;}
if(open_level[9] && op == "9"){cls;goto level9;}
if(open_level[10] && op == "10"){cls;goto level10;}
if(open_level[11] && op == "11"){cls;goto level11;}
if(open_level[12] && op == "12"){cls;goto level12;}
if(open_level[13] && op == "13"){cls;goto level13;}
if(open_level[14] && op == "14"){cls;goto level14;}
if(open_level[15] && op == "15"){cls;goto level15;}
if(open_level[16] && op == "16"){cls;goto level16;}
if(open_level[17] && op == "17"){cls;goto level17;}
if(open_level[18] && op == "18"){cls;goto level18;}
}
//新手教程
level0:slowout("新手教程",25);
Sleep(1500);
cls;
init;
print(mp1,ix,iy,10,15);
cout << "按WASD移动,F的位置即为终点";
cout << "\n按C退出关卡";
p = getf(mp1,10,15);
fx = p.first;
fy = p.second;
while(true){
control(mp1);
if(goback == 1)goto returnback;
position();
print(mp1,ix,iy,10,15);
cout << "按WASD移动,F的位置即为终点";
cout << "\n按C退出关卡";
//Sleep(100);
if(ix == fx && iy == fy){
cls;
break;
}
}
slowout("非常好!看样子你已经学会了基本操作!",25);
Sleep(1500);
cls;
accepted[0] = 1;
continue;
//第一关
level1:slowout("第一关",100);
Sleep(1500);
cls;
init;
print(mp2,ix,iy,10,15);
cout << "按WASD移动,F的位置即为终点";
cout << "\n按C退出关卡";
p = getf(mp2,10,15);
fx = p.first;
fy = p.second;
while(true){
control(mp2);
if(goback == 1)goto returnback;
position();
print(mp2,ix,iy,10,15);
cout << "按WASD移动,F的位置即为终点";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
accepted[1] = 1;
continue;
//第二关
level2:slowout("第二关",100);
Sleep(1500);
cls;
init;
print(mp3,ix,iy,15,20);
cout << "按WASD移动,F的位置即为终点";
cout << "\n按C退出关卡";
p = getf(mp3,10,15);
fx = p.first;
fy = p.second;
while(true){
control(mp3);
if(goback == 1)goto returnback;
position();
print(mp3,ix,iy,15,20);
cout << "按WASD移动,F的位置即为终点";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
slowout("接下来会有门(D)加入,想要打开门就必须打开开关(K)",10);
Sleep(1500);
cls;
accepted[2] = 1;
continue;
//第三关
level3:slowout("第三关",100);
Sleep(1500);
cls;
init;
print(mp4,ix,iy,15,20);
cout << "按WASD移动,F的位置即为终点,必须获得K才可以通过D";
cout << "\n按C退出关卡";
p = getf(mp3,10,15);
fx = p.first;
fy = p.second;
while(true){
control(mp4);
if(goback == 1)goto returnback;
position();
print(mp4,ix,iy,15,20);
cout << "按WASD移动,F的位置即为终点,必须获得K才可以通过D";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
accepted[3] = 1;
continue;
//第四关
level4:slowout("第四关",100);
Sleep(1500);
cls;
init;
print(mp5,ix,iy,15,20);
cout << "按WASD移动,F的位置即为终点,必须获得K才可以通过D";
cout << "\n按C退出关卡";
p = getf(mp5,15,20);
fx = p.first;
fy = p.second;
while(true){
control(mp5);
if(goback == 1)goto returnback;
position();
print(mp5,ix,iy,15,20);
cout << "按WASD移动,F的位置即为终点,必须获得K才可以通过D";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
slowout("非常好!你已经基本学会了如何对付D和K!\n",10);
slowout("接下来迷宫中出现了传送门O,它会将你带到另一个O那里!\n",10);
Sleep(1500);
cls;
accepted[4] = 1;
continue;
//第五关
level5:slowout("第五关",100);
Sleep(1500);
cls;
init;
print(mp6,ix,iy,15,20);
cout << "按WASD移动,F的位置即为终点,必须获得K才可以通过D\nO会将你带到另一个O那里";
cout << "\n按C退出关卡";
p = getf(mp6,15,20);
fx = p.first;
fy = p.second;
po = geto(mp6,15,20);
o1x = po.first.first;
o1y = po.first.second;
o2x = po.second.first;
o2y = po.second.second;
while(true){
control(mp6);
if(goback == 1)goto returnback;
position();
print(mp6,ix,iy,15,20);
cout << "按WASD移动,F的位置即为终点,必须获得K才可以通过D\nO会将你带到另一个O那里";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
accepted[5] = 1;
continue;
//第六关
level6:slowout("第六关",100);
Sleep(1500);
cls;
init;
print(mp7,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K才可以通过D\nO会将你带到另一个O那里";
cout << "\n按C退出关卡";
p = getf(mp7,20,25);
fx = p.first;
fy = p.second;
po = geto(mp7,20,25);
o1x = po.first.first;
o1y = po.first.second;
o2x = po.second.first;
o2y = po.second.second;
while(true){
control(mp7);
if(goback == 1)goto returnback;
position();
print(mp7,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K才可以通过D\nO会将你带到另一个O那里";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
slowout("门多了一种种类,分为D和d两种,而钥匙自然也就变成了K和k两种",15);
cout << "\n按C退出关卡";
Sleep(1500);
cls;
accepted[6] = 1;
continue;
//第七关
level7:slowout("第七关",100);
Sleep(1500);
cls;
init;
print(mp8,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO会将你带到另一个O那里";
cout << "\n按C退出关卡";
p = getf(mp8,20,25);
fx = p.first;
fy = p.second;
po = geto(mp8,20,25);
o1x = po.first.first;
o1y = po.first.second;
o2x = po.second.first;
o2y = po.second.second;
while(true){
control(mp8);
if(goback == 1)goto returnback;
position();
print(mp8,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO会将你带到另一个O那里";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
slowout("接下来又出现了一种神奇的障碍:AB门,这种门随着你走的步数不断变换,当门为A时可以通过反之无法通过",15);
cout << "\n按C退出关卡";
Sleep(2000);
cls;
accepted[7] = 1;
continue;
//第八关
level8:slowout("第八关",100);
Sleep(1500);
cls;
init;
print(mp9,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO会将你带到另一个O那里\n当AB门为A时可以通过反之无法通过";
cout << "\n按C退出关卡";
p = getf(mp9,20,25);
fx = p.first;
fy = p.second;
po = geto(mp9,20,25);
o1x = po.first.first;
o1y = po.first.second;
o2x = po.second.first;
o2y = po.second.second;
while(true){
control(mp9);
if(goback == 1)goto returnback;
position();
print(mp9,ix,iy,20,15);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO会将你带到另一个O那里\n当AB门为A时可以通过反之无法通过";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
slowout("地图大了,你自然窥不见它的全貌...",20);
Sleep(1500);
cls;
accepted[8] = 1;
continue;
//第九关
level9:slowout("第九关\n",100);
slowout("本关视野:7",40);
Sleep(1500);
cls;
init;
open = 1;
eye = 7;
print(mp10,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO会将你带到另一个O那里\n当AB门为A时可以通过反之无法通过";
cout << "\n按C退出关卡";
p = getf(mp10,20,25);
fx = p.first;
fy = p.second;
po = geto(mp10,20,25);
o1x = po.first.first;
o1y = po.first.second;
o2x = po.second.first;
o2y = po.second.second;
while(true){
control(mp10);
if(goback == 1)goto returnback;
position();
print(mp10,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO会将你带到另一个O那里\n当AB门为A时可以通过反之无法通过";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
slowout("门的种类多了,传送门也不可以拉下",20);
Sleep(1500);
cls;
accepted[9] = 1;
continue;
//第十关
level10:slowout("第十关\n",100);
slowout("本关视野:5",40);
Sleep(1500);
cls;
init;
eye = 5;
open = 1;
print(mp11,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO(o)会将你带到另一个O(o)那里\n当AB门为A时可以通过反之无法通过";
cout << "\n按C退出关卡";
p = getf(mp11,20,25); fx = p.first; fy = p.second;
O(mp11);
while(true){
control(mp11);
if(goback == 1)goto returnback;
position();
print(mp11,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO会将你带到另一个O那里\n当AB门为A时可以通过反之无法通过";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
accepted[10] = 1;
continue;
//第十一关
level11:slowout("特殊关 第十一关 无尽的黑暗\n",100);
slowout("本关视野:2",40);
Sleep(1500);
cls;
init;
eye = 2;
open = 1;
print(mp12,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO(o)会将你带到另一个O(o)那里\n当AB门为A时可以通过反之无法通过";
cout << "\n按C退出关卡";
p = getf(mp12,20,25); fx = p.first; fy = p.second;
while(true){
control(mp12);
if(goback == 1)goto returnback;
position();
print(mp12,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO会将你带到另一个O那里\n当AB门为A时可以通过反之无法通过";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
slowout("地图中出现了岩浆!如果碰到岩浆你就会回到原点。你必须要拿到水才可以将岩浆浇灭!",10);
Sleep(1500);
accepted[11] = 1;
cls;
continue;
//第十二关
level12:slowout("第十二关\n",100);
Sleep(1500);
cls;
init;
print(mp13,ix,iy,20,15);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO(o)会将你带到另一个O(o)那里\n当AB门为A时可以通过反之无法通过";
cout << "\n按C退出关卡";
p = getf(mp13,20,25); fx = p.first; fy = p.second;
while(true){
control(mp13);
if(goback == 1)goto returnback;
position();
print(mp13,ix,iy,20,15);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO会将你带到另一个O那里\n当AB门为A时可以通过反之无法通过";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
accepted[12] = 1;
continue;
//第十三关
level13:slowout("第十三关\n",100);
slowout("本关视野:4",40);
Sleep(1500);
cls;
init;
O(mp14);
eye = 4;
print(mp14,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO(o)会将你带到另一个O(o)那里\n当AB门为A时可以通过反之无法通过";
cout << "\n按C退出关卡";
p = getf(mp14,20,25); fx = p.first; fy = p.second;
while(true){
control(mp14);
if(goback == 1)goto returnback;
position();
print(mp14,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO会将你带到另一个O那里\n当AB门为A时可以通过反之无法通过";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
accepted[13] = 1;
continue;
//第十四关
level14:slowout("第十四关\n",100);
Sleep(1500);
cls;
init;
have_mon = 1;
monster_x = getMonsterXY(mp15).first;
monster_y = getMonsterXY(mp15).second;
O(mp15);
print(mp15,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO(o)会将你带到另一个O(o)那里\n当AB门为A时可以通过反之无法通过\n怪兽会随着你的移动而移动!";
cout << "\n按C退出关卡";
p = getf(mp15,20,25); fx = p.first; fy = p.second;
while(true){
control(mp15);
if(goback == 1)goto returnback;
position();
print(mp15,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO会将你带到另一个O那里\n当AB门为A时可以通过反之无法通过\n怪兽会随着你的移动而移动!";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
accepted[14] = 1;
continue;
//第十五关
level15:slowout("第十五关\n",100);
slowout("本关视野:4",40);
Sleep(1500);
cls;
init;
eye = 4;
have_mon = 1;
monster_x = getMonsterXY(mp16).first;
monster_y = getMonsterXY(mp16).second;
O(mp16);
print(mp16,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO(o)会将你带到另一个O(o)那里\n当AB门为A时可以通过反之无法通过\n怪兽会随着你的移动而移动!";
cout << "\n按C退出关卡";
p = getf(mp16,20,25); fx = p.first; fy = p.second;
while(true){
control(mp16);
if(goback == 1)goto returnback;
position();
print(mp16,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO会将你带到另一个O那里\n当AB门为A时可以通过反之无法通过\n怪兽会随着你的移动而移动!";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
accepted[15] = 1;
continue;
//第十六关
level16:slowout("特殊关 第十六关 生命之源\n",100);
slowout("本关视野:2\n",40);
slowout("温馨提示:本关可以离开地图,在失去通关机会时请按c退出关卡",30);
Sleep(1500);
cls;
init;
eye = 2;
monster_x = getMonsterXY(mp17).first;
monster_y = getMonsterXY(mp17).second;
O(mp17);
print(mp17,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO(o)会将你带到另一个O(o)那里\n当AB门为A时可以通过反之无法通过\n怪兽会随着你的移动而移动!";
cout << "\n按C退出关卡";
p = getf(mp17,20,25); fx = p.first; fy = p.second;
while(true){
Sleep(10);
control(mp17);
if(goback == 1)goto returnback;
position();
print(mp17,ix,iy,20,25);
cout << "按WASD移动,F的位置即为终点,必须获得K(k)才可以通过D(d)\nO会将你带到另一个O那里\n当AB门为A时可以通过反之无法通过\n怪兽会随着你的移动而移动!";
cout << "\n按C退出关卡";
if(ix == fx && iy == fy){
cls;
break;
}
}
accepted[16] = 1;
continue;
//第十七关
level17:slowout("第十七关",100);
Sleep(1500);
cls;
init;
sw_x = getswitch(mp18).first;
sw_y = getswitch(mp18).second;
monster_x = getMonsterXY(mp18).first;
monster_y = getMonsterXY(mp18).second;
O(mp18);
p = getf(mp18,20,25); fx = p.first; fy = p.second;
while(true){
control(mp18,mp18mon);
if(goback == 1)goto returnback;
//position();
//print(mp18,ix,iy,20,25);
if(ix == fx && iy == fy){
cls;
break;
}
}
accepted[17] = 1;
continue;
//第十八关
level18:slowout("第十八关\n",100);
slowout("本关视野:4",40);
Sleep(1500);
cls;
init;
eye = 4;
sw_x = getswitch(mp19).first;
sw_y = getswitch(mp19).second;
monster_x = getMonsterXY(mp19).first;
monster_y = getMonsterXY(mp19).second;
O(mp19);
p = getf(mp19,20,25); fx = p.first; fy = p.second;
sw_open = 1;
while(true){
control(mp19,mp19mon);
if(goback == 1)goto returnback;
//position();
//print(mp18,ix,iy,20,25);
if(ix == fx && iy == fy){
cls;
break;
}
}
accepted[18] = 1;
continue;
}
return 0;
}