何广林
编程中为了准确确定角色的位置和实现角色迅速地移动到指定位置,通常会利用到坐标。而小学生对于坐标的概念、知识的应用只停留在用行和列来确定物体的“位置”,并不清楚坐标中值的意义和作用。
在图形化编程软件中,坐标如图1。
在图中,横着的称为“X”轴,竖着的称为“Y”轴,X轴和Y轴交叉的地方称为“原点”。原点位置的坐标是(0,0)。在X轴原点右边的值为正值,左边值为负值。Y轴原点上方值为正值,下方值为负值。
小学四年级的学生在学习《确定位置》一课后理解和掌握了“用数对可以准确而简练地表示物体的位置”。为了帮助学生更进一步理解坐标,培养空间观念,现结合《小猫玩球》游戏教学案例,让学生在已有的“确定位置”数学知识基础上,顺利地完成游戏的设计和编写。
一、《小猫玩球》游戏中的角色:背景、小猫、球。编程环境:编程猫。
二、游戏玩法
游戏开始后,小球随机出现在“6行8列”的黑白方格中,小猫去追逐球,小猫碰到小球后小球消失,小猫每碰到小球一次,成绩增加1分。
三、《小猫玩球》游戏设计
(一)小猫角色程序设计和搭建
1.小猫位置的变化——移动
在本游戏中,学生首先要确定的是小猫如何移动,每次移动多少步才能到达下一格的正中央,这就是小猫位置的变换。
先以X轴为例,小猫往右移动,坐标值是在增加,移动的步数是“正数”,往左移动,坐标值在减少,移动的步数是“负数”。
通过学生对小猫沿X轴左右移动步数的认识和理解,再引导学生理解小猫沿Y轴上下移动:小猫往上移动,坐标值在增加,移动的步数是“正数”,往下移动,坐标值在减少,移动的步数是“负数”。可以得出如下思维导图,如图2。
2.确定小猫的初始位置
在编程时先要确定游戏开始时小猫(角色中心点)出现在舞台上最初(初始)的位置的坐标(如图3)。
3.确定触发小猫移动的“事件”
然后用“移动( )步”积木试出小猫移动到右边一格所需要的步数是“120”步。在此基础上可以利用“事件”模块中“放开右光标键”和“放开左光标键”编写小猫的移动程序。向右移动的步数是正数,反之往左移动的步数是负数(图4)。
然后结合坐标知识,让学生明白当小猫位置变换后,其相应的坐标值也变化了。如图5角色位置坐标(角色中心点)为X:-55 Y:-169(图5)。
同理,让学生自己编写小猫沿“Y”轴上下移动的程序,通过放开“上、下”光标键控制(如图6)。
(二)小球角色程序设计和搭建
1.小球出现在格子中央的规律
通过对小球出现在相邻格的编程测试,得出每次沿X轴移动120步就到达下一格的正中央。以图7为例,当小球从0格向右移动一格时,就增加120步,如移动到2格,增加2个120步,以此类推,可以用下面算式表示,小球初始位置为-290。用同样方法,可以推导出小球沿“Y”轴向上移动的规律。
2.小球随机出现(一)
在游戏中,小球会出现在不确定的某个黑白格中央。在编程中这种不确定性称为“随机”。在编写球的程序时,首先要确定球是向右移动还是向左移动,也就是沿“X”轴左右移动。现以小球出现在“图7”左下第一格位置为特例作说明。
观察上面的算式中, “0-7”代表的是移动的“格数”。其中小球的“初始位置”和移动的“步数”是不变的;变化的是移动的“格数”,小球移动到哪格是不确定的,也就是随机的,所以在编写程序的时候,要用到积木“运算”类中的“在()到()间随机选一个整数”。将数值改为“在0到7间随机选一个整数”。根据上面的算式,还需要用到加法和乘法运算积木。结合上面的编程要点,综合完成X轴坐标的确定(如图8)。
图8中的“-290”,是小球初始位置的X轴坐标。因为是向右移动位置,所以要用加法。如果从右往左移,就用X轴的初始坐标去减移动的步数。
学生理解完成了小球在沿X轴随机移动的程序编写后,再完成小球在沿Y轴往上随机移动的程序编写就不难了(如图9)。
3.小球随机出现(二)
小球的初始位置在任意格子(如图10)时的程序设计。
(1)把小球起点格位置和坐标原点联系起来,把起点格确定为“0”格。
(2)小球向右移动一格是“1”,向左移动一格是“-1”;向上移动一格是“1”,向下移动一格是“-1”。(这里移动一格是120步)
(3)在上述两点知识的基础上,讓学生明白小球沿X轴移动时,在下面的积木中(结合“图10”)应该填上“-5到2”(如图11)。
在此基础上编写“沿Y轴移动”的程序(如图12)。
(三)得分统计程序设计
1.加入变量“成绩”
2.给小球添加程序(如图13)。
在对小球移动进行编程时,首先要让学生从数学角度、数学思维上明白小球位置移动的原理,能理解位置移动各数值的变化,然后从编程角度思考该运用哪些积木模块。当学生理解小球沿X轴移动的道理后,再尝试编写沿Y轴移动就没有那么困难,然后再提出小球在不同格子位置时如何编写程序。
教师在编程教学过程中经常提出符合实际的问题,引入生活中的计算思维实例,让学生来建设流程。利用思维可视化工具培养学生计算思维能力,学生对问题的分析和解决,形成系统化的设计思想最终达成完整的解决方案,在潜移默化中培养学生的计算思维。