用C#开发智能手机软件:推箱子(三)2007-10-16 11:55:32 来源:博客园 作者:银河 点击:
这是“使用 C# 开发智能手机软件:推箱子”系列文章的第三篇。在这篇文章中,介绍 Common/Block.cs 源程序文件。 ![]() 静态类 Block 用来表示基本单元格: 空地、槽(箱子最终要存放的目的地)、墙、砖(在本程序中等同于“墙”,一般放在墙的外围,使图形看起来漂亮些)、箱子、工人。其中“箱子”和“工人”都可以位于“空地”或“槽”上,所以总共有八种状态,用 0 到 7 表示,总共只需要三个二进位,可以放入一个字节中。在数据文件(*.bxb)中,每个基本单元格就是用一个字节储存的,这在以后介绍的 Common/DataFile.cs 源程序文件中会看到。但是为什么静态类 Block 的大多数方法的参数都是 ushort 类型呢?这是为了寻找工人最短移动路线算法的需要,看了下一篇介绍 Common/FindPath.cs 源程序文件的文章就会明白了。 这个类还是比较简单的,现简要说明如下: GetPenName 方法返回在设计关卡时所用画笔的名称。 Update 方法用来在设计关卡时更新地图中的基本单元格。 GetChar 方法返回将数据文件(data/*.bxb)导出为文本文件(text/*.bxa)所用的字符。 GetByte 方法返回将文本文件(text/*.bxa)导入为数据文件(data/*.bxb)所用的字节。 IsOk 方法判断表示基本单元格的字节是否合法,也用在数据导入时。 Mark 方法在寻找工人最短移动路线算法中用来标记已经搜索过的基本单元格。 CleanAllMark 方法在上述算法结束时用来清除地图中的所有基本单元格的标记。 Value 方法返回上述算法搜索过程中所作的标记。 ManIn、ManOut、BoxIn、BoxOut 方法用来更新推箱子过程中地图各基本单元格的状态。 IsSlot、IsBlank、IsBox、IsMan 方法用来判断各基本单元格的类型。 补充:寻找工人最短移动路线的算法已经作了改进,地图使用 byte 存储就行了,所以静态类 Block 中的所有“ushort”都要修改为“byte”。请参见“使用 C# 开发智能手机软件:推箱子(五)”中的说明。[原文] 相关文章: |