何廣林
編程中為了準確確定角色的位置和實現角色迅速地移動到指定位置,通常會利用到坐標。而小學生對于坐標的概念、知識的應用只停留在用行和列來確定物體的“位置”,并不清楚坐標中值的意義和作用。
在圖形化編程軟件中,坐標如圖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軸移動就沒有那么困難,然后再提出小球在不同格子位置時如何編寫程序。
教師在編程教學過程中經常提出符合實際的問題,引入生活中的計算思維實例,讓學生來建設流程。利用思維可視化工具培養學生計算思維能力,學生對問題的分析和解決,形成系統化的設計思想最終達成完整的解決方案,在潛移默化中培養學生的計算思維。