李穎



【摘 要】“計(jì)算思維”是學(xué)生的核心素養(yǎng)之一,它對學(xué)生思維方式和思維習(xí)慣的發(fā)展起著重要作用。本文以高中“算法與程序設(shè)計(jì)”中的VB編程教學(xué)為例,探索游戲化編程對計(jì)算思維能力培養(yǎng)的影響。通過實(shí)踐案例探討游戲化編程對激發(fā)學(xué)生學(xué)習(xí)興趣,提升學(xué)生計(jì)算思維能力的可行性。
【關(guān)鍵詞】計(jì)算思維;游戲化;VB編程
【中圖分類號】G434 【文獻(xiàn)標(biāo)識(shí)碼】A
【論文編號】1671-7384(2020)011-072-04
編程教學(xué)中存在的問題
在信息化和人工智能的時(shí)代背景下,信息技術(shù)課程不能只是單純地引導(dǎo)學(xué)生學(xué)會(huì)利用計(jì)算機(jī)來設(shè)計(jì)解決問題的方案。在高中VB教學(xué)中,雖然大部分學(xué)生能夠熟練地使用VB中的窗體、標(biāo)簽、文本框、命令按鈕等常用控件設(shè)計(jì)界面,進(jìn)行簡單的程序設(shè)計(jì),卻不知如何更好地應(yīng)用這些控件進(jìn)行軟件開發(fā),將學(xué)到的知識(shí)應(yīng)用在解決日常問題中。因此,尋找合適的教學(xué)模式來激發(fā)學(xué)生的學(xué)習(xí)動(dòng)機(jī),讓學(xué)生在編程解決問題的過程中培養(yǎng)計(jì)算思維顯得尤為重要。
計(jì)算思維及游戲化編程
2017年教育部頒布的《普通高中信息技術(shù)課程標(biāo)準(zhǔn)》將計(jì)算思維確定為信息技術(shù)學(xué)科培養(yǎng)學(xué)生的核心素養(yǎng)之一,提出“在信息活動(dòng)中能夠采用計(jì)算機(jī)可以處理的方式界定問題、抽象特征、建立結(jié)構(gòu)模型、合理組織數(shù)據(jù)”的培養(yǎng)目標(biāo)。要讓計(jì)算機(jī)幫助我們解決問題,就需要人們事先設(shè)定好解決問題的算法。因此,設(shè)計(jì)算法和編寫程序是解決問題過程中的重要環(huán)節(jié)。這就要求在程序設(shè)計(jì)教學(xué)中,培養(yǎng)學(xué)生分析問題、設(shè)計(jì)問題解決方案的計(jì)算思維能力。
游戲化設(shè)計(jì)就是將游戲或游戲元素、游戲理念應(yīng)用到一些非游戲情境中。“游戲化編程”即設(shè)計(jì)規(guī)則簡單、開發(fā)難度較低的游戲任務(wù),把抽象的問題變得形象生動(dòng),讓學(xué)生在探究的過程中掌握程序設(shè)計(jì)語言基本語句的使用方法,并利用這些語句完成現(xiàn)實(shí)任務(wù),增強(qiáng)學(xué)生編程能力,同時(shí)提升學(xué)生計(jì)算思維能力。
游戲化編程教學(xué)實(shí)施案例
1.猜拳游戲
在生活中,我們常常選擇猜拳游戲來解決爭議。在設(shè)計(jì)猜拳游戲時(shí),可用隨機(jī)數(shù)來模擬出拳情況,通過邏輯判斷,判斷選手的輸贏。假設(shè)兩個(gè)選手進(jìn)行游戲,當(dāng)點(diǎn)擊“第n回合”按鈕,A、B兩個(gè)選手隨機(jī)出拳,并根據(jù)結(jié)果對其計(jì)分。
(1)分解問題,理清思路
觀察猜拳游戲任務(wù),我們可以分解出兩個(gè)核心問題。
問題1:A、B選手如何隨機(jī)出現(xiàn)“剪刀”“石頭”“布”等圖片?
問題2:如何根據(jù)猜拳游戲規(guī)則,對A、B對手進(jìn)行計(jì)分?
對問題逐個(gè)進(jìn)行觀察,思考之前是否解決過類似問題,可以用哪些學(xué)過的方法來處理這些問題,讓學(xué)生學(xué)有所用。
(2)抽象特征,設(shè)計(jì)算法
抓住問題的特征:在問題1中,“剪刀”“石頭”“布”以圖片呈現(xiàn),那么學(xué)生就需要學(xué)會(huì)設(shè)定VB中Image工具控件中用到的屬性值;出拳結(jié)果是隨機(jī)的,可以使用學(xué)過的隨機(jī)函數(shù)Rnd()來控制隨機(jī)現(xiàn)象;量化圖片,將3張圖片進(jìn)行編碼,即“1”表示“剪刀”,“2”表示“石頭”,“3”表示“布”。
根據(jù)產(chǎn)生的隨機(jī)數(shù),選擇并加載相應(yīng)圖片。例如:若隨機(jī)數(shù)為1,則加載剪刀圖片。
在問題2中,如何描述選手間的勝負(fù)情況并進(jìn)行計(jì)分,是本節(jié)課的重點(diǎn)。在問題1中已經(jīng)使用編碼來代替出拳,列舉A選手獲勝的出拳情況,并進(jìn)行邏輯判斷,如表1所示。
同理可得B選手獲勝的情況,當(dāng)兩者出拳相同即編碼相等時(shí)為平局。
(3)編寫程序,解決問題
分別為A、B選手各創(chuàng)建1個(gè)Image控件加載出拳圖片,設(shè)定用變量為x、y存放A、B選手的出拳情況,計(jì)分變量s1、s2。利用隨機(jī)函數(shù)Rnd()產(chǎn)生1到3的隨機(jī)整數(shù)并賦值給x、y,根據(jù)游戲規(guī)則判斷輸贏,將結(jié)果存入A、B選手的計(jì)分變量中。部分代碼如下:
學(xué)生通過以上步驟,編寫程序代碼,并調(diào)試運(yùn)行,測試游戲效果。
教學(xué)時(shí),大部分學(xué)生能獨(dú)立完成游戲任務(wù),并表現(xiàn)出成就感。但同時(shí)也提出了許多想法,希望能繼續(xù)優(yōu)化游戲設(shè)計(jì)。例如,選手出拳時(shí)能否實(shí)現(xiàn)動(dòng)態(tài)畫面?能否設(shè)置五局三勝?于是我們引導(dǎo)學(xué)生進(jìn)一步探索定時(shí)器等控件的應(yīng)用,綜合所學(xué)知識(shí),形成解決問題的方案,增強(qiáng)游戲的趣味性。在游戲任務(wù)的驅(qū)動(dòng)下,學(xué)生學(xué)習(xí)積極性有了明顯的提高,能主動(dòng)地發(fā)現(xiàn)和思考問題,很好地掌握課堂中要求的任務(wù)和知識(shí),計(jì)算思維能力有一定的提高。
2.打地鼠游戲
打地鼠游戲是眾多游戲中比較簡單且容易實(shí)現(xiàn)的,廣為大眾所喜愛。但是,當(dāng)學(xué)生從玩家的角色轉(zhuǎn)換到游戲設(shè)計(jì)者時(shí),所帶來的內(nèi)在學(xué)習(xí)動(dòng)力和完成游戲制作的成就感是妙不可言的。如何將上例中所學(xué)到的知識(shí)應(yīng)用到本游戲的開發(fā)中,引導(dǎo)學(xué)生對游戲的設(shè)計(jì)和編寫進(jìn)行進(jìn)一步的思考和探究,提升學(xué)生計(jì)算思維能力,是本節(jié)課的重點(diǎn)和需要解決的問題。
打地鼠游戲設(shè)計(jì)如下:①游戲難度分為三個(gè)等級,等級越高地鼠出現(xiàn)的時(shí)間越短。②每一次地鼠出現(xiàn)的位置是隨機(jī)的。③每打中地鼠1次加10分;每局15秒,若時(shí)間到,得分未達(dá)到100分闖關(guān)失敗,反之闖關(guān)成功。
(1)界定問題,組織數(shù)據(jù)
在上述“猜拳游戲”的教學(xué)基礎(chǔ)上,引導(dǎo)學(xué)生通過觀察打地鼠游戲的運(yùn)行過程,分析游戲設(shè)計(jì)中需要解決的問題。
問題1:如何每間隔一段時(shí)間隨機(jī)地在畫面上顯示地鼠圖片?
用Image1控件的Left和Top屬性值來確定地鼠圖片坐標(biāo)位置。
問題2:打中地鼠時(shí)如何更換一張地鼠被打中的圖片?
地鼠被打中時(shí)需要將Image1控件的Picture屬性值更換成新圖片名。
問題3:如何更新和顯示游戲倒計(jì)時(shí)?
設(shè)置一個(gè)全局變量t,用來存放游戲的剩余時(shí)間。
(2)抽象特征,建立數(shù)學(xué)模型
地鼠的兩個(gè)狀態(tài)如圖1、圖2,并將其分別命名為“1.gif”和“2.gif”。
基于對問題和數(shù)據(jù)流程的分析,形成游戲的執(zhí)行框架,如圖3所示。
教師讓學(xué)生從計(jì)算機(jī)解決問題的角度分析,列出計(jì)算機(jī)可執(zhí)行的操作。對應(yīng)的抽象模型,如表2。
(3)設(shè)計(jì)算法,形成實(shí)現(xiàn)方案
在上述數(shù)據(jù)模型基礎(chǔ)上,形成問題解決方案,將實(shí)現(xiàn)游戲的有序步驟描述出來。
第一步,在Timer1的Timer事件中,利用LoadPicture函數(shù)加載地鼠圖片;用隨機(jī)函數(shù)Int(Rnd() * N + M)產(chǎn)生兩個(gè)M到N的隨機(jī)整數(shù)作為地鼠圖片的位置坐標(biāo)。第二步,設(shè)置全局變量t作為游戲倒計(jì)時(shí)的時(shí)間數(shù)值,設(shè)置初始值t=15;在Timer2的Timer事件中,使t=t-1,并用條件語句判斷闖關(guān)的成敗。第三步,在Image1的MouseDown事件中,設(shè)置用于記分的全局變量s,每次調(diào)用該事件時(shí)得分增加10分,即s=s+10,用條件語句判斷是否闖關(guān)成功。
Timer1_Timer部分代碼如下:
Image1.Picture = LoadPicture("1.gif")
Image1.Left = Int(Rnd() * 7000 + 300)
Image1.Top = Int(Rnd() * 3000 + 700)
Image1_MouseDown部分代碼如下:
Image1.Picture = LoadPicture("2.gif")
s = s + 10
Label1.Caption = s
If s = 100 Then
Timer1.Enabled = False
Timer2.Enabled = False
MsgBox "Congratulations!"
End If
Timer2_Timer部分代碼如下:
t = t - 1
Label2.Caption = t
If t = 0 And s < 100 Then
Timer1.Enabled = False
Timer2.Enabled = False
MsgBox "Game Over!"
End If
(4)檢驗(yàn)結(jié)果,總結(jié)遷移
測試游戲運(yùn)行效果,引導(dǎo)學(xué)生發(fā)現(xiàn)游戲設(shè)計(jì)的漏洞并嘗試改進(jìn)增強(qiáng)游戲的功能和趣味性。通過前面的例子可以看出,利用計(jì)算思維解決實(shí)際問題的過程,即界定問題→抽象特征→形成方案→檢驗(yàn)結(jié)果。當(dāng)學(xué)生在生活和學(xué)習(xí)中再次遇到類似的問題時(shí),可以嘗試運(yùn)用計(jì)算思維的方法去分析和解決問題。例如,制作旅游攻略時(shí),可先列出問題,如目的地、時(shí)間安排、預(yù)算等,再根據(jù)所需的資料類型如地圖、景區(qū)信息等選擇合適的檢索方式,最后使用計(jì)算機(jī)獲取信息,形成合理的旅游方案并根據(jù)實(shí)際情況修改和調(diào)整。
這樣的游戲設(shè)計(jì)案例操作簡單,易于實(shí)現(xiàn),非常適合課堂教學(xué),學(xué)生在解決新問題的過程中,不斷挑戰(zhàn)自我,充分體現(xiàn)計(jì)算思維中分析問題等思維活動(dòng)。學(xué)生通過這樣的學(xué)習(xí)過程,更容易理解并掌握VB的各種命令和語法,正確使用VB解決現(xiàn)實(shí)生活中的問題,在一定程度上達(dá)到了培養(yǎng)學(xué)生計(jì)算思維能力的目的。
結(jié)束語
本文介紹了借助游戲化編程引導(dǎo)學(xué)生利用計(jì)算思維方式解決問題的思維活動(dòng)過程。在教學(xué)實(shí)踐過程中,相對于傳統(tǒng)教學(xué),學(xué)生的課堂積極性與渴望解決問題心理有了很大的提高。我們相信,隨著課程實(shí)踐的不斷深入,游戲化編程對學(xué)生計(jì)算思維的提升將會(huì)更加明顯,信息技術(shù)的學(xué)科教學(xué)將會(huì)越來越精彩。
參考文獻(xiàn)
牟琴.“輕游戲”對計(jì)算思維能力的培養(yǎng)[J]. 遠(yuǎn)程教育雜志,2011,6:94-101.
傅騫,王鈺茹. 面向計(jì)算思維培養(yǎng)的編程教學(xué)研究 ——以高中生Python編程教學(xué)為例[J]. 創(chuàng)新人才教育,2019,3:47-54.
王田莉,陳素?zé)煟斓t搏. 中職計(jì)算機(jī)應(yīng)用基礎(chǔ)課程游戲化教學(xué)模式探究[J]. 教育教學(xué)論壇,2019,28:222-223.