#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