我正在尝试开发一个益智游戏,我们在块中显示一个混乱的单词,用户必须按照正确的顺序点击才能形成单词。我有一个大约3k字的数组,我已经洗牌了阵列并形成了混乱array.Now我想最后选择一个单词字符串,将其洗牌并在框中显示混洗排列,例如单词是板球,它应该在屏幕上显示以下格式:
这是我如何改组数组并形成一个混乱的
srandom(time(NULL));
for (NSInteger x=0;x<[greWordsArray count];x++)
{
NSInteger randomNumber = (random() % ([greWordsArray count] - x)) + x;
[greWordsArray exchangeObjectAtIndex:x withObjectAtIndex:randomNumber];
}
我也忘了说我有一个“新”按钮,如果用户点击它,新单词应该出现,像往常一样它应该处于随机播放模式,然后以块显示。
有人可以指导我如何实现这一点,我想知道用什么来显示块中的字符,无论是按钮,文本字段还是其他一些对象。我还需要一些帮助来改变块的数量取决于单词长度。还有如何在标签上显示所选字符。我确认我们可以在上面标记并排列字符,但是建议的方法是,我应该为每个字符或单个标签采用标签,然后允许间距取决于关于字符选择。如果是这样我应该怎么做。
人们会想知道我尝试了什么,但请帮助我,因为我是这类益智游戏的新手,至少为我提供了一些可以理解的来源。
答案 0 :(得分:2)
假设你有由3k字组成的wordsArray
int randomWordIndex = arc4random%[wordsArray count];
NSString *jumbledWord = [wordsArray objectAtIndex:randomWordIndex];
NSMutableArray *characterArray = [[NSMutableArray alloc]init];
// character array having all characters of array
for (int i = 0; i< = [jumbledWord length]); i++)
{
int randomCharacterIndex = arc4random%[jumbledWord length];
[characterArray insertObject:
[NSString stringWithFormat: @"%@",
[jumbledWord characterAtIndex:i]]
atIndex:randomCharacterIndex] ;
}
现在您可以使用标签或tableview或其他任何内容显示它
答案 1 :(得分:0)
我找到了更加精确和合理的答案来解决我的问题,
正如alpha所提到的,我们需要对数组进行洗牌并形成一个排序的数组,我们需要根据索引为jumbledWord分配一个随机单词,比如说:
int randomWordIndex = (int)arc4random%[greWordsArray count];
self.jumbledWord = [greWordsArray objectAtIndex:randomWordIndex];
现在我们已准备好根据字长创建按钮。这就是:
-(void)buttonsCreation:(int)noOfButtons
{
NSMutableArray *charactersArray = [NSMutableArray array];
self.wordButtons = [[NSMutableArray alloc]initWithCapacity:20];
BOOL record = NO;
int randomNumber;
for (int i=0; [charactersArray count] < jumbledWord.length; i++) //Loop for generate different random values
{
randomNumber = arc4random() % jumbledWord.length;//generating random number
if(i==0)
{
[charactersArray addObject:[NSNumber numberWithInt:randomNumber]];
}
else
{
for (int j=0; j<= [charactersArray count]-1; j++)
{
if (randomNumber ==[[charactersArray objectAtIndex:j] intValue])
record = YES;
}
if (record == YES)
record = NO;
else
[charactersArray addObject:[NSNumber numberWithInt:randomNumber]];
}
}
int arrayValue;
float x = 100.0;
float y = 100.0;
for(int i=0;i<[jumbledWord length];i++)
{
if(i>=0 && i<10)
{
arrayValue = [[charactersArray objectAtIndex:i] intValue];
x = x + 33;
UIButton *characterButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
characterButton.frame = CGRectMake(x,175.0, 35.0, 35.0);
[wordButtons addObject:characterButton];
NSString *characterValue = [NSString stringWithFormat:@"%c",[jumbledWord characterAtIndex:arrayValue]];
[characterButton setTitle:characterValue forState:UIControlStateNormal];
[characterButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[characterButton setTag:arrayValue];
[self.view addSubview:characterButton];
}
else if(i>=10 && i<15)
{
y = y + 33;
UIButton *characterButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
characterButton.frame = CGRectMake(y,200.0, 35.0, 35.0);
[wordButtons addObject:characterButton];
NSString *characterValue = [NSString stringWithFormat:@"%c",[jumbledWord characterAtIndex:i]];
[characterButton setTitle:characterValue forState:UIControlStateNormal];
[characterButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[characterButton setTag:i];
[self.view addSubview:characterButton];
}
}
}
请注意,x和y值可能会根据一个人的要求而有所不同。我根据单词长度简要设置了x和y的坐标位置,如果需要,可以更改,谢谢:)
希望它有所帮助,快乐的编码!!