龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

孔明棋,你玩过吗

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
//在tc3++下运行 //游戏名孔明棋 #define Up 0x4800 #define Down 0x5000 #define P 0x1970 #define R 0x1372 #define Enter 0x1c0d #define Esc 0x11b #define Right 0x4d00 #define Left 0x4b00 #include #include #include #include #include #i

//在tc3++下运行

//游戏名孔明棋

#define Up 0x4800

  #define Down 0x5000

  #define P 0x1970

  #define R 0x1372

  #define Enter 0x1c0d

  #define Esc 0x11b

  #define Right 0x4d00

  #define Left 0x4b00

#include

  #include

  #include

  #include

  #include

  #include

//定义核心数据

  int LargeStartx,LargeStarty; //大方格图形左上角坐标

  int SmallStartx,SmallStarty;

  int RedNum; //红格子的个数。假如红格子的个数为1,则游戏过关

  char State; //按键的状态M(move)与S(select),M表示移动红格子。S表示选择要移动的红格子

  int Attr[7][7]; //描述7*7矩阵格子的属性N(none),W(white),R(red).N表示没有格子,W表示有白色格子,R示

//有红色格子

  int row,tier; //7*7矩阵的行(row)与列(tier)

  int Mission; //表示第几关

  int MissionNum; //总的关数

typedef strUCt rect1 //描述大方格的属性

  {

  int startx;

  int starty;

  int nowx;

  int nowy;

  int agox;

  int agoy;

  char color;

  int size;

  }Large;

  Large LargeRect;

typedef struct rect2 //描述小方格的属性

  {

  int nowx;

  int nowy;

  char color;

  int size;

  }Small;

  Small SmallRect;

typedef struct add

  {

  int x;

  int y;

  }Add;

//declare functions

  void InitData1();

  void InitData();

  void InitMission(int );

  void InitPic();

  void Help();

  void DrawSmallRect(int ,int ,int ,char );

  void DrawLargeRect(int ,int ,int ,char );

  void ChangeState();

  void MoveLargeRect();

  void MoveSmallRect(int );

void main()

  {

  int key;

  int gdriver=DETECT, gmode;

  registerbgidriver(EGAVGA_driver);

  initgraph(&gdriver, &gmode, "");

  setbkcolor(BLUE);

  cleardevice();

  InitData1();

  InitData(); //随着关数的变化需要恢复的数据

  Mission=1;

  InitMission(Mission); //初始化关数.主要是改变一些方格的属性

  InitPic();

  do

   {

   key=bioskey(0);

   LargeRect.agox=LargeRect.nowx;

   LargeRect.agoy=LargeRect.nowy;

   SmallRect.nowx=LargeRect.nowx+10;

   SmallRect.nowy=LargeRect.nowy+10;

   switch(key)

   {

   case Up:

   {

   if(State=='S')

   {

   if( (row-1)>=0&&Attr[row-1][tier]!='N' )

   {

   row--;

   MoveLargeRect();

   break;

   }

   }

   if(State=='M')

   {

   if(Attr[row-1][tier]=='R'&&Attr[row-2][tier]=='W')

   {

   MoveSmallRect(key);

   Attr[row][tier]='W';Attr[row-1][tier]='W';Attr[row-2][tier]='R';

   row-=2;

   MoveLargeRect();

   RedNum--;

   ChangeState();

   }

   }

   break;

   }

   case Down:

   {

   if(State=='S')

   {

   if( (row+1)<7&&Attr[row+1][tier]!='N' )

   {

   row++;

   MoveLargeRect();

   }

   }

   if(State=='M')

   {

   if(Attr[row+1][tier]=='R'&&Attr[row+2][tier]=='W')

   {

   MoveSmallRect(key);

   Attr[row][tier]='W';Attr[row+1][tier]='W';Attr[row+2][tier]='R';

   row+=2;

   MoveLargeRect();

   RedNum--;

   ChangeState();

   }

   }

   break;

   }

   case Left:

   {

   if(State=='S')

   {

   if( (tier-1)>=0&&Attr[row][tier-1]!='N' )

   {

   tier--;

   MoveLargeRect();

   }

   }

   if(State=='M')

   {

   if(Attr[row][tier-1]=='R'&&Attr[row][tier-2]=='W')

   {

   MoveSmallRect(key);

   Attr[row][tier]='W';Attr[row][tier-1]='W';Attr[row][tier-2]='R';

   tier-=2;

   MoveLargeRect();

   RedNum--;

   ChangeState();

   }

   }

   break;

   }

   case Right:

   {

   if(State=='S')

   {

   if( (tier+1)>=0&&Attr[row][tier+1]!='N' )

   {

   tier++;

   MoveLargeRect();

   }

   }

   if(State=='M')

   {

   if(Attr[row][tier+1]=='R'&&Attr[row][tier+2]=='W')

   {

   MoveSmallRect(key);

   Attr[row][tier]='W';Attr[row][tier+1]='W';Attr[row][tier+2]='R';

   tier+=2;

   MoveLargeRect();

   RedNum--;

   ChangeState();

   }

   }

   break;

   }

   case R:

   {

   InitData();

   InitMission(Mission);

   InitPic();

   break;

   }

   case P:

   {

   InitData();

   if(Mission

   else Mission=1;

   InitMission(Mission);

   InitPic();

   break;

   }

   case Enter:

   {

   if(State=='S'&&Attr[row][tier]=='R')

   ChangeStat

  

  

精彩图集

赞助商链接