Objective c “随机”中无重复项;案例;列表
我是一个完全的初学者,几乎没有编程方面的知识,但我正在帮助我11岁的儿子创建一个小测验应用程序,我们有一个大问题,因为我们不能让每个类别的问题在所有问题出现之前都不重复。 请在下面找到我们目前的情况(受我们在网上找到的一个示例启发),如果有一个简单的解决方案不需要很好的xcode体验就可以实现,我将非常感谢您在这个问题上的帮助 提前感谢,当然,如果问题需要进一步澄清,请告诉我:Objective c “随机”中无重复项;案例;列表,objective-c,code-duplication,Objective C,Code Duplication,我是一个完全的初学者,几乎没有编程方面的知识,但我正在帮助我11岁的儿子创建一个小测验应用程序,我们有一个大问题,因为我们不能让每个类别的问题在所有问题出现之前都不重复。 请在下面找到我们目前的情况(受我们在网上找到的一个示例启发),如果有一个简单的解决方案不需要很好的xcode体验就可以实现,我将非常感谢您在这个问题上的帮助 提前感谢,当然,如果问题需要进一步澄清,请告诉我: -(void)Category2{ switch (QuestionSelected) { case 0:
-(void)Category2{
switch (QuestionSelected) {
case 0:
QuestionText.text = [NSString stringWithFormat:@"question1?"];
[Answer1 setTitle:@"A1" forState:UIControlStateNormal];
[Answer2 setTitle:@"A2" forState:UIControlStateNormal];
[Answer3 setTitle:@"A3" forState:UIControlStateNormal];
Answer3Correct = YES;
break;
case 1:
QuestionText.text = [NSString stringWithFormat:@"question2"];
[Answer1 setTitle:@"A1" forState:UIControlStateNormal];
[Answer2 setTitle:@"A2" forState:UIControlStateNormal];
[Answer3 setTitle:@"A3" forState:UIControlStateNormal];
Answer2Correct = YES;
break;
case 2:
QuestionText.text = [NSString stringWithFormat:@"question3"];
[Answer1 setTitle:@"A1" forState:UIControlStateNormal];
[Answer2 setTitle:@"A2" forState:UIControlStateNormal];
[Answer3 setTitle:@"A3" forState:UIControlStateNormal];
Answer1Correct = YES;
break;
default:
break;
}
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
if (GameInProgress == NO) {
LivesNumber = 3;
ScoreNumber = 0;
GameInProgress = YES;
}
Result.hidden = YES;
Exit.hidden = YES;
StartOver.hidden = YES;
Lives.text = [NSString stringWithFormat:@"%i", LivesNumber];
Score.text = [NSString stringWithFormat:@"%i", ScoreNumber];
Answer1Correct = NO;
Answer2Correct = NO;
Answer3Correct = NO;
LevelLoaded = [[NSUserDefaults standardUserDefaults] integerForKey:@"LevelSaved"];
QuestionSelected = arc4random_uniform(5);
附录(2014年7月4日)
请原谅我,因为我们是新来的网站,我们已经回应了PJS在下面的评论他的答案,我相信格式使它不清楚。请在下面再次找到我们项目当前状态的副本,希望他能看到出了什么问题(副本仍然出现):
LevelLoaded=[[NSUserDefaults standardUserDefaults]整数工作:@“LevelSaved”];
整数长度=20;
int myArray[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
对于(int i=0;i
阿登杜姆2号(10.07.2014)
请在下面找到整个m文件:
(此处的随机值仅适用于类别1)
这就是你所说的FOR循环中的开关块吗?
它仍然在重复这些问题。我是不是把课文放错位置了
#import "Game.h"
@interface Game ()
@end
@implementation Game
-(void)RightAnswer{
ScoreNumber = ScoreNumber + 1;
Score.text = [NSString stringWithFormat:@"%i", ScoreNumber];
StartOver.hidden = NO;
Answer1.hidden = YES;
Answer2.hidden = YES;
Answer3.hidden = YES;
QuestionText.hidden = YES;
Result.hidden = NO;
Result.image = [UIImage imageNamed:@"rightanswer.jpg"];
}
-(void)WrongAnswer{
LivesNumber = LivesNumber - 1;
Lives.text = [NSString stringWithFormat:@"%i", LivesNumber];
StartOver.hidden = NO;
Answer1.hidden = YES;
Answer2.hidden = YES;
Answer3.hidden = YES;
QuestionText.hidden = YES;
Result.hidden = NO;
Result.image = [UIImage imageNamed:@"wronganswer.jpg"];
if (LivesNumber == 0) {
Result.image = [UIImage imageNamed:@"gameover.jpg"];
StartOver.hidden = YES;
Exit.hidden = NO;
GameInProgress = NO;
}
}
-(IBAction)Answer1:(id)sender{
if (Answer1Correct == YES) {
[self RightAnswer];
}
else{
[self WrongAnswer];
}
}
-(IBAction)Answer2:(id)sender{
if (Answer2Correct == YES) {
[self RightAnswer];
}
else{
[self WrongAnswer];
}
}
-(IBAction)Answer3:(id)sender{
if (Answer3Correct == YES) {
[self RightAnswer];
}
else{
[self WrongAnswer];
}
}
-(void)Category1{
int length = 3;
int myArray [] = {0,1,2};
for (int i = 0; i < length - 1; ++i) {
int j = arc4random_uniform(length - i) + i;
int tmp = myArray[i];
myArray[i] = myArray[j];
myArray[j] = tmp;
}
for (int i = 0; i < length; ++i) {
QuestionSelected = myArray[i];
}
switch (QuestionSelected) {
case 0:
QuestionText.text = [NSString stringWithFormat:@"question1"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer3Correct = YES;
break;
case 1:
QuestionText.text = [NSString stringWithFormat:@"question2"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer1Correct = YES;
break;
case 2:
QuestionText.text = [NSString stringWithFormat:@"question3"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer1Correct = YES;
break;
default:
break;
}
}
-(void)Category2{
switch (QuestionSelected) {
case 0:
QuestionText.text = [NSString stringWithFormat:@"question1"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer3Correct = YES;
break;
case 1:
QuestionText.text = [NSString stringWithFormat:@"question2"];
[Answer1 setTitle:@"T.Cubillas(PER)" forState:UIControlStateNormal];
[Answer2 setTitle:@"R.Rensenbrink(NET)" forState:UIControlStateNormal];
[Answer3 setTitle:@"J.Jordan(SCO)" forState:UIControlStateNormal];
Answer2Correct = YES;
break;
case 2:
QuestionText.text = [NSString stringWithFormat:@"question3"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer1Correct = YES;
break;
default:
break;
}
}
-(void)Category3{
switch (QuestionSelected) {
case 0:
QuestionText.text = [NSString stringWithFormat:@"question1"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer2Correct = YES;
break;
case 1:
QuestionText.text = [NSString stringWithFormat:@"question2"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer2Correct = YES;
break;
case 2:
QuestionText.text = [NSString stringWithFormat:@"question3"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer3Correct = YES;
break;
default:
break;
}
}
- (void)viewDidLoad
{
if (GameInProgress == NO) {
LivesNumber = 3;
ScoreNumber = 0;
GameInProgress = YES;
}
Result.hidden = YES;
Exit.hidden = YES;
StartOver.hidden = YES;
Lives.text = [NSString stringWithFormat:@"%i", LivesNumber];
Score.text = [NSString stringWithFormat:@"%i", ScoreNumber];
Answer1Correct = NO;
Answer2Correct = NO;
Answer3Correct = NO;
LevelLoaded = [[NSUserDefaults standardUserDefaults] integerForKey:@"LevelSaved"];
switch (LevelLoaded) {
case 1:
LevelSelected.text = [NSString stringWithFormat:@"Beginner"];
[self Category1];
break;
case 2:
LevelSelected.text = [NSString stringWithFormat:@"Intermediate"];
[self Category2];
break;
case 3:
LevelSelected.text = [NSString stringWithFormat:@"Expert"];
[self Category3];
break;
default:
break;
[super viewDidLoad];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
@end
#导入“Game.h”
@界面游戏()
@结束
@实施游戏
-(无效)正确答案{
ScoreNumber=ScoreNumber+1;
Score.text=[NSString stringWithFormat:@“%i”,ScoreNumber];
StartOver.hidden=否;
回答1.隐藏=是;
回答2.hidden=是;
回答3.hidden=是;
QuestionText.hidden=是;
Result.hidden=否;
Result.image=[UIImage ImageName:@“rightanswer.jpg”];
}
-(无效)回答错误{
LivesNumber=LivesNumber-1;
Lives.text=[NSString stringWithFormat:@“%i”,LivesNumber];
StartOver.hidden=否;
回答1.隐藏=是;
回答2.hidden=是;
回答3.hidden=是;
QuestionText.hidden=是;
Result.hidden=否;
Result.image=[UIImage ImageName:@“errorAnswer.jpg”];
if(LivesNumber==0){
Result.image=[UIImage ImageName:@“gameover.jpg”];
StartOver.hidden=是;
Exit.hidden=否;
GameInProgress=否;
}
}
-(iAction)回答1:(id)发送者{
如果(回答1正确==是){
[自我回答];
}
否则{
[自我回答];
}
}
-(iAction)回答2:(id)发送者{
如果(回答2正确==是){
[自我回答];
}
否则{
[自我回答];
}
}
-(iAction)应答者3:(id)发送者{
如果(回答3正确==是){
[自我回答];
}
否则{
[自我回答];
}
}
-(无效)类别1{
整数长度=3;
int myArray[]={0,1,2};
对于(int i=0;i#import "Game.h"
@interface Game ()
@end
@implementation Game
-(void)RightAnswer{
ScoreNumber = ScoreNumber + 1;
Score.text = [NSString stringWithFormat:@"%i", ScoreNumber];
StartOver.hidden = NO;
Answer1.hidden = YES;
Answer2.hidden = YES;
Answer3.hidden = YES;
QuestionText.hidden = YES;
Result.hidden = NO;
Result.image = [UIImage imageNamed:@"rightanswer.jpg"];
}
-(void)WrongAnswer{
LivesNumber = LivesNumber - 1;
Lives.text = [NSString stringWithFormat:@"%i", LivesNumber];
StartOver.hidden = NO;
Answer1.hidden = YES;
Answer2.hidden = YES;
Answer3.hidden = YES;
QuestionText.hidden = YES;
Result.hidden = NO;
Result.image = [UIImage imageNamed:@"wronganswer.jpg"];
if (LivesNumber == 0) {
Result.image = [UIImage imageNamed:@"gameover.jpg"];
StartOver.hidden = YES;
Exit.hidden = NO;
GameInProgress = NO;
}
}
-(IBAction)Answer1:(id)sender{
if (Answer1Correct == YES) {
[self RightAnswer];
}
else{
[self WrongAnswer];
}
}
-(IBAction)Answer2:(id)sender{
if (Answer2Correct == YES) {
[self RightAnswer];
}
else{
[self WrongAnswer];
}
}
-(IBAction)Answer3:(id)sender{
if (Answer3Correct == YES) {
[self RightAnswer];
}
else{
[self WrongAnswer];
}
}
-(void)Category1{
int length = 3;
int myArray [] = {0,1,2};
for (int i = 0; i < length - 1; ++i) {
int j = arc4random_uniform(length - i) + i;
int tmp = myArray[i];
myArray[i] = myArray[j];
myArray[j] = tmp;
}
for (int i = 0; i < length; ++i) {
QuestionSelected = myArray[i];
}
switch (QuestionSelected) {
case 0:
QuestionText.text = [NSString stringWithFormat:@"question1"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer3Correct = YES;
break;
case 1:
QuestionText.text = [NSString stringWithFormat:@"question2"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer1Correct = YES;
break;
case 2:
QuestionText.text = [NSString stringWithFormat:@"question3"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer1Correct = YES;
break;
default:
break;
}
}
-(void)Category2{
switch (QuestionSelected) {
case 0:
QuestionText.text = [NSString stringWithFormat:@"question1"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer3Correct = YES;
break;
case 1:
QuestionText.text = [NSString stringWithFormat:@"question2"];
[Answer1 setTitle:@"T.Cubillas(PER)" forState:UIControlStateNormal];
[Answer2 setTitle:@"R.Rensenbrink(NET)" forState:UIControlStateNormal];
[Answer3 setTitle:@"J.Jordan(SCO)" forState:UIControlStateNormal];
Answer2Correct = YES;
break;
case 2:
QuestionText.text = [NSString stringWithFormat:@"question3"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer1Correct = YES;
break;
default:
break;
}
}
-(void)Category3{
switch (QuestionSelected) {
case 0:
QuestionText.text = [NSString stringWithFormat:@"question1"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer2Correct = YES;
break;
case 1:
QuestionText.text = [NSString stringWithFormat:@"question2"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer2Correct = YES;
break;
case 2:
QuestionText.text = [NSString stringWithFormat:@"question3"];
[Answer1 setTitle:@"answer1" forState:UIControlStateNormal];
[Answer2 setTitle:@"answer2" forState:UIControlStateNormal];
[Answer3 setTitle:@"answer3" forState:UIControlStateNormal];
Answer3Correct = YES;
break;
default:
break;
}
}
- (void)viewDidLoad
{
if (GameInProgress == NO) {
LivesNumber = 3;
ScoreNumber = 0;
GameInProgress = YES;
}
Result.hidden = YES;
Exit.hidden = YES;
StartOver.hidden = YES;
Lives.text = [NSString stringWithFormat:@"%i", LivesNumber];
Score.text = [NSString stringWithFormat:@"%i", ScoreNumber];
Answer1Correct = NO;
Answer2Correct = NO;
Answer3Correct = NO;
LevelLoaded = [[NSUserDefaults standardUserDefaults] integerForKey:@"LevelSaved"];
switch (LevelLoaded) {
case 1:
LevelSelected.text = [NSString stringWithFormat:@"Beginner"];
[self Category1];
break;
case 2:
LevelSelected.text = [NSString stringWithFormat:@"Intermediate"];
[self Category2];
break;
case 3:
LevelSelected.text = [NSString stringWithFormat:@"Expert"];
[self Category3];
break;
default:
break;
[super viewDidLoad];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
@end
/* Create an array of 5 indices */
int length = 5;
int myArray[] = {0,1,2,3,4};
/* This loop performs a Fisher-Yates shuffle. */
/* Could be implemented as a function or method */
/* for clarity or encapsulation purposes. */
for (int i = 0; i < length - 1; ++i) {
int j = arc4random_uniform(length - i) + i;
int tmp = myArray[i];
myArray[i] = myArray[j];
myArray[j] = tmp;
}
for (int i = 0; i < length; ++i) {
QuestionSelected = myArray[i];
// do whatever the heck you want with QuestionSelected
}