0

シャッフルされた単語をブロックで表示し、ユーザーが単語を形成するために適切な順序でタップする必要があるパズル ゲームを開発しようとしています。単語を最終的に文字列として選択し、それをシャッフルして、シャッフルされた配置をボックスに表示します。たとえば、単語がクリケットであるとします。画面に次の形式で表示されるはずです。

ここに画像の説明を入力

配列をシャッフルして、ごちゃごちゃした配列を形成する方法は次のとおりです

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

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

}

ラベルやテーブルビューなどを使用して表示できるようになりました

于 2013-05-31T11:10:26.120 に答える
0

私の問題に対するより正確で論理的な答えを見つけました。

アルファが述べたように、配列をシャッフルしてソートされたものを形成する必要があります。たとえば、次のように、インデックスに基づいてランダムな単語を 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 に答える