我想以隨機的,不重複的順序製作一個對象數組。如下推薦使用NSMutableSet進行繁重的升級:How to check repetition of numbers in an array?NSMutableSet和NSArray排序,如何保持它們一致?
我在創建後將它們轉儲到NSArray中以訪問它們,但NSArray不保留在我將它們放置在NSMutableSet中的順序中。讓它更令人困惑的是它不一致。
我的代碼:
NSArray *puzzleImages = [[NSArray alloc] initWithObjects:@"elephant.png", @"gorilla.png", @"lion.png", @"zebra.png", @"flamingo.png", @"hyena.png", @"seal.png", @"hippo.png", @"rhino.png", @"tiger.png", @"macaw.png", @"bear.png", nil];
NSArray *puzzleSounds = [[NSArray alloc] initWithObjects:@"elephant", @"gorilla", @"lion", @"zebra", @"flamingo", @"hyena", @"seal", @"hippo", @"rhino", @"tiger", @"macaw", @"bear", nil];
NSMutableSet *aImages1 = [NSMutableSet setWithCapacity:2];
NSMutableSet *aSounds1 = [NSMutableSet setWithCapacity:2];
NSMutableSet *aValues1 = [NSMutableSet setWithCapacity:2];
while([aImages1 count]<=1){
int Randnum1 = arc4random() % 11;
[aImages1 addObject:[puzzleImages objectAtIndex:Randnum1]];
[aSounds1 addObject:[puzzleSounds objectAtIndex:Randnum1]];
[aValues1 addObject:[NSNumber numberWithInt:Randnum1]];
NSLog(@"image:%@, sound:%@, value:%@",[puzzleImages objectAtIndex:Randnum1],[puzzleSounds objectAtIndex:Randnum1],[NSNumber numberWithInt:Randnum1]);
}
NSArray *arrayOfImages1 = [aImages1 allObjects];
NSLog(@"arrayOfImages1: %@",arrayOfImages1);
NSArray *arrayOfSounds1 = [aSounds1 allObjects];
NSLog(@"arrayOfSounds1: %@",arrayOfSounds1);
NSArray *arrayOfValues1 = [aValues1 allObjects];
NSLog(@"aValues1: %@",aValues1);
這裏是我的輸出:
2010-06-20 16:13:14.572 MatchGame[22675:207] image:lion.png, sound:lion, value:2
2010-06-20 16:13:14.574 MatchGame[22675:207] image:macaw.png, sound:macaw, value:10
2010-06-20 16:13:14.575 MatchGame[22675:207] arrayOfImages1: (
"lion.png",
"macaw.png")
2010-06-20 16:13:14.575 MatchGame[22675:207] arrayOfSounds1: (
macaw,
lion)
2010-06-20 16:13:14.576 MatchGame[22675:207] aValues1: {(
2,
10)}
如何赫克沒有的金剛鸚鵡的聲音結束了上述獅子的聲音?當然,它並不總是會發生,但它會在遊戲結束時破壞遊戲。我確定我錯過了一些愚蠢的東西,但花了足夠的時間試圖自己弄清楚。
我沒有看到任何鏈接,你說「在這裏推薦」。 – JWWalker 2010-06-20 21:00:39