//==============================预制区========================================================
#include<graphics.h>
#include<conio.h>
#include<Windows.h>
#include<iostream>
#include<math.h>
#include"EasyXPng.h"
#include<queue>
#include<stack>
#define PI 3.1415926
#pragma comment(lib,"Winmm.lib")
using namespace std;
//===============================全局变量====================================================
IMAGE
wall, wall_2,
granary, granary_Png, granary2, granary2_Png,
mouse_up, mouse_down, mouse_left, mouse_right,
cover, cover1, cover2, cover3, cover4, cover5, cover6, cover7,
mouse_right_Png, mouse_left_Png, mouse_down_Png, mouse_up_Png;
int imSize = 30;//图片大小
int key = 0;//关卡数
int direction = 2;//默认方向
int bound = 0;//数组边界
int score = 0;//得分
int width = 800;//画面宽度
int deepth = 630;//画面高度
int item = 0;//item为3进入编辑模式,item = 4退出编辑模式;item = 5进入全部路径模式,item = 4退出全部路径。
int copyMap[25][25];//勿忘初心数组(找完需求路径后返还给数组原来的值)
ExMessage m;//定义一个消息变量
//-------------------------------结构体-------------------------------------------------
struct Player//玩家坐标
{
int i;
int j;
};
struct Granary//粮仓坐标
{
int i;
int j;
};
struct Granary2//粮仓坐标
{
int i;
int j;
};
Player player;
Granary granarys;
Granary2 granarys2;
//-------------------------------初始化的迷宫地图---------------------------------------
int map[12][25][25] = {
//关卡1地图
{//21*21
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3},
{3,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,3},
{3,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,3},
{3,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,3},
{3,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,1,3},
{3,1,0,1,0,1,0,1,1,1,1,1,1,1,0,1,0,1,0,1,3},
{3,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,3},
{3,1,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0,1,0,1,3},
{3,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,1,3},
{3,1,0,1,0,1,0,1,0,1,1,9,1,1,0,1,0,1,0,1,3},
{3,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0,1,3},
{3,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,3},
{3,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,3},
{3,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,3},
{3,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3},
{3,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,3},
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
},
//关卡2地图
{
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{3,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,3},
{3,1,1,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,1,3},
{3,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,3},
{3,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,3},
{3,1,1,0,1,1,1,1,0,0,1,0,1,1,1,1,0,1,0,1,3},
{3,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,0,1,1,1,3},
{3,1,0,0,0,0,0,1,0,1,1,0,1,1,1,1,1,0,0,0,3},
{3,1,0,1,1,1,0,1,0,0,1,0,0,0,0,0,1,1,1,1,3},
{3,1,0,1,0,1,0,0,0,1,1,1,0,1,1,0,1,0,0,0,3},
{3,1,0,1,0,1,1,1,1,1,9,1,1,1,1,0,1,1,1,1,3},
{3,1,0,1,0,1,1,1,0,1,1,0,0,0,1,0,0,0,0,0,3},
{3,1,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,1,1,3},
{3,1,0,1,1,1,1,1,1,1,1,1,0,0,1,0,1,0,1,1,3},
{3,1,0,0,0,0,0,0,1,1,1,1,0,0,1,0,1,0,1,1,3},
{3,1,1,0,1,1,1,0,1,0,0,0,0,0,1,0,1,0,0,1,3},
{3,1,1,0,1,1,1,0,1,0,1,1,1,0,1,1,1,1,0,1,3},
{3,1,1,0,1,1,1,0,1,0,1,1,1,0,0,0,0,1,0,1,3},
{3,1,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,1,3},
{3,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,4,3},
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
},
//关卡3地图
{
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,3,3,3,3,3,1,1,1,1,1,3,3,3,3,3,1,1,1},
{1,1,3,1,1,1,1,1,3,1,1,1,3,1,1,1,1,1,3,1,1},
{1,3,1,1,0,0,0,1,1,3,1,3,1,1,0,0,0,1,1,3,1},
{3,1,1,0,1,1,1,0,1,1,3,1,1,0,1,1,1,0,1,1,3},
{3,1,0,1,1,0,1,1,0,1,9,1,0,1,1,0,1,1,0,1,3},
{3,1,1,1,1,0,1,1,1,0,1,0,1,1,1,0,1,1,1,1,3},
{3,1,0,1,1,0,0,0,1,0,1,0,1,0,0,0,1,1,0,1,3},
{3,1,1,0,1,1,1,0,1,0,1,0,1,0,1,1,1,0,1,1,3},
{1,3,1,1,0,0,0,0,1,0,1,0,1,0,0,0,0,1,1,3,1},
{1,1,3,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,3,1,1},
{1,1,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,3,1,1,1},
{1,1,1,1,3,1,0,1,1,0,1,0,1,1,0,1,3,1,1,1,1},
{1,1,1,1,1,3,1,0,1,0,1,0,1,0,1,3,1,1,1,1,1},
{1,1,1,1,1,1,3,1,1,0,1,0,1,1,3,1,1,1,1,1,1},
{1,1,1,1,1,1,1,3,1,1,0,1,1,3,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,3,1,1,1,3,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,3,4,3,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1},
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3}
},
//关卡4地图
{
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,9,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3},
{3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,3},
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
},
};
//================================函数区================================================
//--------------------------------图片加载函数------------------------------------------
void LoadImage()
{
loadimage(&mouse_up, "老鼠上1.jpg", imSize, imSize);//
loadimage(&mouse_down, "老鼠下1.jpg", imSize, imSize);
loadimage(&mouse_left, "老鼠左1.jpg", imSize, imSize);
loadimage(&mouse_right, "老鼠右1.jpg", imSize, imSize);
//========================================================================PNG
loadimage(&mouse_up_Png, "老鼠上1.png", imSize, imSize);
loadimage(&mouse_down_Png, "老鼠下1.png", imSize, imSize);
loadimage(&mouse_left_Png, "老鼠左1.png", imSize, imSize);
loadimage(&mouse_right_Png, "老鼠右1.png", imSize, imSize);
loadimage(&granary_Png, "粮仓.png", imSize, imSize);//4
loadimage(&granary2_Png, "粮仓().png", imSize, imSize);//5
//==========================================================================
loadimage(&granary, "粮仓.jpg", imSize, imSize);//4
loadimage(&granary2, "粮仓().jpg", imSize, imSize);//5
loadimage(&wall, "墙1.jpg", imSize, imSize);
loadimage(&wall_2, "墙2.jpg", imSize, imSize);
loadimage(&cover, "cover.jpg", width, deepth);
loadimage(&cover1, "cover1.jpg", width, deepth);
loadimage(&cover2, "cover2.jpg", width, deepth);
loadimage(&cover3, "cover3.jpg", width, deepth);
loadimage(&cover4, "cover4.jpg", width, deepth);
loadimage(&cover5, "cover5.jpg", width, deepth);
loadimage(&cover6, "cover6.jpg", width, deepth);
loadimage(&cover7, "cover7.jpg", width, deepth);
}
//--------------------------------计时函数(效果不好已废弃)----------------------------
void Time()
{
TCHAR str3[20];
clock_t now;
now = clock();
double duration = double(now) / CLOCKS_PER_SEC;
_stprintf_s(str3, _T("剩余时间:%d秒"), int(duration));
settextstyle(30, 0, _T("隶书"));
outtextxy(width - 300, deepth - 600, str3);
}
//--------------------------------绘制整体框架函数--------------------------------------
void Frame()
{
setlinecolor(GREEN);
setlinestyle(30);
rectangle(0, 0, 630, 800);//游戏区