Ale*_*one 1 random objective-c nsarray ios
我有一系列随机属性我想分配给我正在开发的游戏中的设备.
我在下面使用的代码是返回NSArray.我很感兴趣,如果有方法从该数组中获取项索引而不获取重复值.显而易见的解决方案是使用返回的数组创建一个可变数组,执行随机操作,删除返回的项目并循环直到收到项目数.
但是有没有不同的方法从NSArray获取X随机项而不会重复?
//get possible enchantments
NSPredicate *p = [NSPredicate predicateWithFormat:@"type = %i AND grade >= %i", kEnchantmentArmor,armor.grade];
NSArray* possibleEnchantments = [[EquipmentGenerator allEnchantmentDictionary] objectForKey:@"enchantments"];
//get only applicable enchantments
NSArray *validEnchantments = [possibleEnchantments filteredArrayUsingPredicate:p];
NSMutableArray* mutableArray = [NSMutableArray arrayWithArray:validEnchantments];
NSDictionary* enchantment = nil;
if(mutableArray.count>0)
{
//got enchantments, assign number and intensity based on grade
for (int i = 0; i<3;i++)
{
enchantment = mutableArray[arc4random()%mutableArray.count];
[mutableArray removeObject:enchantment];
//create enchantment from dictionary and assign to item.
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1161 次 |
最近记录: |