何廣林
編程中為了準(zhǔn)確確定角色的位置和實現(xiàn)角色迅速地移動到指定位置,通常會利用到坐標(biāo)。而小學(xué)生對于坐標(biāo)的概念、知識的應(yīng)用只停留在用行和列來確定物體的“位置”,并不清楚坐標(biāo)中值的意義和作用。
在圖形化編程軟件中,坐標(biāo)如圖1。
在圖中,橫著的稱為“X”軸,豎著的稱為“Y”軸,X軸和Y軸交叉的地方稱為“原點”。原點位置的坐標(biāo)是(0,0)。在X軸原點右邊的值為正值,左邊值為負(fù)值。Y軸原點上方值為正值,下方值為負(fù)值。
小學(xué)四年級的學(xué)生在學(xué)習(xí)《確定位置》一課后理解和掌握了“用數(shù)對可以準(zhǔn)確而簡練地表示物體的位置”。為了幫助學(xué)生更進(jìn)一步理解坐標(biāo),培養(yǎng)空間觀念,現(xiàn)結(jié)合《小貓玩球》游戲教學(xué)案例,讓學(xué)生在已有的“確定位置”數(shù)學(xué)知識基礎(chǔ)上,順利地完成游戲的設(shè)計和編寫。
一、《小貓玩球》游戲中的角色:背景、小貓、球。編程環(huán)境:編程貓。
二、游戲玩法
游戲開始后,小球隨機(jī)出現(xiàn)在“6行8列”的黑白方格中,小貓去追逐球,小貓碰到小球后小球消失,小貓每碰到小球一次,成績增加1分。
三、《小貓玩球》游戲設(shè)計
(一)小貓角色程序設(shè)計和搭建
1.小貓位置的變化——移動
在本游戲中,學(xué)生首先要確定的是小貓如何移動,每次移動多少步才能到達(dá)下一格的正中央,這就是小貓位置的變換。
先以X軸為例,小貓往右移動,坐標(biāo)值是在增加,移動的步數(shù)是“正數(shù)”,往左移動,坐標(biāo)值在減少,移動的步數(shù)是“負(fù)數(shù)”。
通過學(xué)生對小貓沿X軸左右移動步數(shù)的認(rèn)識和理解,再引導(dǎo)學(xué)生理解小貓沿Y軸上下移動:小貓往上移動,坐標(biāo)值在增加,移動的步數(shù)是“正數(shù)”,往下移動,坐標(biāo)值在減少,移動的步數(shù)是“負(fù)數(shù)”??梢缘贸鋈缦滤季S導(dǎo)圖,如圖2。
2.確定小貓的初始位置
在編程時先要確定游戲開始時小貓(角色中心點)出現(xiàn)在舞臺上最初(初始)的位置的坐標(biāo)(如圖3)。
3.確定觸發(fā)小貓移動的“事件”
然后用“移動(? ?)步”積木試出小貓移動到右邊一格所需要的步數(shù)是“120”步。在此基礎(chǔ)上可以利用“事件”模塊中“放開右光標(biāo)鍵”和“放開左光標(biāo)鍵”編寫小貓的移動程序。向右移動的步數(shù)是正數(shù),反之往左移動的步數(shù)是負(fù)數(shù)(圖4)。
然后結(jié)合坐標(biāo)知識,讓學(xué)生明白當(dāng)小貓位置變換后,其相應(yīng)的坐標(biāo)值也變化了。如圖5角色位置坐標(biāo)(角色中心點)為X:-55 Y:-169(圖5)。
同理,讓學(xué)生自己編寫小貓沿“Y”軸上下移動的程序,通過放開“上、下”光標(biāo)鍵控制(如圖6)。
(二)小球角色程序設(shè)計和搭建
1.小球出現(xiàn)在格子中央的規(guī)律
通過對小球出現(xiàn)在相鄰格的編程測試,得出每次沿X軸移動120步就到達(dá)下一格的正中央。以圖7為例,當(dāng)小球從0格向右移動一格時,就增加120步,如移動到2格,增加2個120步,以此類推,可以用下面算式表示,小球初始位置為-290。用同樣方法,可以推導(dǎo)出小球沿“Y”軸向上移動的規(guī)律。
2.小球隨機(jī)出現(xiàn)(一)
在游戲中,小球會出現(xiàn)在不確定的某個黑白格中央。在編程中這種不確定性稱為“隨機(jī)”。在編寫球的程序時,首先要確定球是向右移動還是向左移動,也就是沿“X”軸左右移動。現(xiàn)以小球出現(xiàn)在“圖7”左下第一格位置為特例作說明。
觀察上面的算式中, “0-7”代表的是移動的“格數(shù)”。其中小球的“初始位置”和移動的“步數(shù)”是不變的;變化的是移動的“格數(shù)”,小球移動到哪格是不確定的,也就是隨機(jī)的,所以在編寫程序的時候,要用到積木“運算”類中的“在()到()間隨機(jī)選一個整數(shù)”。將數(shù)值改為“在0到7間隨機(jī)選一個整數(shù)”。根據(jù)上面的算式,還需要用到加法和乘法運算積木。結(jié)合上面的編程要點,綜合完成X軸坐標(biāo)的確定(如圖8)。
圖8中的“-290”,是小球初始位置的X軸坐標(biāo)。因為是向右移動位置,所以要用加法。如果從右往左移,就用X軸的初始坐標(biāo)去減移動的步數(shù)。
學(xué)生理解完成了小球在沿X軸隨機(jī)移動的程序編寫后,再完成小球在沿Y軸往上隨機(jī)移動的程序編寫就不難了(如圖9)。
3.小球隨機(jī)出現(xiàn)(二)
小球的初始位置在任意格子(如圖10)時的程序設(shè)計。
(1)把小球起點格位置和坐標(biāo)原點聯(lián)系起來,把起點格確定為“0”格。
(2)小球向右移動一格是“1”,向左移動一格是“-1”;向上移動一格是“1”,向下移動一格是“-1”。(這里移動一格是120步)
(3)在上述兩點知識的基礎(chǔ)上,讓學(xué)生明白小球沿X軸移動時,在下面的積木中(結(jié)合“圖10”)應(yīng)該填上“-5到2”(如圖11)。
在此基礎(chǔ)上編寫“沿Y軸移動”的程序(如圖12)。
(三)得分統(tǒng)計程序設(shè)計
1.加入變量“成績”
2.給小球添加程序(如圖13)。
在對小球移動進(jìn)行編程時,首先要讓學(xué)生從數(shù)學(xué)角度、數(shù)學(xué)思維上明白小球位置移動的原理,能理解位置移動各數(shù)值的變化,然后從編程角度思考該運用哪些積木模塊。當(dāng)學(xué)生理解小球沿X軸移動的道理后,再嘗試編寫沿Y軸移動就沒有那么困難,然后再提出小球在不同格子位置時如何編寫程序。
教師在編程教學(xué)過程中經(jīng)常提出符合實際的問題,引入生活中的計算思維實例,讓學(xué)生來建設(shè)流程。利用思維可視化工具培養(yǎng)學(xué)生計算思維能力,學(xué)生對問題的分析和解決,形成系統(tǒng)化的設(shè)計思想最終達(dá)成完整的解決方案,在潛移默化中培養(yǎng)學(xué)生的計算思維。