isokissa/alleswisser

该软件包已被废弃,不再维护。未建议替代软件包。
该软件包最新版本(dev-develop)没有可用的许可证信息。

dev-develop 2015-04-15 07:17 UTC

This package is not auto-updated.

Last update: 2021-11-02 19:10:21 UTC


README

Web应用程序将提出问题,试图猜测用户所想象的东西。如果找到正确答案,它将庆祝,否则它将学习并在下次变得更有知识。

如果您不介意外观和感觉的完全缺失,请在此处测试一些最近版本:http://alleswisser.isokissa.org

它的工作原理

每个问题都有两个答案:是或否。

答案可以是具体的最终答案,也可以是指向下一个问题的指针

无论答案是是还是否,如果有一个指向下一个问题的指针,则跳转到该下一个问题。如果有最终答案,询问它是否正确。如果是 - 庆祝胜利。如果不是,询问“如何区分?”,并将指向答案的指针放置到相应的占位符。

"questions" 数据映射

<questionId> -> <questionText>

"answers" 数据映射

<questionId>[y|n] -> <answer>|<nextQuestionId>

示例

1 -> Is it a living thing?
2 -> Is it a man-made thing? 

1y -> cat
1n -> 2
2y -> car
2n -> stone

控制器动作

下一个动作以粗体显示。

no-action 动作

当请求中没有“动作”时,执行此动作。它开始新的会话,这意味着询问第一个问题的答案。如果没有第一个问题,则执行 init 动作并要求用户添加第一个问题

"init" 动作

添加第一个问题。如果“questions”数据映射不为空,则执行初始 no-action 表单并带有错误信息。此动作有以下参数

  • question -> 问题的文本
  • answerYes -> “是”的情况下的最终答案
  • answerNo -> “否”的情况下的最终答案

如果任何参数未提供,则下一个动作将是再次执行 init,带有适当的错误信息。如果所有参数都已提供,则下一个动作将是“谢谢”消息和 no-action 表单,以便开始新的会话。

"add" 动作

在给定的 parentAnswerId 下添加一个终端问题。一个“终端问题”是指具有“是”和“否”分支的最终答案的问题。动作参数

  • parentAnswerId -> 此参数是指向 answers 数据映射的指针。 (1) 新问题将作为该参数的子问题添加 (2) 使用此参数提供的答案将更新以指向新问题 (3) 原始答案将移动到新问题的“否”分支 (4) 新问题的“是”分支将是来自 answerYes 参数的值。
  • question -> 问题的文本
  • answerYes -> “是”的情况下的最终答案
  • answerNo (只读) -> 在“没有”情况下的最终答案。仅用于在出现错误时帮助视图重新渲染表单,而不需要datamap查找。

"answer" 动作

answer 动作显示问题并期望用户回答“是”或“否”。参数

  • questionId -> 被问问题的id
  • answer -> 包含答案的值:“是”或“否”

作为反应,控制器将查找给定 questionIdanswer 组合的答案datamap,并根据找到的值执行以下操作之一

  • 未找到答案:下一个动作将是无操作并显示错误消息。这是系统错误,意味着数据损坏。
  • 答案是数字:这意味着下一个问题的答案id。下一个动作将是下一个问题的 answer
  • 答案不是数字:它被认为是最终答案。下一个动作将是询问最终答案,动作是 answerFinal

"answerFinal" 动作

询问最终问题。参数

  • answerId -> 被问问题的id
  • finalAnswer -> 最终答案的文本。
  • answer -> 包含答案的值:“是”或“否”

如果答案是“是”,则写入胜利消息并执行无操作。如果答案是“否”,则生成 add 表单以询问正确答案和区分问题。