转盘游戏在小学、初中、高中的数学教材中,多次出现于是,用GeoGebra模拟了下转盘,可自行设置的地方也较多,先来看效果:由上图可见,可以选择将圆平均划分为几个区域(可划分为3到20个区域),而每个区域都可自行选择颜色(共5种颜色可选);另外,指针的起始位置、转动的速度也都可以选择源文件获取方式,请见文末自动转动10次按钮,顾名思义,点击该按钮,即可自动转动10次在转完10次后,如果再次点击该按钮,则之前的转动结果不清零由此可做到自动转动20次、30次等,以便观察频率的变化点击复位按钮,即初始化那么,该作品是怎么制作的?来看看制作思路:指针的随机转动,可转化为圆上一点的随机转动点的随机转动,又可转化为点的路径值需具有随机性,再用描点指令,即可得到“随机点”而点的转动角度,即为“随机点”的当前位置与上一次位置之间夹角的角度;由此,涉及到在变化过程中,如何保存变量的数值的问题而判断指针落在哪一区域,只需知道“随机点”的路径值在哪一区域下面,开始制作构建框架指令及其解释,请见下图:注:滑动条(Slider)、圆(Circle)、描点(Point)注:序列(Sequence)、均匀分布随机数(RandomUniform)、元素(Element)、长度(Length)、随机元素(RandomElement)、复制自由对象(CopyFreeObject)、旋转(Rotate)、角度(Angle)、向量(Vector)效果如下:为避免不小心拉动转动次数m,将m设置为不允许选定:扇形效果滑动条n决定将圆划分为几个扇形,而生成多个扇形的批量操作,可用执行指令,于是,在n的更新时脚本输入:注:执行 (Execute)、删除 (Delete)、扇形 (Sector)每个扇形都有对应的下拉列表以供选择颜色,于是:在表格区的A1输入:={"红色", "绿色", "蓝色", "黄色","黑色"}其更新时脚本为:执行({"If("+Row(%0)+" ≤n, SetColor(d"+Row(%0)+", Element(A"+Row(%0)+" ,SelectedIndex(A"+Row(%0)+ "))))"})执行({"SetCaption(%0,Text("+Row(%0)+"))"})注:行序(Row)、设置颜色(SetColor)、选定索引(SelectedIndex)、设置标题(SetCaption)、文本(Text)并将A1下拉填充至A20,再勾选“显示下拉列表”此部分的理解,请点击链接而下拉列表的显示与滑动条n有关,需设置显示条件,于是,在指令栏输入:执行(序列("SetConditionToShowObject(A"+k+","+k+"≤n)",k,1,20))注:设置显示条件 (SetConditionToShowObject)另外,拉动n时,扇形的颜色需与下拉列表选定的颜色一致,于是,在n的更新时脚本输入:执行(序列("RunUpdateScript(A"+k+")",k,1,n))注:运行更新脚本 (RunUpdateScript)当前部分小结:转动效果希望达到的效果是:点击转动按钮——指针开始动,并显示转动结果输入如下指令:注:去除未定义对象 (RemoveUndefined)、路径值 (PathParameter)创建按钮:注:赋值 (SetValue)、更新作图 (UpdateConstruction)、启动动画 (StartAnimation)、文本 (Text)、选定元素 (SelectedElement)在点击转动按钮前,需先预设文本的背景颜色否则,需将转动按钮的最后一行脚本改为:执行({"SetConditionToShowObject(text"+m+",k==1&&m=="+m+")" })统计结果m0是存放转动的结果,只需用条件计数,就可以计算出现过的颜色次数于是:注:条件计数 (CountIf)、追加 (Append)、表格文本 (TableText)目前效果如下:自动转动如果可以自动转动多次,自然是更好
假设点击按钮,可自动转10次,那么,可以引入滑动条t而要让t每增加1时,相当于点击一次按钮button1,只需用运行单击脚本(RunClickScript)指令即可:我们知道滑动条的速度为1时,滑动条由其最小值运动到最大值,需花费10秒钟而滑动条k是控制指针的转动,所以,需要注意调整k的速度v目前效果如下:之前点击button1,即转动1次但,有了button3后,发现转动次数m显示错误
于是:这是因为对t进行赋值,即为更新t,所以会运行单击脚本(button1)作品完善为让下拉列表与扇形对应起来,需显示文本1,2,3,……于是:并且,需将l6的图层设置为1而滑动条n的更新时脚本需加上:执行(序列("SetLayer(d"+k+",0)",k,1,n))注:设置图层 (SetLayer)另外,为防止还未点击复位按钮,就拉动滑动条n来改变区域数,于是,在n的更新时脚本输入:运行单击脚本(button2)至此,整个作品就完成了
拓展1让“变化”触手可及
教你保存变化过程中的数值——GeoGebra提到了多种方式保存随机量的值,而本作品采用的是只保存随机量的当前值与上一个值;若是采用保存随机量所有值的方式——让一个随机量的值作为一个对象的话,也是可以的不过——由此涉及到了多个对象,处理起来较为费力——需多次应用到执行指令,可读性也不高:两种方式的对比由此也可以看到采用只保存随机量的当前值与上一个值的便利之处拓展2想一想:本作品是让指针转动,能不能做到让指针不动,而转盘随机动呢?如果能做到,可以在本作品的基础上怎么修改?主要是修改什么?如需本作品的源文件,请评论:转盘
0 评论