
【摘" 要】 編程語(yǔ)言枯燥乏味,新入高中的學(xué)生相關(guān)基礎(chǔ)薄弱,以致編程的語(yǔ)法、算法讓學(xué)生學(xué)習(xí)難、教師教學(xué)難,Python教學(xué)面臨的困難重重。杭州市蕭山區(qū)第二高級(jí)中學(xué)的信息技術(shù)新教材選用的是《Python編程語(yǔ)言》。文章嘗試將游戲化學(xué)習(xí)理論運(yùn)用在社團(tuán)編程的學(xué)習(xí)中,采用網(wǎng)絡(luò)游戲平臺(tái)對(duì)Python編程教學(xué)進(jìn)行了實(shí)踐探索,為學(xué)生的選課起到了導(dǎo)向作用,為學(xué)生課程的學(xué)習(xí)起到了輔助作用。研究證明,教師利用CodeCombat游戲平臺(tái)的Python編程進(jìn)行教學(xué),激發(fā)了學(xué)生的學(xué)習(xí)興趣和能動(dòng)性,培養(yǎng)了學(xué)生的信息素養(yǎng)。
【關(guān)鍵詞】 游戲化學(xué)習(xí);CodeCombat;Python
一、研究緣起:我“怕”編程
(一)學(xué)生聞之生畏
“編程是什么,你知道Python嗎,你想學(xué)編程嗎?”通過(guò)高一年級(jí)10個(gè)班級(jí)的問(wèn)卷調(diào)查,本研究發(fā)現(xiàn),學(xué)生了解編程的少之又少,很多學(xué)生認(rèn)為編程是一件“高大上”且難度很高的事情,對(duì)Python更是無(wú)從知曉。調(diào)查還發(fā)現(xiàn),34%的學(xué)生認(rèn)為,編程學(xué)習(xí)是一件枯燥、乏味的事情,需要掌握較多的英語(yǔ)語(yǔ)法、數(shù)學(xué)算法知識(shí),甚至有近半數(shù)的學(xué)生認(rèn)為自己不適合學(xué)習(xí)編程。
(二)教師望而卻步
學(xué)習(xí)Python,教師首先需要學(xué)生記憶語(yǔ)言命令(英文),要理解語(yǔ)法、算法(數(shù)學(xué)解題思路)。同時(shí)教師還要避免枯燥的單邊講授、讓學(xué)生保持一定的學(xué)習(xí)熱情,似乎更是難上加難。任務(wù)驅(qū)動(dòng)驅(qū)不動(dòng),項(xiàng)目教學(xué)完不成,成了大多數(shù)信息技術(shù)教師編程課教學(xué)的常態(tài)。
(三)作業(yè)老套乏味
傳統(tǒng)的編程語(yǔ)言作業(yè)類似數(shù)學(xué)解題,一問(wèn)一答,一題一解,算法單一,程序模式化,運(yùn)行的結(jié)果多以字符呈現(xiàn),長(zhǎng)久以往,容易讓學(xué)生產(chǎn)生強(qiáng)烈的厭學(xué)情緒,甚至認(rèn)為自己是沒(méi)有思想的“打碼”人。特別是以發(fā)展學(xué)生興趣為主的社團(tuán)課程教學(xué),在學(xué)習(xí)的過(guò)程中,如果教師布置的也是理論編程作業(yè),學(xué)生自然也就毫無(wú)興趣參與。
二、課題設(shè)想:我“想”編程
信息技術(shù)課程要培養(yǎng)學(xué)生的學(xué)科核心素養(yǎng),落實(shí)立德樹人的根本任務(wù)。在社團(tuán)上開展Python教學(xué),就是為了調(diào)動(dòng)學(xué)生的學(xué)習(xí)興趣,也對(duì)信息技術(shù)的選課教學(xué)起到了輔助、引導(dǎo)的作用。學(xué)生學(xué)習(xí)Python,能了解程序設(shè)計(jì)的基礎(chǔ)知識(shí),會(huì)使用程序語(yǔ)言設(shè)計(jì)、運(yùn)行和調(diào)試,會(huì)應(yīng)用算法解決問(wèn)題,能培養(yǎng)學(xué)生對(duì)技術(shù)學(xué)科的學(xué)習(xí)興趣。
CodeCombat游戲編程平臺(tái)是一種通過(guò)玩游戲來(lái)學(xué)習(xí)編程的平臺(tái),也是GitHub上最大的開源Coffeescript項(xiàng)目,學(xué)習(xí)者可以通過(guò)輸入代碼,控制英雄角色進(jìn)行闖關(guān)的形式學(xué)習(xí)編程,其特點(diǎn)是使用游戲化的編程模式,通過(guò)目標(biāo)引導(dǎo),進(jìn)行實(shí)時(shí)反饋。網(wǎng)絡(luò)游戲的操作,能夠使學(xué)生學(xué)會(huì)并理解Python語(yǔ)言知識(shí),更重要的是,學(xué)生從情感態(tài)度上愿意編程。讓學(xué)生快速地接受編程語(yǔ)言的學(xué)習(xí),通過(guò)某種寓教于樂(lè)的方式,獲得并掌握知識(shí),學(xué)會(huì)應(yīng)用Python解決問(wèn)題,提升學(xué)生的信息素養(yǎng)。因此,實(shí)現(xiàn)我“想”編程,是文章研究的重點(diǎn)。
三、創(chuàng)新實(shí)踐:我“能”編程
(一)創(chuàng)設(shè)教學(xué)班級(jí),了解Python知識(shí)
為了驗(yàn)證游戲化學(xué)習(xí)的可行性和可量化的學(xué)習(xí)結(jié)果,教師首先在CodeCombat游戲編程平臺(tái)創(chuàng)設(shè)了班級(jí),通過(guò)后臺(tái),教師可以清楚地了解每個(gè)學(xué)生的任務(wù)完成情況,便于開展針對(duì)性地教學(xué)。在學(xué)生端,Python初級(jí)游戲設(shè)置了20個(gè)關(guān)卡,每個(gè)關(guān)卡又包含了不同的任務(wù),如獲得寶石、躲避追殺以及找出通往下一關(guān)的關(guān)卡等,學(xué)生完成關(guān)卡后,能獲得一定的金幣獎(jiǎng)勵(lì)和游戲裝備,在不斷地“實(shí)戰(zhàn)”中,學(xué)生完成了Python語(yǔ)言的學(xué)習(xí)。相較于原來(lái)形式主義的社團(tuán)活動(dòng),游戲化的Python教學(xué)有助于社團(tuán)學(xué)生提升學(xué)習(xí)的興趣,從而學(xué)到更多的知識(shí)。
(二)完成賬號(hào)注冊(cè),探究游戲功能
完成賬號(hào)注冊(cè)后,學(xué)生需要了解平臺(tái)界面和游戲機(jī)制,然后選擇英雄,按照提示指引完成初步設(shè)置。學(xué)生根據(jù)任務(wù)要求,在代碼區(qū)輸入代碼后,游戲人物就可以按代碼逐條執(zhí)行任務(wù)。如果代碼正確,學(xué)生就可以通過(guò)關(guān)卡獲得金幣和裝備,并激活下一關(guān)卡,循序漸進(jìn)地開展學(xué)習(xí);如果代碼錯(cuò)誤,界面會(huì)以紅色字體提示,這時(shí)學(xué)生可以不斷調(diào)試,達(dá)到最終完成任務(wù)(程序編譯成功)的目的。在CodeCombat游戲平臺(tái),學(xué)生可以通過(guò)使用代碼操控游戲人物,編程的過(guò)程就是闖關(guān)的過(guò)程,學(xué)生最終完成了知識(shí)的學(xué)習(xí)。
(三)“游戲化”編程學(xué)習(xí),促進(jìn)知識(shí)的內(nèi)化
Python編程有順序、選擇和循環(huán)3種基本結(jié)構(gòu),在CodeCombat游戲平臺(tái)中,1~8關(guān)為順序結(jié)構(gòu)應(yīng)用,學(xué)生根據(jù)游戲平臺(tái)的提示,填寫不同的代碼,以從上到下的順序執(zhí)行代碼,并從中學(xué)會(huì)對(duì)象、方法以及在調(diào)用方法時(shí)參數(shù)的使用;9~20關(guān)為循環(huán)結(jié)構(gòu)應(yīng)用,在滿足循環(huán)條件的情況下,重復(fù)執(zhí)行循環(huán)體內(nèi)的代碼,學(xué)生需要掌握循環(huán)變量、賦值和循環(huán)次數(shù)的控制。
以“Python循環(huán)結(jié)構(gòu)”為例,在傳統(tǒng)編程語(yǔ)言循環(huán)結(jié)構(gòu)的教學(xué)中,教師一般先講解循環(huán)體的格式,通過(guò)循環(huán)結(jié)構(gòu)的流程圖,學(xué)生理解循環(huán)的執(zhí)行方式,最后通過(guò)打印“楊輝三角形”等字符化的圖形,完成教學(xué)。學(xué)生學(xué)習(xí)的側(cè)重點(diǎn)更多的是算法。而對(duì)于學(xué)生來(lái)講,這樣的課堂勢(shì)必枯燥乏味,知識(shí)點(diǎn)的消化、理解也困難重重。
在CodeCombat游戲平臺(tái),Python命令的調(diào)用就是英雄的任務(wù)執(zhí)行,運(yùn)行的結(jié)果將直觀地反映在游戲平臺(tái)的界面上,程序運(yùn)行的正確與否將決定英雄是否能存活。同時(shí)平臺(tái)提供了理解性的提示語(yǔ)句,沒(méi)有可復(fù)制的答案,學(xué)生需要在理解的基礎(chǔ)上輸入代碼,才可以完成程序。依托于游戲情境,實(shí)現(xiàn)優(yōu)質(zhì)的游戲化教學(xué),使整個(gè)學(xué)習(xí)過(guò)程充滿了吸引力,讓學(xué)生產(chǎn)生了本能的學(xué)習(xí)沖動(dòng)和好奇心,促使學(xué)生樂(lè)此不疲地發(fā)問(wèn)、探究、合作和創(chuàng)造,并保持了對(duì)學(xué)習(xí)的長(zhǎng)久興趣與內(nèi)驅(qū)力。
(四)創(chuàng)新教學(xué)模式,付諸實(shí)戰(zhàn)教學(xué)
通過(guò)對(duì)游戲平臺(tái)編程教學(xué)的實(shí)踐探索,本文創(chuàng)建了游戲化教學(xué)的基本模式:學(xué)習(xí)項(xiàng)目(游戲背景)+知識(shí)體系(規(guī)則設(shè)定)+編程實(shí)踐(刷碼練級(jí))+知識(shí)建構(gòu)(升級(jí)與復(fù)盤)+反饋評(píng)價(jià)(獎(jiǎng)勵(lì)與成就感)。
以Python編程的While循環(huán)結(jié)構(gòu)為例,根據(jù)教學(xué)大綱的要求,學(xué)生需要通過(guò)這一章節(jié)的學(xué)習(xí),掌握While循環(huán)結(jié)構(gòu)的基本格式、代碼縮進(jìn)規(guī)范、變量、邏輯運(yùn)算和循環(huán)次數(shù)控制,為以后的海龜畫圖中復(fù)雜圖案的繪制奠定基礎(chǔ)。本章節(jié)的教學(xué)重點(diǎn)是學(xué)生掌握循環(huán)體的結(jié)構(gòu)及變量,難點(diǎn)為循環(huán)次數(shù)的控制。根據(jù)游戲化教學(xué)的基本模式,本研究將學(xué)習(xí)項(xiàng)目、知識(shí)體系、編程實(shí)踐、建構(gòu)知識(shí)和反饋評(píng)價(jià)對(duì)應(yīng)到CodeCombat平臺(tái)中,教學(xué)設(shè)計(jì)如圖1所示。
1. 導(dǎo)新課,設(shè)定游戲背景
在“循環(huán)又循環(huán)”的關(guān)卡中,游戲背景為“你的英雄必須存活,躲開致命光束,6條語(yǔ)句內(nèi)完成”。通過(guò)觀察游戲界面,發(fā)現(xiàn)致命光束不斷地逆時(shí)針轉(zhuǎn)動(dòng)掃射,那么,學(xué)生需要思考,如何才能躲開致命光束的攻擊。對(duì)此,英雄只有不斷地逆時(shí)針繞圈,才可以躲開光束,并重復(fù)繞圈的過(guò)程,前面所學(xué)的順序結(jié)構(gòu)也能完成該任務(wù),但是代碼繁瑣、重復(fù),這時(shí),學(xué)生可以用Python中的循環(huán)結(jié)構(gòu)編程完成繞圈任務(wù),最終完成收集寶石的任務(wù)。
2. 析規(guī)則,理清知識(shí)體系
循環(huán),就是不斷地重復(fù)執(zhí)行,被重復(fù)執(zhí)行的部分,即為循環(huán)體,重復(fù)執(zhí)行的次數(shù),即為循環(huán)次數(shù)。通過(guò)觀察游戲界面,只有依次執(zhí)行“向右—向上—向左—向下”,才可以使英雄從起始的位置逆時(shí)針繞一圈,如果要不停地繞圈,則需要重復(fù)執(zhí)行“hero.Moveright—hero.Moveup—hero.Moveleft—hero.Movedown”的語(yǔ)句。
3. 做任務(wù),實(shí)踐編程、刷碼練級(jí)
教師在程序代碼區(qū)域,設(shè)計(jì)任務(wù)流程,但是“向右—向上—向左—向下”只能使hero躲避一圈光束,這時(shí)學(xué)生需要用到循環(huán)結(jié)構(gòu),理解While循環(huán)結(jié)構(gòu)的格式為:While條件的表達(dá)式+循環(huán)體。While是循環(huán)語(yǔ)句的關(guān)鍵詞,循環(huán)體是一條或者多條被重復(fù)執(zhí)行的代碼塊。在拯救英雄的任務(wù)中,學(xué)生只需要將4條繞圈語(yǔ)句輸入到代碼塊中,同時(shí)注意縮進(jìn)規(guī)則,英雄就會(huì)一直重復(fù)完成這4個(gè)動(dòng)作。在刷“碼”后,學(xué)生可以直觀地觀察到英雄運(yùn)動(dòng)的軌跡,理解循環(huán)體的概念。
完成上述任務(wù)后,教師可以引導(dǎo)學(xué)生,“如果想要控制循環(huán)次數(shù),我們?cè)趺磥?lái)實(shí)現(xiàn)?”學(xué)生經(jīng)過(guò)學(xué)習(xí)思考、小組討論完成了任務(wù)的進(jìn)階學(xué)習(xí)??梢园l(fā)現(xiàn),在傳統(tǒng)教學(xué)中,學(xué)生完成任務(wù)是被動(dòng)的,是為了完成而完成的,學(xué)習(xí)過(guò)程毫無(wú)積極性和興奮感。但是采用游戲化的教學(xué),學(xué)生整堂課的精神狀態(tài)飽滿,學(xué)習(xí)充滿了主動(dòng)性和挑戰(zhàn)性。學(xué)生會(huì)思考采用不同的方法完成任務(wù),教師會(huì)發(fā)現(xiàn)學(xué)生采用了while循環(huán)結(jié)構(gòu)或者for循環(huán)結(jié)構(gòu)完成了任務(wù),實(shí)現(xiàn)了知識(shí)的升華。
4. 探其理,建構(gòu)知識(shí)結(jié)構(gòu)
學(xué)生編寫完程序后,教師在CodeCombat后臺(tái),根據(jù)闖關(guān)程序執(zhí)行的完成度,判斷學(xué)生知識(shí)點(diǎn)的掌握情況。為了進(jìn)一步鞏固知識(shí)點(diǎn),在游戲結(jié)束后,教師要求學(xué)生以小組為單位進(jìn)行“復(fù)盤”,學(xué)生通過(guò)小組討論,將While與For兩類循環(huán)結(jié)構(gòu)的執(zhí)行長(zhǎng)度進(jìn)行對(duì)比,找出最優(yōu)算法,靈活運(yùn)用知識(shí)點(diǎn),建構(gòu)更有條理的知識(shí)結(jié)構(gòu)。
5. 得反饋,涵育信息素養(yǎng)
CodeCombat是很多無(wú)編程經(jīng)驗(yàn)、從未接觸過(guò)程序開發(fā)的游戲玩家(初學(xué)者)的入門“捷徑”。對(duì)于他們來(lái)說(shuō),它更像是一場(chǎng)盛宴,可以讓玩家體驗(yàn)到一種全新的游戲方式。一邊從零開始學(xué)習(xí),一邊馬上將學(xué)到的編程知識(shí)應(yīng)用到游戲中,那種成就感和踏實(shí)感不是一般游戲能實(shí)現(xiàn)的。在學(xué)習(xí)的過(guò)程中,學(xué)生經(jīng)過(guò)不斷地試錯(cuò)、修正,最終成功解鎖了新技能,獲得了新裝備,開啟了新關(guān)卡,這些都能讓學(xué)生感受到通過(guò)不斷努力達(dá)到成功的愉悅感和體現(xiàn)自我價(jià)值的滿足感,在完成了知識(shí)技能教學(xué)的同時(shí),也實(shí)現(xiàn)了涵育信息素養(yǎng)的目的。
通過(guò)在高中計(jì)算機(jī)社團(tuán)中開展游戲化教學(xué)的模式,學(xué)生能快速地掌握編程語(yǔ)言的運(yùn)用,在游戲的過(guò)程中學(xué)習(xí)和強(qiáng)化編程知識(shí),精進(jìn)了編程能力。通過(guò)建構(gòu)知識(shí)模型內(nèi)化了知識(shí),達(dá)到了學(xué)習(xí)編程語(yǔ)言的目的。
四、研究成效:我“愛(ài)”編程
(一)體現(xiàn)了個(gè)性的分層教學(xué)
在Python編程的教學(xué)中,學(xué)生使用CodeCombat游戲平臺(tái),可以自由選擇闖關(guān)級(jí)數(shù),同時(shí)不同算法賦分得到的金幣獎(jiǎng)勵(lì)不同,可以滿足不同學(xué)生的需求。通過(guò)不斷地優(yōu)化算法獲得更多的獎(jiǎng)勵(lì),大幅提升了學(xué)生的學(xué)習(xí)興趣,實(shí)現(xiàn)了個(gè)性化的分層教學(xué)。
(二)實(shí)現(xiàn)形成性的評(píng)價(jià)
在游戲化的教學(xué)過(guò)程中,教師通過(guò)后臺(tái)數(shù)據(jù),可以實(shí)時(shí)監(jiān)測(cè)學(xué)生的闖關(guān)(編程的正確性)及學(xué)習(xí)情況,幫助教師根據(jù)學(xué)生掌握和理解知識(shí)的程度,及時(shí)地進(jìn)行教學(xué)評(píng)價(jià)和診斷,不斷修正“教”與“學(xué)”的方法和模式,構(gòu)建完善教學(xué)體系,促進(jìn)學(xué)生掌握每個(gè)知識(shí)點(diǎn)與細(xì)節(jié),挖掘?qū)W生的潛力,并改進(jìn)學(xué)習(xí)效果;教師也可以及時(shí)地調(diào)整教學(xué)策略,從而產(chǎn)生最好的教學(xué)效果。
(三)實(shí)現(xiàn)自我價(jià)值與成就感
在CodeCombat游戲平臺(tái)中,學(xué)生的學(xué)習(xí)結(jié)果是解鎖新技能、獲得新裝備,教學(xué)的評(píng)價(jià)不再是優(yōu)良等級(jí),而是以積分與金幣獎(jiǎng)勵(lì)呈現(xiàn)學(xué)生的學(xué)習(xí)結(jié)果。直觀的數(shù)據(jù)呈現(xiàn)充滿了挑戰(zhàn)性,能夠引導(dǎo)學(xué)生積極探索、主動(dòng)思考,通過(guò)完成闖關(guān)任務(wù),學(xué)生感受到直觀的學(xué)習(xí)結(jié)果,并以此獲得成就感,進(jìn)而增強(qiáng)了學(xué)生的自信心,感受到探索和學(xué)習(xí)的樂(lè)趣。CodeCombat游戲平臺(tái)使枯燥的字符化編程學(xué)習(xí)變成了一種“尋找快樂(lè)與體現(xiàn)自我價(jià)值”的學(xué)習(xí)體驗(yàn)。
(四)用好游戲“雙刃劍”
游戲是把“雙刃劍”。在實(shí)際的教學(xué)中,部分學(xué)生存在隨機(jī)猜測(cè)或由他人代勞的方式獲得成績(jī),開放的網(wǎng)絡(luò)學(xué)習(xí)平臺(tái)也可能“誘惑”學(xué)生,使其無(wú)法長(zhǎng)時(shí)間集中學(xué)習(xí)注意力,同樣游戲平臺(tái)也不能成為獲取知識(shí)的全部途徑。因此教師要幫助學(xué)生樹立正確的游戲?qū)W習(xí)觀,靈活安排教學(xué)內(nèi)容來(lái)維持學(xué)生學(xué)習(xí)興趣的持久度,并根據(jù)不同的教學(xué)內(nèi)容采用線上線下混合的教學(xué)模式,教學(xué)活動(dòng)更飽滿,這既讓學(xué)生體驗(yàn)到了游戲?qū)W習(xí)的樂(lè)趣,又學(xué)到了Python編程知識(shí),提升了學(xué)生的信息素養(yǎng)。
參考文獻(xiàn):
[1] 王琳,楊波,陳貞翔,等. 游戲化教學(xué)方法在網(wǎng)絡(luò)編程類課程教學(xué)中的應(yīng)用[J]. 計(jì)算機(jī)教育,2016(09):61-63.
[2] 石冬梅. 游戲化教學(xué)在初中信息技術(shù)教學(xué)中的應(yīng)用[J]. 電腦知識(shí)與技術(shù),2020,16(30):183-184.
[3] 葉茂. 游戲化教學(xué)在初中信息技術(shù)教學(xué)中的應(yīng)用分析[J]. 新課程,2022(09):132-133.