一个简单的游戏逻辑的问题,我已经撞墙,不知道如何克服它... SOS!

时间:2011-02-02 04:42:49

标签: iphone random nsmutablearray logic

好的,所以我选择了这个iOS应用程序开发项目,以便在一边工作,它实现了比我预期的更糟糕的东西。我有一个简单的简单游戏,我在其中提供了一些文本,用户通过选择四个按钮之一来识别它是什么。

现在,我认为这里的pickerview会更容易,但出于设计目的,我将尝试通过按钮以编程方式完成它。所以,让我花点时间告诉你我在哪里。

当用户进入游戏界面时,我传入了两个不同的数组和一个数字。第一个数组包含25个文本项,第二个数组包含25个答案项(就索引而言与第一个数组相对应),然后数字是用户希望播放的轮数,其中25个是最大

一旦视图加载,我就会选择它们所选择的轮数,然后将其发送给返回该数字大小的数组的方法,并使用我用作方法的arc4random() %roundNumber方法进行洗牌。访问我传入的数组的索引。

这非常有效。我可以从源数组中随机有效地抓取,在我呈现它之后,我从索引数组中删除索引以防止重复,并且生活很好。

问题:按钮。我不知道为什么,但我有一个真正的问题,让按钮随机填充,并包含正确的答案。我遇到的主要问题是我无法弄清楚如何随机为按钮分配值。意思是,按钮有名称,button1,button2,button3和button4。因为我以编程方式设置他们的标题,并且我需要将正确答案的值“硬编码”到按钮中,结果是每次正确的答案按钮都是相同的。

这真的只是归结为纯粹的思维和逻辑,坦率地说,此时我的表现很低。我正在使用一个计数器变量来访问并跟踪索引中哪个点是正确答案,但我无法弄清楚其余的难题。

以下是我的想法......但我并不为此感到骄傲。我刚刚重试了不同的事情,现在我所拥有的一切都是一团糟:

    for(int i = 0; i < 4; i++){

            //digits is an array of size 4 that is populated and shuffled in a similar manner to above

            switch ([[digits objectAtIndex:i] intValue]) {
                case 0:
                    [button1 setTitle:[NSString stringWithFormat:@"%@",[self.refList objectAtIndex:[[arr1 objectAtIndex:i] intValue]]]forState: UIControlStateNormal];

                    NSLog(@"1 %@", [self.refList objectAtIndex:[[arr1 objectAtIndex:i] intValue]]);
                    break;
                case 1:
                    [button2 setTitle:[NSString stringWithFormat:@"%@",[self.refList objectAtIndex:[[arr1 objectAtIndex:i] intValue]]]forState: UIControlStateNormal];

                    NSLog(@"2 %@", [self.refList objectAtIndex:[[arr1 objectAtIndex:i] intValue]]);
                    break;
                case 2:
                    [button3 setTitle:[NSString stringWithFormat:@"%@",[self.refList objectAtIndex:[[arr1 objectAtIndex:i] intValue]]]forState: UIControlStateNormal];

                    NSLog(@" %@", [self.refList objectAtIndex:[[arr1 objectAtIndex:i] intValue]]);
                    break;
                case 3:
                                           //note this is where I hard code the correct value
                    [button4 setTitle:[self.refList objectAtIndex:counter] forState: UIControlStateNormal];

                    NSLog(@"4 %@", [self.refList objectAtIndex:[[arr1 objectAtIndex:i] intValue]]);
                    break;
                default:
                    break;
            }

    }

我非常感谢你们的任何帮助,我期待着揭开这个神秘面纱。

谢谢!

1 个答案:

答案 0 :(得分:4)

步骤1 - 创建四个按钮,适当设置框架和背景颜色。在四个按钮0,1,2,3上设置标签。将所有按钮设置为一个动作以进行内部修饰。

步骤2 - 生成0到3之间的随机数。使用该值作为数组的索引,选择一个按钮来保存正确的答案。将正确答案设置为标题。在其余按钮上设置错误答案。 (您可以使用NSSet的setWithArray将所有按钮作为一个集合 - 从集合中删除所选按钮后,使用allObjects获取剩余按钮的数组)

第3步 - 按下按钮 - 它的标签是什么?如果它与随机数匹配,则表示您有胜利者。

每个UIView和子类都有一个标记成员。设置标签很简单:

myButton.tag = 0;

检查它同样容易:

if(unknownButton.tag == randomNumber)
  // winner

您可以通过所有按钮触发一个操作方法,以便检查标记。