我正在制作一个游戏,其中一部分玩家必须参与对话。游戏向玩家询问question
并让3 options
回答。当玩家回答时,根据玩家之前的回答,会弹出一个新问题。这意味着,现在有3
个潜在的问题。这些问题中的每一个都带来了3个新答案,因此现在有9个潜在answers
。并且每个答案都会再次提出问题,因此现在有9 questions
和27
潜在answers
等等等等......
我不要求解决方案,但是如何设置它的想法将非常感激。我只是不知道如何正确组织它。开发人员通常如何在他们的游戏中做到这一点?
谢谢!
修改
感谢 Duncan C 的想法。我为解决这个问题所做的只是一个带有字典的plist,里面包含很多小字典。每个小字典 - 一个可能答案和唯一ID的问题。我举了一个模型的例子:
<key>q1</key>
<dict>
<key>question</key>
<string>Do you want to go left, right or straight?</string>
<key>a1</key>
<string>Left.</string>
<key>a2</key>
<string>Right.</string>
<key>a3</key>
<string>Straight.</string>
<key>a1key</key>
<string>q2.0</string>
<key>a2key</key>
<string>q2.1</string>
<key>a3key</key>
<string>q2.2</string>
</dict>
<key>q2.0</key>
<dict>
<key>question</key>
<string>You went left and found the key.</string>
<key>a1</key>
<string>Take the key.</string>
<key>a2</key>
<string>Go forward.</string>
<key>a3</key>
<string>Go back.</string>
<key>a1key</key>
<string>q2.01</string>
<key>a2key</key>
<string>q2.02</string>
<key>a3key</key>
<string>q2.03</string>
</dict>
<key>q2.1</key>
<dict>
<key>question</key>
<string>You went right and met a monster.</string>
<key>a1</key>
<string>Fight it.</string>
<key>a2</key>
<string>Run away.</string>
<key>a3</key>
<string>Hide from it.</string>
<key>a1key</key>
<string>q2.11</string>
<key>a2key</key>
<string>q2.12</string>
<key>a3key</key>
<string>q2.13</string>
</dict>
<key>q2.2</key>
<dict>
<key>question</key>
<string>You went straight and found a castle!</string>
<key>a1</key>
<string>Enter it.</string>
<key>a2</key>
<string>Continue going straight without visiting the castle.</string>
<key>a3</key>
<string>Go back.</string>
<key>a1key</key>
<string>q2.21</string>
<key>a2key</key>
<string>q2.22</string>
<key>a3key</key>
<string>q2.23</string>
</dict>
依此类推。因此,每次玩家选择其中一个选项时,都会出现下一个链接词典。我认为它的效果非常好,并且可以使用相同的问题在彼此之间进行链接,因此没有必要重写相同的内容。
答案 0 :(得分:2)
我建议使用plist而不是XML。 Plists更容易创建,更易于阅读。
在任何一种情况下,将您的问题和答案都放到外部文件中会使您的程序变得灵活,而不需要太多努力。然后,如果您稍后决定要提出50个问题,则只需将记录添加到您的文件中即可。
我会建议一系列字典。您可以像这样创建它:
#define K_QUESTION_KEY @"question"
#define K_ANSWERS_KEY @"answers"
#define K_CORRECT_ANSWER_INDEX @"answerIndex"
NSArray *questions = @[
@{K_QUESTION_KEY: @"What is your quest",
K_ANSWERS_KEY: @[@"I seek truth and enlightenment",
@"I seek to escape from reality",
@"I seek the Holy Grail"];
K_CORRECT_ANSWER_INDEX: @(2)
},
@{K_QUESTION_KEY: @"What is your favorite color",
K_ANSWERS_KEY: @[@"Blue",
@"Red",
@"Blue - no, green!"];
K_CORRECT_ANSWER_INDEX: @(1)
},
@{K_QUESTION_KEY: @"What is the airspeed velocity of an unladen swallow",
K_ANSWERS_KEY: @[@"42",
@"I don't know",
@"A European or African swallow?"];
K_CORRECT_ANSWER_INDEX: @(2)
}
];
然后使用
将其写入磁盘[questions writeToFile: file_path atomically: YES];
然后你会使用类似的语法来读取文件并遍历它。
答案 1 :(得分:1)
我没试过,但这是我的建议:
<qa>
<question_1 question="what is your name ?">
<option value="mikel" />
<option value="john" />
<option value="sosan" />
</question_1>
<mikel value="what is the biggest thing in the word ?">
<option value="thing1" isTrue="false"/>
<option value="thing2" isTrue="false"/>
<option value="thing3" isTrue="true"/>
</mikel >
....
<!--and for other answers -->
<thing1 value="what is the biggest thing in the word ?">
<option value="thing11" isTrue="false"/>
<option value="thing22" isTrue="false"/>
<option value="thing33" isTrue="true"/>
</thing1>
... so on
</qa>
如果您使用了xml,那么您甚至可以将任何其他文件用于同一个应用程序。其他问题。
希望这对你有所帮助,祝你好运!