我已经通过互联网搜索,但我没有找到任何直接的答案。我正在尝试开发的基本上是一个三个相同对象的匹配游戏。我在一行中有 3 个 UIButton。(这 3 个按钮中的每一个都有一个黑帽图标)。将有 3 种独特类型的帽子。有 3 行,每行三个项目。我想触摸第一顶帽子并显示一个从 0 到 2 的数字(比如说 1)。选择第一顶帽子后,我希望第二顶帽子在剩下的 2 个数字之间生成一个数字(选择是 0 和 2,比如说 2)。最后,当我触摸第三个帽子时,它会生成最后一个余数(本例中为数字 0)。选择数字的主要原因是因为我希望某个数字代表唯一的“帽子”,所以当我选择一个带有数字 1 的帽子,会弹出一顶蓝色帽子,数字 0 是一顶红帽等……我已经实现了整个动画和东西。我只是在“唯一随机数选择”中苦苦挣扎。我确信数组将成为“随机逻辑”的一部分,但我没有设法正确实现它......任何帮助将不胜感激:) 谢谢大家!
问问题
2429 次
2 回答
3
您可以使用 arc4random 和一个可变数组属性编写一个方法,该方法非常简单,该属性存储已显示为 NSNumber 对象的数字。
-(NSInteger) randomNumberZeroToTwo {
NSInteger randomNumber = (NSInteger) arc4random_uniform(3); // picks between 0 and n-1 where n is 3 in this case, so it will return a result between 0 and 2
if ([self.mutableArrayContainingNumbers containsObject: [NSNumber numberWithInteger:randomNumber]])
[self randomNumberZeroToTwo] // call the method again and get a new object
} else {
// end case, it doesn't contain it so you have a number you can use
[self.mutableArrayContainingNumbers addObject: [NSNumber numberWithInteger:randomNumber]];
return randomNumber;
}
}
arc4random 返回一个 NSUInteger,因此您必须对其进行强制转换以避免 NSNumber 的警告。
还要确保通过添加此代码来实例化您的可变数组,以便在调用 self.mutableArrayContainingNumbers 时自动执行此操作(即延迟实例化)。
-(NSMutableArray *) mutableArrayContainingNumbers
{
if (!_mutableArrayContainingNumbers)
_mutableArrayContainingNumbers = [[NSMutableArray alloc] init];
return _mutableArrayContainingNumbers;
}
于 2013-10-14T23:12:17.273 回答
1
有一组可选择的数字。
pickable = @[0,1,2]; //Use NSNumbers but you get the idea.
/*Code to generate random number (rNum) with the range of 0-([pickable count]-1)*/
/*
Assign the number to your hat
and then remove that object from pickable
*/
[pickable removeObjectAtIndex:rNum]
and loop over that until [pickable count] == 0;
我希望这能给你带来好运。
于 2013-10-14T23:11:20.243 回答