顏培森
程序設(shè)計(jì)教學(xué)重要的并不是教給學(xué)生語言和語法,而是程序設(shè)計(jì)的思想和思維方法,讓學(xué)生能夠通過編程來創(chuàng)作他們的作品,培養(yǎng)其創(chuàng)新能力。而一直以來,我們所用、所教的程序設(shè)計(jì)軟件都是以語言為主,從QBasic、PASCAL、VB,到Flash中的按鈕動(dòng)作、動(dòng)態(tài)網(wǎng)頁制作等,程序設(shè)計(jì)的困難以及錯(cuò)誤,基本上都發(fā)生在語法上,而不是程序設(shè)計(jì)本身的缺陷。學(xué)生往往迷失在代碼的海洋中。為此,當(dāng)我們接觸到Scratch之后,眼前為之一亮,因?yàn)檫@就是我們千方百計(jì)想要尋找的純粹程序設(shè)計(jì)的工具!
在我們的教學(xué)計(jì)劃中,沒有專門花時(shí)間給學(xué)生講授Scratch的操作,也沒有教學(xué)生做一些簡(jiǎn)單的小程序來熟悉Scratch,而是采用了基于項(xiàng)目的學(xué)習(xí)方式。下面,通過學(xué)生學(xué)習(xí)Scratch的項(xiàng)目設(shè)計(jì),與大家分享我們的實(shí)踐。
項(xiàng)目確定,創(chuàng)設(shè)情境
“程序設(shè)計(jì)”是八年級(jí)(下)的教學(xué)內(nèi)容,教材安排內(nèi)容為VB程序設(shè)計(jì)。多年教學(xué)經(jīng)驗(yàn)告訴我們,VB程序設(shè)計(jì)是學(xué)生學(xué)得最痛苦的學(xué)習(xí)內(nèi)容,為此,這個(gè)學(xué)期我們把VB程序設(shè)計(jì)改為Scratch程序設(shè)計(jì),降低了學(xué)習(xí)難度。
由于學(xué)生并沒有系統(tǒng)地學(xué)過程序設(shè)計(jì),因此,需要由教師指導(dǎo)來完成項(xiàng)目過程。本項(xiàng)目為接香蕉游戲設(shè)計(jì),學(xué)生在教師的引導(dǎo)下完成項(xiàng)目過程。
項(xiàng)目規(guī)劃
制作游戲,首先要對(duì)游戲進(jìn)行分析,把游戲拆分出1.0版本。在完成1.0版本的制作之后,就需要考慮游戲的升級(jí)了。在1.0版本的基礎(chǔ)上,把一些先前游戲分析中因?yàn)椴恢匾徊鸱殖鋈サ膬?nèi)容加回來,將游戲升級(jí)到1.x版本。當(dāng)游戲需要增加核心角色的時(shí)候,游戲就升級(jí)到2.0版本了。我們需要記錄好每一次游戲升級(jí),這是我們項(xiàng)目實(shí)施走過的每一個(gè)腳印。
項(xiàng)目實(shí)施
1.0版本游戲分析與制作
教師通過幾個(gè)設(shè)定好的問題引導(dǎo)學(xué)生思考。
問題1:在游戲中,最核心(不能去掉)的內(nèi)容是什么?
問題2:在游戲中,核心內(nèi)容(角色)所做的動(dòng)作是什么?
問題3:角色動(dòng)作之間發(fā)生交互,角色各自有什么變化?
根據(jù)這3個(gè)問題,師生可以畫出接香蕉游戲1.0版本的分析圖(如圖1)。
圖1 1.0版本的接香蕉游戲結(jié)構(gòu)圖
教師接著引導(dǎo):在1.0版本的游戲中,我們需要完成哪些事情?
學(xué)生經(jīng)討論得出以下結(jié)論:
(1)核心角色中,小貓是Scratch的默認(rèn)角色,也就是說,我們需要增加一個(gè)香蕉角色。
(2)香蕉角色要實(shí)現(xiàn)可從屏幕上方下落。
(3)在鍵盤左移和右移鍵控制下,小貓角色要能夠在屏幕下方左右移動(dòng)。
(4)香蕉角色在下落過程中碰到小貓角色,就要消失掉。
帶著這4個(gè)任務(wù),學(xué)生在教師的示范下,完成1.0版本的游戲制作(如圖2),在制作過程中,鼓勵(lì)學(xué)生發(fā)揮自己的想象,完成1.0版本游戲。
圖2 1.0版本的接香蕉游戲
1.x版本游戲升級(jí)
學(xué)生制作完成1.0版本的游戲之后,我們?cè)趯W(xué)生網(wǎng)絡(luò)學(xué)習(xí)平臺(tái)上搭建了一個(gè)討論區(qū),讓學(xué)生對(duì)1.x游戲升級(jí)提出自己的意見與建議。學(xué)生有著豐富的游戲經(jīng)驗(yàn)與天馬行空的想法,通過討論區(qū)平臺(tái),學(xué)生提出了各種游戲升級(jí)的意見與建議,作為下一階段項(xiàng)目實(shí)施的依據(jù)。我們來看兩位學(xué)生的建議:
0747周同學(xué):《給1.0接香蕉游戲的小建議》
(1)增加一些背景音樂。
(2)增加一些功能,如記分器、炸彈等。
(3)設(shè)置時(shí)間限制。
(4)增加游戲背景畫面。
0931倫同學(xué):《接香蕉2.0》
(1)當(dāng)接到香蕉,分?jǐn)?shù)加10。
(2)香蕉會(huì)根據(jù)不同的時(shí)間,從上方固定的Y坐標(biāo)、不同的X坐標(biāo)出現(xiàn),X坐標(biāo)和出現(xiàn)的時(shí)間由一個(gè)隨機(jī)的變量確定。
(3)當(dāng)分?jǐn)?shù)達(dá)到一定時(shí),到達(dá)下一關(guān),出現(xiàn)的時(shí)間變短。
(4)每有一只香蕉的Y坐標(biāo)低于-180時(shí),生命減1,初始生命為3。會(huì)有增加生命的道具以隨機(jī)的時(shí)間、固定的Y坐標(biāo)、不同的X坐標(biāo)出現(xiàn),生命由一個(gè)變量統(tǒng)計(jì)。
我們?cè)趯W(xué)生建議中選了幾個(gè),讓學(xué)生對(duì)游戲進(jìn)行升級(jí):
(1)讓香蕉能多次從屏幕上方的隨機(jī)位置下落。
(2)給游戲增加背景圖和背景音樂。
(3)增加一個(gè)分?jǐn)?shù)記錄接住的香蕉數(shù)。
(4)增加一個(gè)計(jì)時(shí)器,控制游戲進(jìn)度。
由于這些升級(jí)任務(wù)都選自學(xué)生的建議,學(xué)生的參與度非常高。在完成這4個(gè)指定的升級(jí)內(nèi)容之后,不少學(xué)生根據(jù)自己的想法,增加了一些1.x的升級(jí)內(nèi)容,使自己的游戲更加個(gè)性化(如圖3)。
圖3 1.x版本的接香蕉游戲
2.0版本游戲升級(jí)
在1.x版本完成之后,游戲已經(jīng)初見雛形,并且能真正地玩起來了,只是游戲難度并不算太高。在學(xué)生們前面的討論之中,也有不少學(xué)生提出的建議是屬于2.0版本的升級(jí)建議,我們也從中選擇兩個(gè)建議進(jìn)行演示。
(1)屏幕上同時(shí)下落多只香蕉。
(2)游戲中增加懲罰內(nèi)容。
多只香蕉的下落,實(shí)現(xiàn)起來比較容易,而多只香蕉的下落,也引發(fā)了學(xué)生對(duì)不同香蕉的定義,同時(shí)也讓學(xué)生想出了不同的下落物體的想法。懲罰內(nèi)容也讓學(xué)生想出增加“生命數(shù)”的想法,除了時(shí)間可以控制游戲結(jié)束,生命數(shù)也是游戲結(jié)束的另一個(gè)關(guān)鍵。在2.0升級(jí)過程中,教師的限制少了很多,學(xué)生的創(chuàng)新想象能力得到了充分發(fā)揮。越來越多的有個(gè)性的游戲提交到教師的面前(如圖4)。
游戲分享
當(dāng)學(xué)生完成了2.0版本的游戲制作之后,我們要求學(xué)生在Scratch官網(wǎng)上注冊(cè)用戶,把自己的游戲上傳到官網(wǎng),與全世界的孩子一起分享自己的作品(如圖5)。通過官網(wǎng)分享,孩子們看到了官網(wǎng)上其他人的作品,在觀看作品的同時(shí),他們對(duì)自己的作品提出了更高的要求。雖然項(xiàng)目已經(jīng)結(jié)束,但仍然有學(xué)生在課余時(shí)間對(duì)自己的游戲進(jìn)行著一次又一次的升級(jí),而且要求也越來越高。
圖5 官網(wǎng)分享游戲作品
通過一系列的問題與動(dòng)手實(shí)踐的任務(wù),引導(dǎo)學(xué)生不斷創(chuàng)作與完善游戲作品,學(xué)生經(jīng)歷了游戲從無到有、從簡(jiǎn)到繁的過程,使學(xué)生了解到程序設(shè)計(jì)的一般過程。而這個(gè)過程中,教師不斷引導(dǎo)學(xué)生思考,又不斷地把學(xué)生的思考變?yōu)楝F(xiàn)實(shí)的游戲。通過一次次的升級(jí)成功的喜悅,讓孩子們愛上程序設(shè)計(jì)。
使用Scratch,我們教會(huì)學(xué)生的是程序設(shè)計(jì),而不是程序語言;教會(huì)學(xué)生的是創(chuàng)作,而不是模仿;教會(huì)學(xué)生的是制作一個(gè)完整的游戲程序,而不是一個(gè)程序片段或無太多實(shí)際意義的程序。
(作者單位:廣東順德一中德勝學(xué)校)