一种简洁迷宫游戏设计

2019-08-23 03:07潘家富
电子技术与软件工程 2019年13期
关键词:编译器迷宫代码

文/潘家富

1 引言

迷宫游戏是当今最为经典的一款益智类游戏。迷宫游戏简单,容易上手 ,极具创意 ,虽历经数年 ,仍相当受欢迎。通过随机生成迷宫地图,玩家从入口进入迷宫,探索前行。往往是选择一个路口,走着走着就到了死胡同,只能退回来,选择其它路口再试走。就这样,不断地折回,反复地寻找,最后才能找到出口,最后成功走出迷宫。此时此刻,玩家也从成功走出迷宫获得愉悦的心情,从而把工作生活中的压力释放掉。

本文利用Visual C++6.0实现了迷宫游戏的界面以及地图生成,A*算法实现了迷宫自动搜索,设计出了一个简洁的迷宫游戏平台。

2 迷宫游戏的详细设计及实现

2.1 Visual C++6.0的开发过程

Visual C++6.0编译器负责将C++源代码编译成汇编文件,转换为中间文件(obj文件),然后使用连接器将相关的中间文件连接在一起,生成可执行的二进制文件。其过程如下:

(1)源程序经过预处理后交给编译器。

(2)如果代码无误,编译器将代码生成编译程序,再生成若干个目标程序(obj文件)。

(3)链接器负责将目标程序进行连接,生成可执行的程序。常见Windows应用程序开发的过程如图1。

2.2 迷宫游戏结构设计

迷宫游戏结构图如图2。

2.3 迷宫游戏功能介绍

(1)游戏界面:主要提供游戏平台,为玩家提供可视化的窗口。

(2)迷宫生成:生成各个难度迷宫地图。

(3)手动游戏:主要提供键盘消息响应,玩家可以通过键盘控制小球,移动小球至出口。

(4)自动游戏:主要提供当前迷宫地图的最佳路径,以动画的形式提供给玩家看。

2.4 功能实现及编码

2.4.1 游戏界面设计

通过CMazeGameDlg::BuildDC()类实现游戏界面。建立绘图设备,和调整窗口大小,设置迷宫绘图区大小,记录探险者的坐标,即所处迷宫位置,和创建DC设备环境,加载墙、路以及小球。迷宫游戏界面生成关键代码如下:

图1:VC6.0程序开发过程图

图2:迷宫游戏结构图

图3:迷宫运行效果图

通过CMazeGameDlg::MakeMaze()类实现迷宫地图的生成,其实现原理是:步骤1:初始设置迷宫所有路都为不可走通,即二维数组值都设置成1。步骤2:设置迷宫入口点(ENTRY,XENTRYY),出口点在(2*ROWX,2*COLY+1)。步骤3:探索一条通路出来行。如果到了行墙边,则沿着墙边打通墙。如果到了列墙边,则沿着墙边打通墙。产生一个随机运动的方向,并打通该方向的墙。如果没有运到出口位置(2*ROWX,2*COLY+1)则返回继续,否则进入下一步骤。步骤4:加入随机通路。生成迷宫地图的代码如下:

实际运行效果如图3。

2.4.2 模块功能设计

按键消息处理模块实现。通过CMazeGameDlg::OnKeyDown方法对键盘消息处理,对上下左右按键消息响应。其代码实现如下:

A*搜索实现模块实现。通过CMazeGameDlg::MazePath函数实现自动搜索,实现当前地图的最佳路径搜索,其主要实现代码如下:

3 结语

利用Visual C++6.0实现了迷宫游戏的界面以及地图生成,A*算法实现了迷宫自动搜索,提供了一个简洁的游戏平台。由于时间和自身技术水平限制,迷宫游戏虽然完成,但还存在许多不够完善的地方,例如:游戏界面简单、功能不够完善,从自动搜索路径后回到手动游戏当中,就必须关掉游戏而重新开始。在以后工作中,会针对类似问题,继续努力,将迷宫游戏做的更完善。

猜你喜欢
编译器迷宫代码
基于相异编译器的安全计算机平台交叉编译环境设计
创世代码
创世代码
创世代码
创世代码
大迷宫
迷宫
捕网迷宫
创造独一无二的迷宫
通用NC代码编译器的设计与实现