if (maze.current_x==1 && maze.current_y==0)/*如果走到终点,则弹出消息框表示祝贺*/
MessageBox("恭喜!","",MB_OK);
}
4.结束程序
添加一个按钮,单击按钮可释放资源,结束程序。编写响应按钮的函数OnCancel(),代码如下:
void CMyDlg::OnCancel()
{
maze.DestroyMaze(); /*释放CMaze类的资源*/
DeleteEnhMetaFile(maze.hemf);
DeleteEnhMetaFile(maze.hemf2);
CDialog::OnCancel();
}
至此,完成了自动生成迷宫的程序设计。由于迷宫是随机生成的,每次画出的图形不同。程序运行情况如图5所示。
图5 程序运行效果
三、结语 本文介绍了一种随机生成二维迷宫的方法,并指出了该方法的几个关键点,即如何生成连接起点和终点的通路,如何实现强连通图,以及如何绘制迷宫和捕获键盘事件的编程技巧。虽然代码不多,却实现了一个较为完整的迷宫游戏,希望能为游戏编程爱好者们起到参考作用。
|