李穎



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