您当前的位置: 首页 >  游戏

(NO.00001)iOS游戏SpeedBoy Lite成形记(十九)

发布时间:2015-10-24 20:17:42 ,浏览量:0

最后就是要完成前面设定的第3件事:如果玩家赌对了则赢钱,反之输钱.

前面的框架搭的差不多了,所以这里实现起来也就不难了 ;)

首先我们怎么知道用户输入完毕,然后关闭窗口了?只有在这个点上GameScene才能做下一步操作,比如将实例变量_isBeted置为YES.

一个可能的方法是创建一个回调协议,在GameScene实现该协议.一旦菜单窗口关闭就调用协议中的方法.

因为这个例子中的菜单窗口不多,回调也不复杂.所以我们用另一种方法,就是给每个弹出窗口赋予一个唯一的名字,然后在GameScene的removePopup中做判断,从而执行对应的代码.

打开SpriteBuilder,给moneyLayer窗口指定一个名字moneyLayer:

这里写图片描述

回到GameScene修改removePopup方法如下:

-(void)removePopup{ if (_popupLayer) { NSString *popupName = _popupLayer.name;

        [_popupLayer removeFromParent];
        _popupLayer = nil; self.userInteractionEnabled = YES; if ([popupName isEqualToString:@"moneyLayer"]) {
            [self moneyLayerReturnCallback];
        }else if([popupName isEqualToString:@"gameoverLayer"]){
            [self gameoverLayerReturnCallback];
        }
    }
}

后面else判断的是其他窗口,这里可以先略过.

然后实现moneyLayerReturnCallback方法:

-(void)moneyLayerReturnCallback{ //GameState *gameState = [GameState sharedInstance]; [self updateGambleState];
    _isBeted = YES;
}

里面怎么又有一个updateGambleState方法!?这就是前面用来实现显示每轮比赛压赌状态功能的啊.实现如下:

static NSString *GambleFormat = @"余额:%d 赌金:%d 选手:%d";

-(void)updateGambleState{
    GameState *gameState = [GameState sharedInstance];
    NSString *msg = [NSString stringWithFormat:GambleFormat,gameState.totalMoney,gameState.money,_betPlayer];
    [_interface updateGambleLabel:msg];
}

这就是前面的图片最上方的内容的实现.

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108697博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0468s