#include "graphics.h"

#include "stdlib.h" 

#include "dos.h" 

#include "bios.h"

#include "stdio.h"

#include "time.h"

#include "graphics.h"

#include "conio.h"

#define LEFT 0x4b00 

#define RIGHT 0x4d00 

#define DOWN 0x5000 

#define UP 0x4800 

#define ESC 0x011b 

#define ENTER 0x1c0d

#define SPACE 0x3920 

/*游戏中人物的结构体*/ 
struct play
{ 
 int x;
  
 int y; 
}; 

struct Snow
{

int x;

int y;

int speed;

}snow[100];

int snownum=0;

struct play you,them[5]; 

void *save;

int sum=0;/*统计吃的豆子个数,吃满50颗就算胜利*/

int change=10;


/*0豆子,1空地2,墙壁,3自己,4敌人*/
int a[15][20]={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
                  2,1,1,0,0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,2,
                  2,1,2,2,2,1,1,2,1,1,0,0,0,1,1,4,1,1,0,2,
                  2,1,1,0,2,1,1,2,0,1,1,2,2,2,2,2,0,0,0,2,
                  2,4,1,0,2,1,1,2,1,1,1,0,1,1,1,1,0,1,1,2,
                  2,1,2,1,2,1,1,2,1,3,2,2,1,1,1,1,2,2,1,2,
                  2,1,2,1,2,1,1,1,1,1,1,1,1,0,0,0,1,1,1,2,
                  2,1,2,1,0,1,1,1,1,2,1,0,1,2,2,2,1,1,1,2,
                  2,1,0,1,0,1,2,1,1,2,1,0,1,2,1,1,4,1,1,2,
                  2,1,0,2,0,1,2,1,1,2,1,0,1,2,1,1,1,1,1,2,
                  2,1,0,2,1,1,2,1,1,2,1,0,2,2,1,0,0,0,1,2,
                  2,1,1,2,1,1,2,1,1,2,1,0,2,1,1,2,2,1,1,2,
                  2,1,2,2,1,2,2,1,1,1,1,0,1,4,1,2,0,0,1,2,
                  2,1,0,0,0,0,0,4,0,1,1,0,1,1,1,1,0,0,1,2,
                  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
        /*数组就是地图( level  1)*/ ;


int b[15][20]={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
                  2,1,1,0,0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,2,
                  2,1,2,2,2,2,1,2,1,1,0,0,0,1,1,4,1,1,0,2,
                  2,1,1,0,2,2,1,2,0,1,2,2,2,2,2,2,0,0,0,2,
                  2,4,1,0,2,1,1,2,1,1,1,0,1,1,2,1,0,1,1,2,
                  2,1,2,1,2,1,1,2,2,3,2,2,1,1,2,1,2,2,1,2,
                  2,1,2,1,2,2,1,1,1,1,1,1,1,0,0,0,1,1,1,2,
                  2,2,2,1,0,2,1,1,1,2,1,0,1,2,2,2,1,1,1,2,
                  2,2,0,1,0,2,2,1,1,2,1,0,1,2,2,1,4,1,1,2,
                  2,1,0,2,0,1,2,1,2,2,1,0,1,2,1,1,1,1,1,2,
                  2,1,0,2,1,1,2,1,1,2,1,0,2,2,1,0,0,0,1,2,
                  2,1,1,2,1,1,2,1,1,2,1,0,2,1,2,2,2,1,1,2,
                  2,1,2,2,1,2,2,2,1,1,1,0,1,4,1,2,0,0,1,2,
                  2,1,0,0,0,0,0,4,0,1,1,0,1,1,1,1,0,0,1,2,
                  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
        /*数组就是地图( level  2)*/


int c[15][20]={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
                  2,1,1,0,0,0,0,0,1,0,0,0,1,1,2,1,1,1,0,2,
                  2,1,2,2,2,1,1,2,2,1,0,0,0,1,2,4,1,1,0,2,
                  2,1,1,0,2,2,1,2,0,1,2,2,2,2,2,2,0,0,0,2,
                  2,4,1,0,2,1,1,2,1,1,1,0,1,1,1,1,0,1,1,2,
                  2,1,2,1,2,1,2,2,1,3,2,2,1,1,1,1,2,2,1,2,
                  2,1,2,1,2,1,1,1,1,1,1,1,1,0,0,0,1,1,1,2,
                  2,1,2,1,0,2,1,1,1,2,2,0,1,2,2,2,1,1,1,2,
                  2,2,0,1,0,1,2,1,2,2,1,0,1,2,1,1,4,1,1,2,
                  2,2,0,2,0,1,2,1,1,2,1,0,1,2,2,1,1,1,1,2,
                  2,2,0,2,1,1,2,2,1,2,1,0,2,2,1,0,0,0,1,2,
                  2,1,1,2,1,1,2,1,1,2,2,0,2,1,1,2,2,2,1,2,
                  2,1,2,2,1,2,2,1,2,1,1,0,1,4,1,2,0,0,1,2,
                  2,1,0,0,0,0,0,4,0,1,1,0,1,1,1,1,0,0,1,2,
                  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
        /*数组就是地图( level  3)*/


 
int xx[5][2];/*判断敌人方向用的结构体*/
 
int false=0; /*判断输赢的参数*/



/*************************选择关卡********************************************************************/



void levelchoose(int x)
{
    int j,k;

    switch(x)
    {
    case 1:break;

    case 2:for(j=0;j<15;j++)

                for(k=0;k<20;k++)

                    a[j][k]=b[j][k];

            break;

    case 3:for(j=0;j<15;j++)

                for(k=0;k<20;k++)

                    a[j][k]=c[j][k];

            break;

    default:break;

  }

}




/*********************欢迎界面*************************************************************************/




void hello()
{



/*输出界面*/






printf("XXXXXXXXXXXX  XXXXXXXXXXXXX                XXXXXXXXXXXXXXX  XXXXXXXXXXXX\n");
printf("X       XXX          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXX\n");
printf("X  XXX  XX  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXX\n");
printf("X  XXX  X   XXXXXXXXXXXXXXXX              XXXXXXXXXXXXXXXX  XXXXXXXXXXXX\n");
printf("X  XXX  X  XXXXXXXXXXXXXXXXX  XXXXXXXXXX  XXXXXXXXXXXXXXXX  XXXXXXXXXXXX\n");
printf("X  XXX  XXX        XXXXXXXXX  XXXXXXXXXX  XXXXXXXXXXXXXXX    XXXXXXXXXXX\n");
printf("X  XXX  XXXXXXX   XXXXXXXXXX  XXXXXXXXXX  XXXXXXXXXXXXXXX    XXXXXXXXXXX\n");
printf("X  XXX  XXXXXX  XXXXXXXXXXXX              XXXXXXXXXXXXXX  XX  XXXXXXXXXX\n");
printf("X       XXXX   XXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXXXXX  XXXX  XXXXXXXXX\n");
printf("X  XXX  XXX  XXXXXXXXXXXXXXXXX  XXXXXX  XXXXXXXXXXXXXX  XXXXXX  XXXXXXXX\n");
printf("X  XXX  XXX  XXXXXX  XXXXXXXXXX  XXXX   XXXXXXXXXXXXX   XXXXXXX  XXXXXXX\n");
printf("XXXXXXXXXX  XXXXXXX  XXXXXXXXXX XXXXX  XXXXXXXXXXXXX   XXXXXXXX    XXXXX\n");
printf("XXXXXXXXXXX  XXXXX   XXXXXXXXXXXXXXX  XXXXXXXXXXXX    XXXXXXXXXX    XXXX\n");
printf("XXXXXXXXXXX         XXXXX                    XXXX    XXXXXXXXXXXX    XXX\n");
printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
printf("X         XXXXXX   XXXXXXXX       XXX   XXXX   XXXXX   XXXXXX   XXXXX  X\n");
printf("X  XXXXX  XXXXXX   XXXXXXX   XXX  XXX   XXXX   XXXXX   XXXXXX   XXXXX  X\n");
printf("X  XXXXXX  XXXXX   XXXXXXX  XXXXX  XX    XX    XXXXX   XXXXXX    XXXX  X\n");
printf("X  XXXXXX  XXXX  X  XXXXX  XXXXXX  XX    XX    XXXX  X  XXXXX    XXXX  X\n");
printf("X  XXXXXX  XXXX  X  XXXXX  XXXXXX  XX    XX    XXXX  X  XXXXX  X  XXX  X\n");
printf("X  XXXXXX  XXXX  X  XXXXX  XXXXXXXXXX  X XX X  XXXX  X  XXXXX  X  XXX  X\n");
printf("X  XXXXX  XXXX  XXX  XXXX  XXXXXXXXXX  X    X  XXX  XXX  XXXX  XX  XX  X\n");
printf("X         XXXX  XXX  XXXX  XXXXXXXXXX  X    X  XXX  XXX  XXXX  XX  XX  X\n");
printf("X  XXXXXXXXXXX       XXXX  XXXXXX  XX  X    X  XXX       XXXX  XXX  X  X\n");
printf("X  XXXXXXXXXX  XXXXX  XXX  XXXXXX  XX  X    X  XX  XXXXX  XXX  XXXX    X\n");
printf("X  XXXXXXXXXX  XXXXX  XXXX  XXXX   XX  XX  XX  XX  XXXXX  XXX  XXXX    X\n");
printf("X  XXXXXXXXXX  XXXXX  XXXX   XXX  XXX  XX  XX  XX  XXXXX  XXX  XXXXX   X\n");
printf("X  XXXXXXXXX  XXXXXXX  XXXX      XXXX  XX  XX  X  XXXXXXX  XX  XXXXX   X\n");








}


/*********************游戏说明*************************************************************************/


void instruction()
{

printf("            *****************************************\n");

printf("            *          GAME INSTRUCTIONS            *\n");

printf("            *****************************************\n");

printf("                    WELCOME TO PACMAN WORLD!\n\n");

printf("Press up,down,left,right to play.\n");

printf("Press Esc to quit it.\n");

printf("Press space to reset the game when you are playing.\n");

printf("How to win the game:\n");

printf("\tIf you have aten all of the yellow peans without being in the same location with the green enemy , you win ! \n");

printf("\tIf you are in the same location with the green enemy ,you lose !\n");

printf("Please choose game level number from 1 to 3 and press Enter key to start game :\n");

}





/**************************延时函数 传入微秒数***************************************************************************/



void TimeDelay(unsigned long microsec)  
{ 
 
union REGS r; 
 
r.h.ah=0x86; 
 
r.x.cx=microsec>>16; 
 
r.x.dx=microsec; 
 
int86(0x15,&r,&r); 

} 




/***************************吃豆子的函数*********************************************************************************/




drawblackdou(int x,int y) 
{ 
 
setcolor(0); 
 
circle(100+y*20,100+x*20,3); 

/*吃到豆子后就加一*/
sum++;

/*吃到后这里就成为普通平地*/
 a[x][y]=1;
}




/*******************播放音乐的函数*********************************************************************/


void Pr()
{

int s[15]={0,100,150,200,50,150,250,300