0

こんにちは、現在、私のゲームは fl_food.plist から fl_gfood.png または fl_bfood.png をロードしています。それはうまくいきますが、今では 17 個の悪い食品 .png と 17 個の良い食品 .png があります。私の質問は、各グループの 17 項目の 1 つをランダムに表示するにはどうすればよいですか? スプライトの png ファイル名にワイルドカードを使用できますか? 以下のコードコメントを参照してください。また、.plist ファイル名を配列にロードし、ランダムに名前を選択できる可能性があるという提案もありました。

@implementation Food

+ (void)loadAssets {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        [[FLSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[AssetHelper getDeviceSpecificFileNameFor:@"fl_food.plist"]];
    });

}

- (id)init {
    self = [super init];
    if (self) {
        self.size                   = CGSizeMake(16 * __HIGHRES_SCALE, 16 * __HIGHRES_SCALE);
        self.offset                 = CGPointMake(8 * __HIGHRES_SCALE, 8 * __HIGHRES_SCALE);
        self.removeAfterCollision   = YES;
        self.collideable            = NO;
        self.score                  = 10;
    }
    return self;
}

- (FLSprite *)sprite {
    if(_sprite == nil) {

        if(self.score < 10) {
            _sprite = [FLSprite spriteWithSpriteFrameName:@"fl_gfood.png"]; // fl_gfood_*.png ... Can I do something like this?
        } else {
            _sprite = [FLSprite spriteWithSpriteFrameName:@"fl_bfood.png"];
        }
    }
    return _sprite;
}
4

1 に答える 1

1

arc4random() と stringByAppendingString を使用します

- (FLSprite *)sprite {
    if(_sprite == nil) {
        NSString *disFood;

        disFood = (self.score < 10) ? @"fl_gfood" : @"fl_bfood";

        //random # between 1 - 10
        int randNum  = (arc4random() % 10)+1;

        NSString *formattedName = [NSString stringWithFormat:@"_%i.png",randNum];

        disFood = [disFood stringByAppendingString:formattedName];

        _sprite = [FLSprite spriteWithSpriteFrameName:disFood]; 

        NSLog(disFood);//Logging disFood String;
    }
    return _sprite;
}
于 2013-04-16T04:04:05.260 に答える