使用Switch-blocks解析Text Adventure的输入?

Ian*_*dle 2 c# string adventure switch-statement text-based

好的,我现在有一个目标是进行基本的文本冒险.但是,要做到这一点,我需要/想要一个可以执行以下操作的switch语句:

  • 检查一个字符串是否在里面有一个单词SOMEWHERE.
  • 检查一个字符串是否在内部的任何组合中有两个单词.

我怎么做到这一点?你能告诉我这个具体例子的编码吗:

提示用户输入数据.switch语句将"look box"视为一种情况,并将"sleep"视为另一种情况.程序不关心任何单词的顺序,但是关心字母的顺序.

请详细解释一切.我刚刚开始编码.

编辑:谢谢你的所有答案.我知道有更好,更复杂,更有用的处理方法,但它还不是我的水平.

Eri*_*ert 12

人们有时会问我为什么不建造船只.我很方便,我喜欢建造东西,然后我开航.我总是告诉他们,那些喜欢航行的人不应该建造船只,因为你最终会在你的船库里建造一艘船前花三年时间才能开航.如果你的目标是航行,买船.如果你的目标是建造一艘船,建造一艘船.

如果您的目标是通过撰写文本冒险来学习C#,那么您将学到很多东西.如果你的目标是编写文本冒险,那么不要使用C#,使用Inform7.它易于学习,专门用于编写文本冒险,可能是世界上最高级的语言.这是一种很棒的编程语言,我强烈推荐它.

回答你的具体问题:这不是一个很好的方法.文本冒险处理器实际工作的方式是首先编写一个程序,将用户键入的句子分解为标记.您必须逐个字符地搜索字符串,以查找单词之间的边界,例如空格,逗号,句点等.一旦找到边界,就可以提取边界之间的子串,并尝试通过将每个单词与字典中的单词进行比较来识别每个单词.

一旦你有一系列令牌,你就会尝试将序列与语法相匹配.也就是说,您可以看到令牌序列是否可以归类为单字命令,如{"look"}或动词 - 名词短语,如{"look","at","the","red","按钮"}.你想打破它 - "看"是动词,"at"是介词,"红色按钮"是动词的对象,"the"是文章,"red"是形容词和"按钮"是名词.

听起来你是初学者,所以首先要集中精力进行词法分析; 一次遍历字符串一个字符,识别单词边界,并构建一个List<string>标记.语法分析技术可能非常复杂; 得到简单的东西,先坚实.

  • @IanVal:你的问题是"我怎么做错了?" 而答案是*你做错了*.相信我,你将通过构建一个合适的词法分析器和解析器来学习*更多*关于编程,而不是通过一起攻击试图处理每个案例的千行"if"语句. (12认同)