爱心吃豆-源码
程序代码:
#include <graphics.h> #include <math.h> #include "myinclude.h" #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define HOME 0x4700 #define END 0x4f00 #define SPACE 0x3920 #define ESC 0x011b #define ENTER 0x1c0d #define N 6/*敌人的数量*/ struct PLay { double x;/*图形模式下的具体坐标*/ double y; int i,j;/*转化后的坐标*/ int life;/*生命*/ int mode;/*判断8种样子*/ int move;/*判断是否按键移动*/ int flag;/*当跟踪性的敌人只有一个方向可走时,调用chang时需要变下方向*/ }play,amy[N]; char str[10]; int tbfPLAY[30][30];/*显示玩家*/ int tbfAMY[30][30];/*敌人1*/ int tbfAMY1[30][30];/*敌人2*/ int tbfFOOD[30][30];/*食物*/ int tbfWALL[30][30];/*墙壁*/ int score;/*得分*/ int WINNUM;/*要多少分才过关的标志*/ int GUAN;/*第几关的标志*/ double SPEED=9.0;/*地图中,0是食物,2是墙壁,-1空地*/ int MAP2[14][20]={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,-1,0,0,0,0,0,0,-1,0,0,0,0,-1,-1,-1,0,0,0,2, 2,0,0,2,2,2,2,2,2,-1,-1,2,2,2,2,2,2,0,0,2, 2,0,-1,0,0,-1,-1,0,0,-1,0,-1,0,-1,0,-1,-1,0,0,2, 2,0,2,2,2,0,0,-1,0,2,0,0,-1,-1,0,2,2,2,0,2, 2,-1,-1,0,-1,-1,0,2,0,-1,0,0,2,-1,0,0,-1,-1,-1,2, 2,-1,-1,0,0,2,0,2,0,-1,-1,0,2,0,0,2,-1,2,0,2, 2,-1,-1,0,-1,2,0,2,2,2,0,-1,2,0,0,2,-1,2,0,2, 2,2,2,0,-1,2,0,2,-1,-1,0,-1,2,-1,-1,2,-1,-1,0,2, 2,0,-1,0,0,2,0,2,2,2,2,2,2,0,-1,2,0,2,0,2, 2,-1,2,0,0,2,0,0,-1,-1,-1,0,-1,-1,0,2,0,2,0,2, 2,0,-1,-1,-1,2,0,0,-1,-1,-1,0,0,-1,-1,2,0,-1,0,2, 2,-1,-1,-1,-1,-1,-1,2,-1,0,-1,-1,-1,-1,-1,0,0,-1,0,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};/*第一关的地图*/ int MAP3[14][20]={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,-1,0,0,-1,-1,-1,0,0,-1,0,-1,-1,-1,-1,0,0,0,0,2, 2,0,2,0,2,2,0,2,0,2,-1,2,2,0,0,2,2,0,0,2, 2,-1,0,0,-1,-1,-1,0,0,0,-1,-1,0,-1,-1,-1,0,2,0,2, 2,-1,2,-1,2,0,-1,-1,0,0,-1,0,-1,-1,0,2,0,0,0,2, 2,0,2,0,2,-1,0,2,0,0,-1,0,2,0,0,2,0,0,0,2, 2,0,2,0,2,-1,0,0,-1,-1,-1,0,2,-1,0,2,0,2,0,2, 2,0,0,0,2,-1,0,2,0,0,-1,0,2,0,-1,2,0,-1,0,2, 2,-1,2,0,2,-1,0,2,0,0,-1,0,2,0,0,2,0,2,0,2, 2,-1,2,0,2,0,0,2,2,2,0,0,2,0,0,2,0,2,0,2, 2,-1,0,0,0,0,-1,-1,-1,-1,-1,0,-1,-1,-1,-1,0,2,0,2, 2,0,2,2,0,2,0,2,0,2,0,2,2,2,0,0,2,2,0,2, 2,0,-1,-1,-1,0,0,-1,-1,0,0,-1,-1,0,0,0,-1,-1,-1,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};/*第二关的地图*/ int MAP[14][20]={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,-1,-1,-1,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2, 2,-1,2,0,-1,-1,0,0,0,2,0,0,0,0,0,0,0,0,2,2, 2,-1,-1,0,0,0,2,-1,-1,0,0,0,2,2,2,0,0,0,-1,2, 2,-1,-1,0,0,0,-1,-1,2,2,0,2,2,2,2,2,0,0,-1,2, 2,-1,-1,0,2,0,-1,-1,2,2,-1,2,2,2,2,2,2,0,-1,2, 2,-1,2,0,2,2,2,2,2,2,2,-1,2,2,2,2,2,0,-1,2, 2,-1,-1,0,0,2,2,2,2,2,2,2,2,2,2,2,0,0,-1,2, 2,-1,-1,0,0,0,0,2,2,2,-1,-1,-1,-1,0,2,2,0,-1,2, 2,-1,-1,2,0,0,0,0,0,2,2,2,0,0,0,0,0,0,-1,2, 2,-1,-1,0,2,2,0,0,0,0,2,0,0,2,0,2,0,0,-1,2, 2,-1,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,-1,-1,2,-1,-1,2, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};/*第三关的地图*/ void Init();/*图形驱动*/ void Close();/*图形驱动*/ void GameBegain();/*开始选择画面*/ void DrawBrick(int,int);/*画砖*/ void DrawFirst();/*开始画面*/ void GamePlay();/*游戏具体函数*/ void DrawFood(int,int);/*画食物*/ void ClrPlay();/*去掉玩家或敌人原来的地方*/ void AmyClr(int n);/*去掉敌人原来的地方*/ void TbfMode();/*玩家的变化*/ void AmyMode(int n);/*敌人的变化*/ void AmyMode1(int n);/*跟踪性敌人的变化*/ void AmyClockTime(int);/*控制时间间断*/ void AmyModeChange(int);/*敌人移动*/ void AmyModeChange1(int);/*敌人跟踪移动*/ void PlayModeChange();/*玩家自动变化*/ int UMove(int);/*四个方向单独判断是否敌人可以移动*/ int DMove(int); int RMove(int); int LMove(int); void Ugo(int);/*四发方向敌人的直线移动*/ void Dgo(int); void Rgo(int); void Lgo(int); int AmyRight(int);/*判断敌人是否碰到死路*/ int PUMove();/*四个方向判断玩家是否可以走路*/ int PDMove(); int PRMove(); int PLMove(); void PUgo();/*四发方向玩家的直线移动*/ void PDgo(); void PRgo(); void PLgo(); int PlayRight();/*判断玩家是否碰到死路*/ void GameWin();/*胜利*/ void GameOver();/*游戏失败*/ void PrintScore(); void Chinese();/*显示中文*/ void MapCopy(int (*a)[20],int (*b)[20]);/*转换地图*/ void TongJi();/*计算要多少分才可以过关*/ void main() { Init(); GameBegain(); GamePlay(); Close(); } void Chinese()/*显示中文*/ { int i; char str[]={ /* 以下是 '吃' 的 48点阵宋体 字模,288 byte */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20, 0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00, 0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00, 0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x70, 0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00, 0x00,0x01,0x00,0xE0,0x00,0x00,0x0C,0x03, 0x80,0xE0,0x00,0x00,0x0F,0xFF,0xC0,0xC0, 0x00,0x40,0x0E,0x03,0x81,0x80,0x00,0xE0, 0x0E,0x03,0x81,0xFF,0xFF,0xF0,0x0E,0x03, 0x83,0x00,0x00,0x00,0x0E,0x03,0x83,0x00, 0x00,0x00,0x0E,0x03,0x86,0x00,0x00,0x00, 0x0E,0x03,0x84,0x00,0x00,0x00,0x0E,0x03, 0x8C,0x00,0x00,0x00,0x0E,0x03,0x98,0x00, 0x00,0x00,0x0E,0x03,0x90,0x00,0x18,0x00, 0x0E,0x03,0xA0,0x00,0x3C,0x00,0x0E,0x03, 0xC7,0xFF,0xFE,0x00,0x0E,0x03,0x80,0x00, 0x78,0x00,0x0E,0x03,0x80,0x00,0xF0,0x00, 0x0E,0x03,0x80,0x00,0xE0,0x00,0x0E,0x03, 0x80,0x01,0xC0,0x00,0x0E,0x03,0x80,0x03, 0x80,0x00,0x0E,0x03,0x80,0x07,0x00,0x00, 0x0E,0x03,0x80,0x0F,0x00,0x00,0x0F,0xFF, 0x80,0x1E,0x00,0x00,0x0E,0x03,0x80,0x1C, 0x00,0x00,0x0E,0x03,0x80,0x38,0x00,0x00, 0x0E,0x03,0x80,0x70,0x00,0x40,0x0E,0x03, 0x00,0xE0,0x00,0x40,0x0E,0x00,0x01,0xE0, 0x00,0x60,0x0C,0x00,0x01,0xC0,0x00,0x60, 0x00,0x00,0x03,0x80,0x00,0x60,0x00,0x00, 0x07,0x00,0x00,0x60,0x00,0x00,0x07,0x00, 0x00,0x60,0x00,0x00,0x07,0x00,0x00,0x60, 0x00,0x00,0x07,0x00,0x00,0x70,0x00,0x00, 0x07,0x00,0x00,0xF8,0x00,0x00,0x03,0xFF, 0xFF,0xF0,0x00,0x00,0x01,0xFF,0xFF,0xF0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 以下是 '豆' 的 48点阵宋体 字模,288 byte */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00, 0x07,0x80,0x03,0xFF,0xFF,0xFF,0xF8,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20, 0x00,0x00,0x08,0x00,0x00,0x30,0x00,0x00, 0x1C,0x00,0x00,0x3F,0xFF,0xFF,0xFE,0x00, 0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x38, 0x00,0x00,0x18,0x00,0x00,0x38,0x00,0x00, 0x18,0x00,0x00,0x38,0x00,0x00,0x18,0x00, 0x00,0x38,0x00,0x00,0x18,0x00,0x00,0x38, 0x00,0x00,0x18,0x00,0x00,0x38,0x00,0x00, 0x18,0x00,0x00,0x38,0x00,0x00,0x18,0x00, 0x00,0x38,0x00,0x00,0x18,0x00,0x00,0x3F, 0xFF,0xFF,0xF8,0x00,0x00,0x38,0x00,0x00, 0x18,0x00,0x00,0x38,0x00,0x00,0x18,0x00, 0x00,0x38,0x00,0x01,0x00,0x00,0x00,0x04, 0x00,0x01,0x80,0x00,0x00,0x03,0x00,0x01, 0xE0,0x00,0x00,0x03,0x80,0x03,0xE0,0x00, 0x00,0x01,0xC0,0x03,0xC0,0x00,0x00,0x00, 0xC0,0x03,0x80,0x00,0x00,0x00,0xE0,0x07, 0x00,0x00,0x00,0x00,0xF0,0x07,0x00,0x00, 0x00,0x00,0x70,0x06,0x00,0x00,0x00,0x00, 0x70,0x0C,0x00,0x00,0x00,0x00,0x70,0x0C, 0x00,0x00,0x00,0x00,0x60,0x18,0x00,0x60, 0x00,0x00,0x00,0x10,0x00,0xF0,0x3F,0xFF, 0xFF,0xFF,0xFF,0xF8,0x10,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };