毛澄潔+項杰庭
● 游戲教學與App Inventor課程設計
1.游戲與游戲教學
游戲既是一種古老而基礎的學習形式,也是學生們喜聞樂見的學習和娛樂的手段。游戲教學具有游戲的特征,但又不完全等同于泛在的游戲。游戲教學具有特定的教學目標,泛在的游戲沒有教學目標。
游戲教學應用于課程與教學之中具有多種途徑,如可以將游戲運用于課堂的導入環節,達到設疑、激趣和定向的效果,還可以讓學生設計與制作自己的游戲,達到掌握相關技能與知識的作用。將游戲元素設計到App Inventor課程中來,通過游戲教學的途徑來學習與應用App Inventor編程工具,能夠激發學生的學習熱情,有效實現課程目標。
App Inventor中一些組件的功能能夠很好地用于游戲開發與制作。作為課程的起始部分,可以以制作游戲的方式進行,因此開發出“游戲制作專題”課程單元,然后由淺入深地開發后續課程。
2.“Drawing and Animation”組件簡介
(1)Canvas(畫布)組件。
畫布是一個具有觸控感應的二維平板,在它上面可以繪畫,可以移動精靈。它是一個容器控件,繪畫和動畫動作只有在該容器中才能實現。
它采用經典的屏幕坐標,畫布上的任何一點都可以用一對數值(X,Y)來定位,其中X是距畫布左邊距離,Y是距畫布上端的距離,且都是正值。
通過寬度(Width)和高度屬性(Heigh)可以設置畫布的大小,還支持背景顏色(BackgroundColor)、背景圖片(BackgroundImage)的改變,設置畫筆顏色(PaintColor)和寬度(LineWidth),以及畫布是否可見(Visible)等屬性。
畫布支持的事件有拖拽事件(Dragged)、快劃動事件(Flung)、觸碰按下事件(TouchDown)、觸碰抬起事件(TouchUp)、觸碰事件(Touched)。這些事件是動畫和游戲制作的基礎。
(2)Ball(小球)組件。
一個圓形的精靈,可以被放置在畫布中,它會對觸碰事件、拖拽事件產生反應,會與其他精靈作用,發生碰撞事件,以及碰到邊緣事件。會根據設置的屬性值呈現不同的大小、顏色,按一定的方向和速度產生移動。
例如,要讓小球在0.5秒內移動4個像素位置,就需要設定Speed屬性值為4,Interval屬性值為500,Heading(方向)屬性值為90,Enabled(可用)屬性值為True。
小球的外觀只能通過它的PaintColor屬性值和Radius屬性值來改變,小球的位置通過它的X屬性值和Y屬性值來改變。
還可以具有CollidedWith
(component other)、EdgeReached
(number edge)、NoLongerColliding
With(component other)3個碰撞事件,而這也正是制作動畫和游戲的出發點。
(3)ImageSprite(圖像精靈)組件。
圖像精靈是一種可在畫布中自由移動的圖像,并可與球體(Ball)、其他圖像精靈和畫布邊緣產生碰撞事件,因此常用于游戲開發。
除可以通過Picture屬性設置其他圖像外,其他的屬性、事件與方法都與Ball控件一樣。
3.碰撞檢測
碰撞檢測是在精靈運動過程中,檢測到精靈自身邊緣與其他精靈或畫布邊緣接觸的技術。游戲中的物體發生移動后才有必要進行碰撞檢測。如何實現碰撞檢測?首先確定檢測對象,檢測是否碰撞,處理碰撞——效果、聲音、反應等。
4.游戲制作中的實例簡介
按照興趣原則、以計算思維為核心的編程能力培養原則和任務驅動原則設計了“游戲制作專題”,包括3個由淺入深、逐步遞進的游戲制作。它們分別是彈球游戲、乒乓球、打地鼠游戲初級版和打地鼠游戲升級版,這幾個都是經典的、現實中常玩的游戲。
(1)彈球游戲。
功能:手指劃動球體,球體調用該事件中的速度和方向參數,開始運動。當球體碰到面布邊緣時,會根據碰撞方向反彈并發出響聲。
難度等級:★
興趣等級:★★★★
知識內容:畫布、小球組件的功能、屬性、事件與方法,聲音組件。
拓展建議:①根據速度改變小球顏色;②當碰撞到畫布邊緣時減速;③在畫布設置其他障礙物,作為小球的射擊目標;④多個小球進行碰撞。
(2)乒乓球游戲。
功能:單擊開始按鈕,乒乓球從屏幕上部(20,20)以隨機速度(8~15)、方向(0~360)開始運動,乒乓球碰撞到畫布的上、左、右時,反彈,不加分;碰到拍子反彈,計1分;碰到下邊緣,扣1分,播放結束聲音。單擊重置按鈕時,計分清零,小球和單擊開始按鈕時一樣。
拍子控制:用手指拖拽來進行控制、使用方向傳感器的roll參數變化來控制拍子的左右移動。
難度等級:★★
興趣等級:★★★★
知識內容:畫布、小球、拍子(圖像精靈)組件、方向傳感器、碰撞事件、碰到邊緣事件、拖拽事件、屏幕坐標、隨機整數等。
(3)打地鼠游戲(初級版)(1只地鼠隨機出現)。
功能:地鼠在屏幕上隨機出現,每秒鐘移動一次位置;玩家觸摸到地鼠時,振屏,得分加1;玩家觸摸到屏幕時,失分加1;單擊Reset按鈕時,得分與失分清零,重新開始。
難度等級:★★
興趣等級:★★★★
知識內容:過程的定義與應用、隨機函數、條件判斷。
(4)打地鼠游戲(高級版)(1只地鼠隨機出現在洞里)。endprint
功能:畫布上有9個洞,洞有固定位置,地鼠隨機出現在洞里。玩家觸摸到地鼠時,振屏,得分加1;玩家觸摸到屏幕時,失分加1;單擊Reset按鈕時,得分與失分清零,重新開始。
難度等級:★★★★
興趣等級:★★★★
知識內容:列表、For Each item in list循環、任意組件及屬性值的引用、Z層坐標與多個精靈的遮擋關系。
● 一個游戲制作的教學設計范例摘選——彈球游戲
1.資源準備
(1)搭建好的離線開發環境及離線環境啟動說明.doc。
(2)BallBounce.pdf(彈球游戲的參考文檔)。
2.教學過程設計
(1)導入。
引導學生回憶小時候玩的彈玻璃球游戲,讓學生說一說它的玩法。教師提出問題,“如果是用App Inventor來制作一個彈球的游戲,你會怎樣定義它的功能?還需要學習什么知識?”
(2)小組討論彈球游戲的功能與所需要的新知識。
(3)交流共享,形成一致意見。先做一個最簡單的彈球游戲,即手指劃動小球時,小球可按手指劃動的方向和快慢移動,碰到邊緣時會反彈回來。
需要的知識:如何能夠讓小球動起來?碰到邊緣時如何判斷?如何反彈?
(4)新知識學習。
Canvas畫布組件:容器控件,是繪畫、動畫與游戲的制作場地。
Ball小球組件:可以按照設置的速度和時間間隔,在屏幕上自主運動。
應用小球的快速劃動事件,獲得的速度和方向作為小球運動的速度與方向。代碼如上頁圖1。
在該事件中,edge是一個該事件自定義的局部變量(如圖2),取值時應注意坐標、方位。反彈方法如圖3所示。
碰撞檢測:碰到邊緣,調用反彈方法。
(5)根據定義功能,自主開發程序。
(6)模擬測試,交流共享并思考改進方法。
(7)教師小結所學知識點并點評學生作品。
(8)撰寫自己想增加的功能和界面美化,進行二次開發。
● 游戲專題教學效果
經過3周的教學實踐,我們發現學生對能夠利用App Inventor制作手機游戲的課題內容非常感興趣,用學生的話來說就是“當你玩自己做的游戲時,心情無比舒暢,感覺之前一切付出有了回報”。另外,從學生在課堂上的表現也可以看出來,沒有一個學生去做別的事,都在非常認真地完成每一個游戲制作的任務,很多東西還有自己的改進想法。
其次,學生對知識的理解非常深刻,在每課的心得文本中學生寫到:“學會用列表實現命令的循環,用接觸到地鼠和畫布時分別加減得分實現對地鼠和洞的區分;學會設置Z坐標,使地鼠不被洞遮住。增加了顯示難度等級的設定,增加了游戲的公平性和可玩性”、“通過完善打地鼠游戲,增加了難度設置,修改了自己程序里的BUG,充分地感受到思想是進步的源泉”、“學會了自定義過程,不用再一遍遍地復制,簡化了許多步驟。也學會了用touchsprite捕捉圖像、調整timer的頻數、隨機定義地鼠的位置。通過改變timerInterval來改變地鼠移動的速度,增加了軟件的可玩性和娛樂性”、“學會了運用edge屬性判斷球的碰撞落點,從而進行計分的操作,還學會了兩個物體碰撞的判斷”。
另外,通過每課文本奇思妙想部分的撰寫,我們發現學生的編程思維得到了很好的鍛煉和提高。學生說到:“這個乒乓球游戲可以擴展為打磚塊、打水果、打兔子之類的游戲。可以添加在Ball碰撞圖像精靈后圖像精靈圖片出現變化的功能。在制作一個游戲的過程中可先把功能和實現功能的結構大致勾畫出來,然后制作,接著測試、不斷完善,以達到娛樂最大化,最貼近心中所想要達成的效果”、“我在彈球游戲的制作中添加了自己的想法,能夠讓彈球停下來,做完之后非常有成就感。但時間有限,沒有辦法展開寫下我真切的感受,但是我確信我對App程序開發的熱情非常高”、“可以有重力感應,當搖動手機時小球也能隨著手機的搖動滾來滾去;當撞壁時能有聲音并且速度變慢;可以加一些障礙物”。
修改調試自己編寫的程序,是培養學生計算思維很關鍵的環節,收效很好,對此學生也深有體會。
從學生對作品的制作、測試、修改、拓展思考等方面,可以看出“游戲制作專題”深受學生的喜愛,他們樂在其中。
● 結束語
如今,那些頂級的電子游戲正在沖擊虛擬與現實的界限,很多人無法抵抗其帶來的誘惑與快感,但人們是玩家、消費者或看客。而諸如彈球、打乒乓球、打地鼠之類的手機游戲雖然很幼稚,學生們設計制作這樣的手機游戲也許會更枯燥,但他們是創造者,是這類游戲的主宰。因此,只要是自己做出來的,哪怕是再簡單的游戲他們也可以從創造中體驗到樂趣和成就感。從實踐效果來看,這樣的專題單元設計很受學生歡迎,能夠持續對App Inventor的熱愛,將會形成持續的、積極的學習動機。
參考文獻:
[1]Wing J M.Computational thinking[J].Communications of the ACM, 2006,49(3).
[2]董榮勝.計算思維及計算機導論[J].計算機科學, 2009,36(4).
[3]牟琴,譚良,周雄峻.基于計算思維的任務驅動式教學模式的研究[J].現代教育技術,2011(6).endprint
功能:畫布上有9個洞,洞有固定位置,地鼠隨機出現在洞里。玩家觸摸到地鼠時,振屏,得分加1;玩家觸摸到屏幕時,失分加1;單擊Reset按鈕時,得分與失分清零,重新開始。
難度等級:★★★★
興趣等級:★★★★
知識內容:列表、For Each item in list循環、任意組件及屬性值的引用、Z層坐標與多個精靈的遮擋關系。
● 一個游戲制作的教學設計范例摘選——彈球游戲
1.資源準備
(1)搭建好的離線開發環境及離線環境啟動說明.doc。
(2)BallBounce.pdf(彈球游戲的參考文檔)。
2.教學過程設計
(1)導入。
引導學生回憶小時候玩的彈玻璃球游戲,讓學生說一說它的玩法。教師提出問題,“如果是用App Inventor來制作一個彈球的游戲,你會怎樣定義它的功能?還需要學習什么知識?”
(2)小組討論彈球游戲的功能與所需要的新知識。
(3)交流共享,形成一致意見。先做一個最簡單的彈球游戲,即手指劃動小球時,小球可按手指劃動的方向和快慢移動,碰到邊緣時會反彈回來。
需要的知識:如何能夠讓小球動起來?碰到邊緣時如何判斷?如何反彈?
(4)新知識學習。
Canvas畫布組件:容器控件,是繪畫、動畫與游戲的制作場地。
Ball小球組件:可以按照設置的速度和時間間隔,在屏幕上自主運動。
應用小球的快速劃動事件,獲得的速度和方向作為小球運動的速度與方向。代碼如上頁圖1。
在該事件中,edge是一個該事件自定義的局部變量(如圖2),取值時應注意坐標、方位。反彈方法如圖3所示。
碰撞檢測:碰到邊緣,調用反彈方法。
(5)根據定義功能,自主開發程序。
(6)模擬測試,交流共享并思考改進方法。
(7)教師小結所學知識點并點評學生作品。
(8)撰寫自己想增加的功能和界面美化,進行二次開發。
● 游戲專題教學效果
經過3周的教學實踐,我們發現學生對能夠利用App Inventor制作手機游戲的課題內容非常感興趣,用學生的話來說就是“當你玩自己做的游戲時,心情無比舒暢,感覺之前一切付出有了回報”。另外,從學生在課堂上的表現也可以看出來,沒有一個學生去做別的事,都在非常認真地完成每一個游戲制作的任務,很多東西還有自己的改進想法。
其次,學生對知識的理解非常深刻,在每課的心得文本中學生寫到:“學會用列表實現命令的循環,用接觸到地鼠和畫布時分別加減得分實現對地鼠和洞的區分;學會設置Z坐標,使地鼠不被洞遮住。增加了顯示難度等級的設定,增加了游戲的公平性和可玩性”、“通過完善打地鼠游戲,增加了難度設置,修改了自己程序里的BUG,充分地感受到思想是進步的源泉”、“學會了自定義過程,不用再一遍遍地復制,簡化了許多步驟。也學會了用touchsprite捕捉圖像、調整timer的頻數、隨機定義地鼠的位置。通過改變timerInterval來改變地鼠移動的速度,增加了軟件的可玩性和娛樂性”、“學會了運用edge屬性判斷球的碰撞落點,從而進行計分的操作,還學會了兩個物體碰撞的判斷”。
另外,通過每課文本奇思妙想部分的撰寫,我們發現學生的編程思維得到了很好的鍛煉和提高。學生說到:“這個乒乓球游戲可以擴展為打磚塊、打水果、打兔子之類的游戲。可以添加在Ball碰撞圖像精靈后圖像精靈圖片出現變化的功能。在制作一個游戲的過程中可先把功能和實現功能的結構大致勾畫出來,然后制作,接著測試、不斷完善,以達到娛樂最大化,最貼近心中所想要達成的效果”、“我在彈球游戲的制作中添加了自己的想法,能夠讓彈球停下來,做完之后非常有成就感。但時間有限,沒有辦法展開寫下我真切的感受,但是我確信我對App程序開發的熱情非常高”、“可以有重力感應,當搖動手機時小球也能隨著手機的搖動滾來滾去;當撞壁時能有聲音并且速度變慢;可以加一些障礙物”。
修改調試自己編寫的程序,是培養學生計算思維很關鍵的環節,收效很好,對此學生也深有體會。
從學生對作品的制作、測試、修改、拓展思考等方面,可以看出“游戲制作專題”深受學生的喜愛,他們樂在其中。
● 結束語
如今,那些頂級的電子游戲正在沖擊虛擬與現實的界限,很多人無法抵抗其帶來的誘惑與快感,但人們是玩家、消費者或看客。而諸如彈球、打乒乓球、打地鼠之類的手機游戲雖然很幼稚,學生們設計制作這樣的手機游戲也許會更枯燥,但他們是創造者,是這類游戲的主宰。因此,只要是自己做出來的,哪怕是再簡單的游戲他們也可以從創造中體驗到樂趣和成就感。從實踐效果來看,這樣的專題單元設計很受學生歡迎,能夠持續對App Inventor的熱愛,將會形成持續的、積極的學習動機。
參考文獻:
[1]Wing J M.Computational thinking[J].Communications of the ACM, 2006,49(3).
[2]董榮勝.計算思維及計算機導論[J].計算機科學, 2009,36(4).
[3]牟琴,譚良,周雄峻.基于計算思維的任務驅動式教學模式的研究[J].現代教育技術,2011(6).endprint
功能:畫布上有9個洞,洞有固定位置,地鼠隨機出現在洞里。玩家觸摸到地鼠時,振屏,得分加1;玩家觸摸到屏幕時,失分加1;單擊Reset按鈕時,得分與失分清零,重新開始。
難度等級:★★★★
興趣等級:★★★★
知識內容:列表、For Each item in list循環、任意組件及屬性值的引用、Z層坐標與多個精靈的遮擋關系。
● 一個游戲制作的教學設計范例摘選——彈球游戲
1.資源準備
(1)搭建好的離線開發環境及離線環境啟動說明.doc。
(2)BallBounce.pdf(彈球游戲的參考文檔)。
2.教學過程設計
(1)導入。
引導學生回憶小時候玩的彈玻璃球游戲,讓學生說一說它的玩法。教師提出問題,“如果是用App Inventor來制作一個彈球的游戲,你會怎樣定義它的功能?還需要學習什么知識?”
(2)小組討論彈球游戲的功能與所需要的新知識。
(3)交流共享,形成一致意見。先做一個最簡單的彈球游戲,即手指劃動小球時,小球可按手指劃動的方向和快慢移動,碰到邊緣時會反彈回來。
需要的知識:如何能夠讓小球動起來?碰到邊緣時如何判斷?如何反彈?
(4)新知識學習。
Canvas畫布組件:容器控件,是繪畫、動畫與游戲的制作場地。
Ball小球組件:可以按照設置的速度和時間間隔,在屏幕上自主運動。
應用小球的快速劃動事件,獲得的速度和方向作為小球運動的速度與方向。代碼如上頁圖1。
在該事件中,edge是一個該事件自定義的局部變量(如圖2),取值時應注意坐標、方位。反彈方法如圖3所示。
碰撞檢測:碰到邊緣,調用反彈方法。
(5)根據定義功能,自主開發程序。
(6)模擬測試,交流共享并思考改進方法。
(7)教師小結所學知識點并點評學生作品。
(8)撰寫自己想增加的功能和界面美化,進行二次開發。
● 游戲專題教學效果
經過3周的教學實踐,我們發現學生對能夠利用App Inventor制作手機游戲的課題內容非常感興趣,用學生的話來說就是“當你玩自己做的游戲時,心情無比舒暢,感覺之前一切付出有了回報”。另外,從學生在課堂上的表現也可以看出來,沒有一個學生去做別的事,都在非常認真地完成每一個游戲制作的任務,很多東西還有自己的改進想法。
其次,學生對知識的理解非常深刻,在每課的心得文本中學生寫到:“學會用列表實現命令的循環,用接觸到地鼠和畫布時分別加減得分實現對地鼠和洞的區分;學會設置Z坐標,使地鼠不被洞遮住。增加了顯示難度等級的設定,增加了游戲的公平性和可玩性”、“通過完善打地鼠游戲,增加了難度設置,修改了自己程序里的BUG,充分地感受到思想是進步的源泉”、“學會了自定義過程,不用再一遍遍地復制,簡化了許多步驟。也學會了用touchsprite捕捉圖像、調整timer的頻數、隨機定義地鼠的位置。通過改變timerInterval來改變地鼠移動的速度,增加了軟件的可玩性和娛樂性”、“學會了運用edge屬性判斷球的碰撞落點,從而進行計分的操作,還學會了兩個物體碰撞的判斷”。
另外,通過每課文本奇思妙想部分的撰寫,我們發現學生的編程思維得到了很好的鍛煉和提高。學生說到:“這個乒乓球游戲可以擴展為打磚塊、打水果、打兔子之類的游戲。可以添加在Ball碰撞圖像精靈后圖像精靈圖片出現變化的功能。在制作一個游戲的過程中可先把功能和實現功能的結構大致勾畫出來,然后制作,接著測試、不斷完善,以達到娛樂最大化,最貼近心中所想要達成的效果”、“我在彈球游戲的制作中添加了自己的想法,能夠讓彈球停下來,做完之后非常有成就感。但時間有限,沒有辦法展開寫下我真切的感受,但是我確信我對App程序開發的熱情非常高”、“可以有重力感應,當搖動手機時小球也能隨著手機的搖動滾來滾去;當撞壁時能有聲音并且速度變慢;可以加一些障礙物”。
修改調試自己編寫的程序,是培養學生計算思維很關鍵的環節,收效很好,對此學生也深有體會。
從學生對作品的制作、測試、修改、拓展思考等方面,可以看出“游戲制作專題”深受學生的喜愛,他們樂在其中。
● 結束語
如今,那些頂級的電子游戲正在沖擊虛擬與現實的界限,很多人無法抵抗其帶來的誘惑與快感,但人們是玩家、消費者或看客。而諸如彈球、打乒乓球、打地鼠之類的手機游戲雖然很幼稚,學生們設計制作這樣的手機游戲也許會更枯燥,但他們是創造者,是這類游戲的主宰。因此,只要是自己做出來的,哪怕是再簡單的游戲他們也可以從創造中體驗到樂趣和成就感。從實踐效果來看,這樣的專題單元設計很受學生歡迎,能夠持續對App Inventor的熱愛,將會形成持續的、積極的學習動機。
參考文獻:
[1]Wing J M.Computational thinking[J].Communications of the ACM, 2006,49(3).
[2]董榮勝.計算思維及計算機導論[J].計算機科學, 2009,36(4).
[3]牟琴,譚良,周雄峻.基于計算思維的任務驅動式教學模式的研究[J].現代教育技術,2011(6).endprint