【问题标题】:Creating classes in Real Time?实时创建课程?
【发布时间】:2011-03-21 14:19:21
【问题描述】:
我正在用 Objective-C 制作一个匹配游戏,我正在尝试找出一种方法来在数组的值被洗牌后保留它们。
从“plist”文件中填充三个不同的数组,它们各自的元素相互对应(即第一个数组中的第 n 个元素与第二个和第三个数组中的第 n 个元素匹配)。
然后将数组打乱并显示。然而,在洗牌的过程中,我失去了在元素之间找到匹配项的能力,因为它们现在是随机顺序的。
可以在page 上找到此问题的解决方案。用户“chrisL”建议为每个问题/答案匹配创建一个类。这是一个合理的解决方案,但是我需要让这个游戏变得灵活,以便有人可以添加任意数量的匹配元素,而无需接触任何代码。
我觉得这样做的唯一方法是确定有多少匹配项并为它们实时创建类,但这听起来像是编程不切实际。
谁能给我一些建议来解决这个问题?
【问题讨论】:
标签:
objective-c
class-design
shuffle
【解决方案1】:
我认为您不理解向您建议的解决方案。您可以动态地实例化一个类的对象(这完全正常)
,而不是动态生成类
-
您的问题列表是“扁平化”的,只是约定保证每组 6 个相邻项目对应一个问题。取而代之的是,创建一个问题数组(其中每个问题都是一个问题元素数组),然后您就可以对外部数组进行洗牌,而无需担心。
[Q1, a1, b1, c1, Q2, a2, c2] --> [[Q1, a1, b1, c1], [Q2, a2, b2, c2]]
-
下一点是,使用数组来表示问题,按照惯例,第一个元素是问题文本,下一个元素是选项是不好的编程习惯。不要使用这种表示,而是创建一个 Question 类,然后实例化 Question 对象以填充您的问题列表。
这种面向对象的方法有两个主要好处:
- 您可以在访问问题时使用正确的名称和方法,而不是临时索引。
- 后面添加不同类型的问题变得更容易。