与C-Books的交互?
c-book基础设施和软件(也称为c-book?环境CBE)正在欧盟项目MC Squared中开发。C-books是一种电子书,它可以通过所谓的小部件进行增强,这些小部件是运行在C-books中的小软件。通常,c-book的读者可以与小部件交互;此外,这些小部件可以与c-book基础设施以及其他小部件进行内部通信。
小部件与c-book基础设施和其他小部件交互的主要方式有三种:
- 获取和设置CBE评分,
- 使用CBE提供的随机值,
- 与其他小部件通信,即所谓的跨小部件通信。
灰姑娘已集成到c-book基础设施中,因此可以将灰姑娘文件用作c-book小部件。此外,Cinderella现在支持上述交互方式(但请注意,跨窗口小部件通信目前仍在开发中)。本页主要通过CindyScript简要介绍了如何使用此功能。
C-Book得分
灰姑娘通过CindyScript完全支持C-book分数。对于在c-book中使用分数,有一个以c-book形式的教程。请参见http://mc2dme.appspot.com/dwo/dwo.jsp?profile=78&language=en&scoViewNr=5686812383117312.
在这里,我们还对如何做到这一点给出了一些书面解释。首先,请注意,在将一个小部件添加到以编辑模式使用分数的c-book后,您必须单击该小部件才能打开小部件编辑器窗口。在这里,您必须确保选中窗口顶部的“include in grading”(荷兰语为“teltMee”)复选框,并且最大分数设置为正数。此外,您要么必须选中“添加复选按钮”复选框,要么不选中,这取决于小部件与CBE的交互方式。
为了生成您自己的支持分数的小部件,您可以使用下面详细描述的以下功能:
- setmaxscore():设置CBE最高分数的内部版本;这可以用于测试尚未包含在CBE中的小部件。
- getmaxscore():从CBE中获取c-book作者给出的最高分数。
- setscore():将分数设置为非负值。
- getscore():获取之前使用setscore()设置的分数。
- check():要求DME读取当前分数。
设置当前最大分数:setmaxscore(<newmaxscore>)
描述:此函数用于将maxscore的内部版本设置为值newmaxscore。newmaxscore必须是非负整数。如果小部件在CBE内运行,则忽略此内部最大得分。因此,只要小部件仍在独立版本的Cinderella中运行,而不是作为CBE的一部分,此功能仅用于测试目的。
从CBE获得小工具的最大可能得分:获得最大得分()
描述:此函数返回小部件编辑器中指定的当前小部件的最大可能分数。在CBE中,这通常是一个非负整数。
获取当前分数:获得记分()
描述:此函数返回当前小部件的当前分数。这必须在之前使用setscore()进行设置。它通常是一个非负整数。
设置当前分数:setscore(<新闻核心>)
描述:此函数将当前小部件的当前分数设置为值newscore。Newscore必须是非负整数。
告诉CBE阅读此小部件的当前分数:检查()
描述:这个函数告诉CBE向这个小部件询问当前分数(之前已经设置为setscore())。这通常是一个非负整数。
C-Book随机值
Cinderella通过CindyScript完全支持C-book随机值。对于在c-book中使用分数,有一个以c-book形式的教程。请参见
http://mc2dme.appspot.com/dwo/dwo.jsp?profile=78&language=en&scoViewNr=5723475968786432.
这里有一些关于如何做到这一点的简要解释。
为了能够在灰姑娘小工具中使用随机值,你只需要知道你想通过随机参数改变哪些对象。
例如,我们使用一个以CB为底且a=(0,0)的直角三角形的高度AE构造,其中我们要随机设置点C和B的x坐标。
为此,在新页面的编辑模式下,只需在CBE右下角的文本字段中键入以下两行:
B.x=1..6C.x=-6..-1
这告诉CBE为B.x选择1到6之间的随机整数值,为C.x选择-6到-1之间的随机整数。对于大多数随机值,解决方案需要计算平方根。
我们必须如何准备Cinderella小部件才能工作?
我们首先需要知道的是:选择随机值后,DME会传递给灰姑娘小部件什么?实际上,这是最自然的事情。例如,基于以下代码,它可能会将代码传递给小部件:B.x=3C.x=-4在执行灰姑娘小部件“初始化”之后,灰姑娘小组件只需获取这些代码行并执行它们。
因此,如果B和C是自由点,那么一切都是好的。
但是,我们不希望用户移动B和C。为此,我们可以使用灰姑娘的“固定”属性。大多数灰姑娘对象可以“固定”到固定坐标,即不允许使用鼠标或其他任何工具移动它们。
所以,为了能够在“初始化”之后设置B和C的x坐标,我们需要做的是1.在“初始化”事件中,将B和C(甚至所有点)的固定属性设置为“false”2.然后将其设置为“true”(例如,在“draw”事件中)。
这可以通过以下方式实现辛迪脚本代码。将此粘贴到灰姑娘的“初始化”事件部分“辛迪脚本编辑“:
对于所有(allpoints(),检查(,“pinning”,false));
为了在更改B和C的x坐标后固定这些点,将此粘贴到灰姑娘的“抽奖”活动部分辛迪脚本编辑“:
对于所有(allpoints(),检查(,“pinning”,true));
这将修复所有点。
在DME手册中,您可以找到其他几种指定随机值的方法,例如B.x=1,2,5,6仅允许DME在四个值1、2、5和6之间进行选择。我们不在这里讨论这个问题。
此外,不仅可以通过随机参数特征设置点的坐标。
您可以更改灰姑娘对象的任何其他数值属性,该属性可以从辛迪脚本通过语法
…=整数
例如,点也有一个y坐标,因此如果您在“随机参数的变量”中键入以下内容DME中页面右下角的文本区域A.x=-5..5A.y=-3..3然后这两个坐标将被随机设置。
跨窗口通信
跨腰通信仍在发展中。一旦跨窗口小部件通信可用,将对该文档进行调整。
待办事项。。。本节其余部分仍有待编写。。。