0

我正在尝试开发一个益智游戏,我们在块中显示一个打乱的单词,用户必须以正确的顺序点击以形成单词。我有一个大约 3k 个单词的数组,我已经打乱了数组并形成了一个混乱的数组。现在我想最终选择一个单词字符串,将其打乱并在框中显示打乱的排列,例如单词是 cricket,它应该在屏幕上出现以下格式:

在此处输入图像描述

这是我如何打乱数组并形成一个混乱的数组

srandom(time(NULL));
for (NSInteger x=0;x<[greWordsArray count];x++)
{
   NSInteger randomNumber = (random() % ([greWordsArray count] - x)) + x;
   [greWordsArray exchangeObjectAtIndex:x withObjectAtIndex:randomNumber];
}

我也忘了说我有一个“新”按钮,如果用户点击它,新单词应该出现,并且像往常一样它应该处于随机模式,然后显示在块中。

有人可以指导我如何做到这一点,我想知道用什么来显示块中的字符,无论是按钮、文本字段还是其他对象。我还需要一些关于根据字长更改块数的帮助。还有如何在标签上显示所选字符。我承认我们可以使用标签并在其上排列字符,但是推荐的方法是什么,我应该为每个字符或单个标签使用标签,然后根据字符选择允许间距.如果是这样我应该怎么做。

人们会想知道我尝试了什么,但请帮助我,因为我是这类益智游戏的新手,至少为我提供一些可以理解的入门资源。

4

2 回答 2

2

Suppose you have wordsArray which consists of 3k words

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] ;

}

Now you can show it using label or tableview or anything

于 2013-05-31T11:10:26.120 回答
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 的坐标位置,您可以根据需要更改,谢谢 :)

希望它可以帮助一些人,快乐的编码!

于 2013-06-10T09:46:53.270 回答