注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

找茬游戏简单实现  

2013-05-25 09:38:46|  分类: ios游戏开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

找茬游戏简单实现,代码如下:

HelloWorldLayer.h

@interface HelloWorldLayer : CCLayer <GKAchievementViewControllerDelegate, GKLeaderboardViewControllerDelegate>

{

    /**************数据****************/

    CGPoint posFlag;

    //用来标记点击的位置

    //如果是完全版的找茬游戏,这个位置应该是一个数组,并且不是直接赋值,而是从本地的文件中读取

    

    /**************本类中使用的变量******/

    int         rForClick;

    //用来标记点击区域的半径

    

    

    /**************UI******/

    /*

     如果有些UI不需要被本类外的使用,并且不需要被本类中的多个方法知道

     那么,直接写在init方法中就可以了,不用声明

     */

    

    //对于这个label,是用来标记当用户点击成功之后,输入的话,这个文字标签就需要在初始化方法和点击成功之后两次使用,需要保留一下引用

    CCLabelTTF* labelSucess;


}


//点击之后调用的方法

- (void) judgeByPos:(CGPoint) touchPos;


//判断点是否在点击区域之内

- (BOOL) checkPos:(CGPoint) touchPos;


//点击成功,显示成功提示

- (void) showSuccessResult;


// returns a CCScene that contains the HelloWorldLayer as the only child

+(CCScene *) scene;


@end



----------------------------------------
HelloWorldLayer.m

@implementation HelloWorldLayer


// Helper class method that creates a Scene with the HelloWorldLayer as the only child.

+(CCScene *) scene

{

// 'scene' is an autorelease object.

CCScene *scene = [CCScene node];

// 'layer' is an autorelease object.

HelloWorldLayer *layer = [HelloWorldLayer node];

// add layer as a child to scene

[scene addChild: layer];

// return the scene

return scene;

}


// on "init" you need to initialize your instance

-(id) init

{

// always call "super" init

// Apple recommends to re-assign "self" with the "super's" return value

if( (self=[super init]) ) {

        

        self.isTouchEnabled = YES;

        //init data

        CGPoint posOrign = ccp(445,195);

        //这里的点应该是从本地读取,这里认定是(445,195)

        posFlag = ccp(posOrign.x,320 - posOrign.y);

        

        //点击半径设置为30像素

        rForClick = 30;

        

        //初始化背景图,也就是斑马的图,并添加

        CCSprite *imgBg = [CCSprite spriteWithFile:@"img.jpg"];

        imgBg.anchorPoint = ccp(0,0);

        [self addChild:imgBg];

        

        //初始化文字标签

        labelSucess = [CCLabelTTF labelWithString:@"Found it!" fontName:@"Marker Felt" fontSize:64];

        labelSucess.position = ccp(240,160);

        [self addChild:labelSucess];

        

        labelSucess.visible = NO;

    }

return self;

}


// on "dealloc" you need to release all your retained objects

- (void) dealloc

{

// in case you have something to dealloc, do it in this method

// in this particular example nothing needs to be released.

// cocos2d will automatically release all the children (Label)

// don't forget to call "super dealloc"

[super dealloc];

}


#pragma mark logic things

- (void) judgeByPos:(CGPoint)touchPos

{

    if ([self checkPos:touchPos] == YES)

    {

        [self showSuccessResult];

    }

}


- (BOOL) checkPos:(CGPoint)touchPos

{

    float a = touchPos.x - posFlag.x;

    float b = touchPos.y - posFlag.y;

    

    float c = a*a + b*b;

    if (c > rForClick*rForClick)

    {

        return NO;

    }

    

    return YES;

}


- (void) showSuccessResult

{

    labelSucess.visible = YES;

}


#pragma mark touch events

- (void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

{

    //点击结束之后,调用

    //获取触摸点的数组

    UITouch *touch = [touches anyObject];

    if (touch.tapCount == 1)

    {

        //把点做简单的变换

        CGPoint location = [touch locationInView:[touch view]];

        location = [[CCDirector sharedDirector] convertToGL:location];

        

        

        //判断单击是否正确

        [self judgeByPos:location];

    }

}


#pragma mark GameKit delegate


-(void) achievementViewControllerDidFinish:(GKAchievementViewController *)viewController

{

AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];

[[app navController] dismissModalViewControllerAnimated:YES];

}


-(void) leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController

{

AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];

[[app navController] dismissModalViewControllerAnimated:YES];

}

@end



  评论这张
 
阅读(52)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017