如何在Cocos2D游戏中实现A*寻路算法(三)

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)


免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!

创建开放和闭合列表

接下来我们将使用2个NSMutableArray来跟踪保存我们的开放和闭合列表.

你可能奇怪为什么不用NSMutableSet代替.好吧,这里有2个原因:

  1. NSMutableSet不是有序的,但是我们想要列表按照F值来排序以便快速查找.
  2. NSMutableSet并不会调用我们在ShortestPathStep类中的isEqual方法去测试是否2个元素是相同的(但是我们需要它这么做).

让我们在CatSprite.h中添加这些数组的定义:

@interface CatSprite : CCSprite {
    //...

@private
    NSMutableArray *spOpenSteps;
    NSMutableArray *spClosedSteps;
}

然后在CatSprite.m中做出如下修改:

// Add to top of file
// Private properties and methods
@interface CatSprite () 
@property (nonatomic, retain) NSMutableArray *spOpenSteps;
@property (nonatomic, retain) NSMutableArray *spClosedSteps;
@end

// Add after @implementation CatSprite
@synthesize spOpenSteps;
@synthesize spClosedSteps;

// Add inside initWithLayer
self.spOpenSteps = nil;
self.spClosedSteps = nil;

//Add dealloc method to CatSprite
- (void)dealloc
{
    [spOpenSteps release]; spOpenSteps = nil;
    [spClosedSteps release]; spClosedSteps = nil;
    [super dealloc];
}
注意:由于原文写作时间比较早,其中一些实例变量声明的方式以及销毁时的处理现在已
经不需要了,你可以在阅读本系列博文中的代码时将这一条记在心中 ;) 猫猪注.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值