原文链接地址:http://www.iphonegametutorials.com/2011/03/17/cocos2d-game-tutorial-%E2%80%93-building-a-slide-image-game-part-2-with-solution/

教程截图:

  大家好!我们将再一次回到滑动图片游戏教程,然后给它添加一些新的特性。我们将添加判断,是否玩家成功解谜。这个任务很明了了,让我们直接开干吧!

  这里有本教程的完整源代码

  本教程的所有信息,都是基于上一篇教程,所以在继续阅读之前,请你先看第一篇教程。

  好了,现在,是时候教大家如何实现啦! 

  首先,在tile.h中,我们需要添加一个新的变量“originalValue”,用来保存Tile的初始位置。这样的话,当你把Tile打乱的时候,我们就可以使用这个位置与新的位置作比较,以此来判断玩家是否完成拼图。

@interface Tile : NSObject {
int x, y, value, originalValue;
CCSprite
*sprite;
}

-(id) initWithX: (int) posX Y: (int) posY;
@property (nonatomic,
readonly) int x, y;
@property (nonatomic)
int value;
@property (nonatomic)
int originalValue;
@property (nonatomic, retain) CCSprite
*sprite;
-(BOOL) nearTile: (Tile *)othertile;
-(void) trade:(Tile *)otherTile;
-(CGPoint) pixPosition;
@end

  接下来,我们打开box.m,然后在check函数的底部,作下面的修改:

destTile.value = (7 * destTile.x) + destTile.y;
destTile.originalValue
= destTile.value;
destTile.sprite
= sprite;

  如果你是直接从第一个工程的源代码进行修改的话,那么,原来的代码如下所示:

destTile.value = imgValue;
destTile.sprite
= sprite;

  在你完成这些修改以后,我们还有最后一件事件需要做,就是在box.m里面添加一个新的函数,用来判断游戏状态。

-(BOOL) checkSolution {

BOOL isSolved
= true;

for (int x=0; x < size.width; x++) {
for (int y=0; y < size.height; y++) {
Tile
*tile = [self objectAtX:x Y:y];

if (tile.originalValue != tile.value) {
isSolved
= false;
}
}
}

if (isSolved) {
NSLog(
@"The Sliding Image is Solved");
return true;
}
else {
NSLog(
@"The Sliding Image is NOT Solved");
return false;
}

return true;
}

  这里就是遍历所有的Tiles,然后比较value和originalValue的值,如果全部相等,则表明成功解谜,否则,就表明失败。

  最后,在PlayLayer.m中,我们在ChangeTileWithA方法里面添加下面的代码:

NSLog(@"Check Solution");

BOOL isSolved
= [box checkSolution];

CCLabel
*solvedLabel = (CCLabel*)[self getChildByTag:kSolvedText];

if (isSolved) {
[solvedLabel setString:
@"The Puzzle is Solved"];
}
else {
[solvedLabel setString:
@"The Puzzle is NOT Solved"];
}

  这样,每一次你交换两个小图片的时候,都会判断一下游戏的状态,同时用CCLabel显示在屏幕上面。

  如果大家有什么问题,请留言。

  下篇教程见!

  

作者: 子龙山人 发表于 2011-07-27 11:01 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"