#include "stdio.h"
#include "graphics.h"
#include "alloc.h"
#define VK_LEFT 0x4b00
#define VK_RIGHT 0x4d00
#define VK_DOWN 0x5000
#define VK_UP 0x4800
#define VK_HOME 0x4700
#define VK_END 0x4f00
#define VK_SPACE 0x3920
#define VK_ESC 0x011b
#define VK_ENTER 0x1c0d
#define spread 20
#define VK_R 0x1372
/*定义主数据结构*/
struct Map
{
int path[19][19];/*包含每张地图的路径,(0空白(2墙(3箱子(4目的地(5工人(6已完成的箱子
X轴在前Y在后*/
int NUM;/*关卡编号*/
int Condition; /*胜利条件*/
struct Map *next;/*指向下一个节点*/
};
/*函数说明*/
/*画图函数各有三个参数(宽度(X(Y*/
void LineWall(int x,int y); /*画墙壁*/
void LineBox(int x,int y); /*画木箱*/
void LineWorker(int x,int y); /*画工人*/
void LineEnd(int x,int y); /*画木箱的目的地*/
void LineHatchway(int x,int y); /*画地板*/
void LineEndBox(int x,int y);/*画推好的箱子*/
/*逻辑判断函数*/
int MayMove(int key,struct Map *head);/*判断是否可以移动,参数是用户按下的键值
返回值(1代表可以,0代表不可以)*/
int Victoryed(struct Map *P);/*判断是否获胜返回值(0代表没有,1代表获胜)*/
void FormatPath(int key,struct Map *point);/*更改当前布局的值,2个参数分别是用户按下的键值和当前关卡的指针*/
void Format(struct Map *point);/*画当前布局一个参数,当前关卡的指针*/
/*初始化函数*/
void CreateRole();/*创建任务*/
/*全局变量*/
int IsVictory=0;/*判断是否胜利*/
int WorkerX;/*当前工人位置横向的值*/
int WorkerY;/*当前工人位置竖向的值*/
struct Map *head,*Dp;
void format1(s,x,y)
{
setfillstyle(SOLID_FILL,YELLOW);
bar(x,y,x+(s-1),y+s-1);
}
void main()
{
int InputKey=0;/*获取用户的按键*/