GGB数学云 制作GeoGebra闯关游戏

制作GeoGebra闯关游戏

2016年10月8日 人阅读 GeoGebra»尺规作图

摘要: 本文以“构造角平分线”为例介绍基于GeoGebra制作尺规作图闯关实验的方法。

一、在 ggbstudy.top 网站免费注册一个账号

我为GeoGebra爱好者和数学老师提供了一个免费的GeoGebra云平台(数学探究实验开放平台)。
要创建闯关实验,先使用电子邮件或QQ号免费注册一个账号,用于管理个人素材。
邮件账号不会泄露给其他机构,其他用户也看不见你的个人信息。

二、新建GGB素材

在“我的”个人素材页面点击“新建”按钮,或点击顶部导航条的“导入”链接,出现新建素材页面。

输入合适的宽度和高度后点击“新建”按钮进入下一步的编辑界面。绘制如下图所示的 ∠BAC 的三个点和两个线段,后续闯关任务是作出 ∠BAC 的角平分线。

点击“保存”按钮,在“样式”下拉菜单中勾选“显示工具栏”,在“自定义工具栏”输入框中输入 501|5|15|18|10|19|40 (表示工具栏有
线上点、交点、线段、射线、圆、中点、平移显示 等工具,编码说明见“工具栏参考”)。工具栏设置结果见下图。

闯关检测原理是将作图结果与预置图形进行匹配,每匹配一个图形就显示鼓励提示,角平分线画出就提示过关。
为此,我们需要提前画出匹配检测用的预置图形。点击“编辑”按钮,画出下图中的图形。
为了便于识别,可以显示图形的标签、重命名标签。例如下图中角的两条边为 a 和 b,角平分线为 bisector。
最终发布前需要将这些辅助性的预置图形及其标签隐藏。

三、编辑闯关代码

点击“代码”按钮,在JS代码界面输入下面的检测代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 引入系统内置的尺规作图模块
import "euclid.js";
// 初始化尺规作图模块,指定监听新画图形的函数名
function ggbOnInit() {
euclidInit('newObjectListener');
}
// 新画图形的监听函数,参数为对象名
function newObjectListener(obj) {
// 检查新画图形:第3关,最少步数为3,简单工具最少步数4
var eu = euclidNewObjectListener(obj, {
levelName: 'Level3', minSteps: 3, minPrimitives: 4
});
// 新图形不用于作图则不继续检查
if (!eu) {
return;
}
// 检查新点是否在角平分线段 bisector 上,无论是中点还是两圆交点
eu.checkPointOnTarget('bisector', 0.5, 0);
// 检查新点是否在角边 a 上
eu.checkPointOnTarget('a', -0.3, 0.3);
// 检查新点是否在角边 b 上
eu.checkPointOnTarget('b', -0.3, 0.3);
// 检查新线段或射线是否与角平分线段共线且同向
eu.checkDirection('bisector', -1, 0);
// 有新点在角边或角平分线段上则显示进度文字
eu.setProgress(eu.drawn('pa') + eu.drawn('pb') + 5 * eu.drawn('pbisector'));
// 新线段或射线是否与角平分线段共线且同向,则过关
eu.levelCompleted(eu.drawn('bisector'));
}

然后点击“应用”按钮,就可以在下方的素材预览区域测试闯关效果了。

上面的js代码的说明见注释,其中 checkPointOnTarget、checkDirection 函数中的第一个参数为预置图形的名称,后两个参数为要显示“真棒”文字的偏移距离。
checkPointOnTarget(‘a’,…) 检测通过后会设置前缀为p的标记 pa,此时 eu.drawn(‘pa’) 成立。
checkDirection(‘bisector’,…) 检测通过后会设置标记 bisector,此时 eu.drawn(‘bisector’) 成立。

euclidNewObjectListener 返回的对象有下列可用的检测函数:

  • checkObject(target, x, y):检查新画图形是否与预置图形相同,此时有 drawn(target)。
  • checkSegment(target, x, y):检查新画线段是否与预置线段重合,此时有 drawn(target)。
  • checkDirection(target, x, y):检查新画线段、射线或直线是否与预置线段或射线共线且同向,此时有 drawn(target)。
  • checkPointOnTarget(target, x, y):检查新画点是否在预置图形上,此时有 drawn(‘p’+target)。
  • drawn(target):检查预置图形是否已匹配。
  • levelCompleted(condition):指定的通关条件成立后执行通关操作。
  • setProgress(percent, mul):显示通关进度,percent 为0到9的数,第二个参数 mul 默认为10,如果第二个参数为1则percent表示0到90的数。

在HTML代码界面输入下面的网页代码,在通关时就会显示#hidden的文字内容。点击出现的链接进入下一关的方法,将另文介绍。

1
2
3
4
<div id="hidden">
<p id="level" onclick="">很棒!你可以点这进入下一关了。</p>
</div>
<div id="applet"></div>

四、发布素材

点击“提交”按钮,输入素材标题,提交到个人素材库或某个组内,其他人就可打开素材测试闯关效果了。
完整实验见“第三关 - 构造角平分线”,登录后闯关就可进入排行榜。

分享到: 更多