return 0;
}
函数int ** InitWall(int ,int),用于初始化迷宫中的围墙,代码如下:
int ** CMaze::InitWall(int xSize, int ySize)
{
int **Wall;
int i,j;
Wall=new int*[ySize+1];
for(i=0;i<ySize+1;i++)
Wall[i]=new int[xSize+1]; /*为二维数组Wall分配内存*/
for(i=0;i<ySize+1;i++)
for(j=0;j<xSize+1;j++)
Wall[i][j]=0; /*数组Wall初始值为0,表示尚无围墙*/
return Wall;
}
函数BOOL InitMaze(),用于初始化迷宫,为迷宫中水平方向和垂直方向的围墙赋值。生成迷宫后,把表示迷宫的图形存储为emf类型的文件,emf(Enhanced Metafile)文件是微软公司开发的一种Windows 32位扩展图元文件格式,扩展名为.emf。本程序用到的操作emf文件的API函数有CreateEnhMetaFile(),MoveToEx(),LineTo(),PlayEnhMetaFile(),关于这些函数的用法请参考《MSDN》,在此不再详述。实现的代码如下。
BOOL CMaze::InitMaze()
{
current_x = xSize-2 ;
current_y = ySize-1 ; / *(current_x , current_y )是起点坐标*/
HDC hdcEmf=CreateEnhMetaFile(NULL,"emf.emf",NULL,NULL);
/*得到emf文件的句柄,"emf.emf"保存迷宫的图形*/
HWall=InitWall(ySize, xSize); /*初始化水平方向的围墙*/
VWall=InitWall(ySize, xSize); /*初始化垂直方向的围墙*/
int i,j;
for (i=0;i<xSize;i++)
HWall[i][0]=1;
for (i=0;i<ySize;i++)
VWall[0][i]=1; /*迷宫的边缘要画线,表示有围墙*/
Rectangle(hdcEmf,0,0,STEP*xSize+1,STEP*ySize+1);
SelectObject(hdcEmf,GetStockObject(BLACK_PEN));
|