吳佳潔+王師艷+全媛虹
摘要:Alice是一個在3D環(huán)境下編寫程序的軟件,使學(xué)生在利用信息技術(shù)分析和解決問題等方面的能力得到很好的提升,讓學(xué)生在學(xué)習編程的過程中多一些探索和樂趣,能夠幫助學(xué)生在實踐中培養(yǎng)計算機思維方式,為以后程序設(shè)計課程的挑戰(zhàn)做好準備。
關(guān)鍵詞:Alice;3D環(huán)境;思維方式
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)12-0158-02
1 Alice簡介
Alice項目是美國卡耐基梅隆大學(xué)的一個學(xué)術(shù)性的項目,Randy Pausch教授是該項目的創(chuàng)建人,他希望通過此項目教會青少年如何在3D環(huán)境下編寫計算機程序,它是一種全新的學(xué)習編程的方法,只要用日常的語言,就可以讓屏幕上的一切三維物體在虛擬世界里服從你的命令,你就可以自己導(dǎo)演電影和創(chuàng)作計算機游戲了。學(xué)生可以把圖片貼到一個物體上,還可以給物體增加各種簡單的動作和腳本,讓虛擬世界里的物體具有靈活性。
Alice是為初學(xué)者設(shè)計的一種直觀式的3D繪圖軟件,里面有許多事先設(shè)計好的繪圖物件、檢視工具和控制物件的工具,它不必學(xué)習復(fù)雜的程序語言就能掌握計算機繪圖,就算是剛開始學(xué)3D繪圖的人也能輕松學(xué)會。許多美國大學(xué)把Alice作為計算機專業(yè)的入門課程開設(shè),很多學(xué)生在學(xué)習了Alice之后對計算機專業(yè)產(chǎn)生興趣。Alice的使用非常容易,用它繪制出來的圖形可以直接儲存成網(wǎng)頁,甚至還可以直接導(dǎo)演一部動畫!
Alice是一個免費的工具,它可以讓學(xué)生學(xué)習到最基本的編程概念,即使學(xué)生是第一次接觸面向?qū)ο缶幊?,也能很快學(xué)會創(chuàng)建動畫電影和簡單的視頻游戲。
2 Alice的基本功能
Alice提供了一個可拖動的圖形界面,它由場景區(qū)、對象樹、代碼編輯區(qū)、對象列表、方函數(shù)方法細節(jié)區(qū)等六個部分組成。使用Alice編程你不需要自己寫類和對象,它自身就提供了大量的對象庫,只用根據(jù)提供的類創(chuàng)建對象即可。同樣的,使用Alice也不需要寫任何代碼,只需要拖動對象的方法、函數(shù)塊到代碼區(qū),Alice會根據(jù)提示自動生成代碼,如圖1:
2.1 創(chuàng)建一個項目
1)Alice創(chuàng)建一個項目,首先要進行場景的選擇,再次就是進行人物的選擇,最后在procedures區(qū)拖動功能塊對人物動作進行程序設(shè)計;
2)選中要編輯的人物,對它進行動作設(shè)計,Alice是在3D環(huán)境下編輯的,它就像人一樣,可以坐可以跳,只要你能想到的動作,就可以拖動程序塊,對它進行控制,創(chuàng)造屬于你自己設(shè)計的動畫視頻;
3)每一個對象(人、動植物等等)都有不同的關(guān)節(jié)、部位,就像java中一個類的數(shù)據(jù)成員,可以改變這些部位的位置或者對部位添加運動方法,即用類的函數(shù)成員對數(shù)據(jù)成員進行訪問和修改。
2.2 高級功能
1)Alice除了它提供的屬性、方法、函數(shù),還可以自定義屬性、方法和函數(shù)。在窗口右邊頂上的白色矩形按鈕那里選擇不同的類,對其添加自定義的procedures、function、properties。
2)在initializeEventListners的視圖里可以添加視聽,鍵盤、鼠標的響應(yīng)就是在這里添加的。
3 Alice動畫具體實現(xiàn)
Alice常用來制作3D動畫和3D游戲,通過一個具體的動畫實現(xiàn),我們能很直觀地看到Alice使用的方便、智能。做一個以“舉辦生日”為背景的動畫,動畫主要內(nèi)容:主人公生日,邀請惟一的好友來城堡參加自己的生日宴。生日宴上食物的香味吸引了城堡外小鳥,小鳥飛到橡樹上,它看到香蕉樹下的香蕉,于是飛到香蕉樹下,一跳一啄地到香蕉旁邊。通過Alice自身帶有的對象庫和方法塊,生成所需的對象,拖動方法函數(shù)塊搭建動畫,如圖2:
3.1 動畫的基本實現(xiàn)
1)在Setup Scene 界面中使用Alice提供的類庫向草地場景添加必要的對象。主要人物三人:adultPerson、elderPerson、teenPerson,構(gòu)成城堡的十面墻CastleWall,桌子、椅子、蛋糕、碟子、樹、鳥等等。
在Bird旁邊添加虛擬相機camera1,用于之后鏡頭的轉(zhuǎn)換。
2)將添加的對象移動調(diào)整到適合的位置、方向和大小,借助場景界面的相機視圖和右邊菜單欄的handle style。將城堡圍城一個區(qū)域,這個區(qū)域的內(nèi)部以及周圍就是動畫場景,然后把設(shè)置好人物以及其他對象的位置和狀態(tài),并把主相機對準adultPerson。
3)添加Alice提供的方法塊,讓動畫動起來。拖動左邊的Person方法塊MoveToward到代碼區(qū),設(shè)置移動目標和距離,讓人物移動到距離桌子一定距離的地方。用同樣的方法實現(xiàn)椅子的拉開,鏡頭的轉(zhuǎn)換,小鳥的啄食動作,小鳥的飛行動作。
3.2 動畫的高級實現(xiàn)
通過Alice提供的方法塊我們無法直接實現(xiàn)逼真的動畫,即使成功實現(xiàn)了,這些動作也不能運用到其他項目里。為了解決這個問題,我們需要給人物、小鳥單獨建立一個測試項目,測試人物的走動、坐下、拉椅子,小鳥的飛行、啄食等等方法。測試完畢后,將這些方法塊自定義成一個新的方法塊,并裝入各自的類中,就像java中不同類有不同的函數(shù)成員。
1)為Person類添加行走(Walking)方法:選中Person類,轉(zhuǎn)到類視圖下,將測試完成的方法塊復(fù)制到Walking方法中,將方法的參數(shù)修改為P_SCamera,Obstacle,time,Reference。方法的作用:當Person距離參照物Reference距離小于2.0就不斷向目標Obstacle走,同時P_Camera的鏡頭一直對準Person,運動時間由傳入?yún)?shù)time控制。其中關(guān)鍵偽代碼如下:
2)用同樣方式給Person添加Sitting方法。方法參數(shù)修改為Chair,LR_Distance。因為Alice提供的腿部關(guān)節(jié)轉(zhuǎn)動沒有以膝蓋為支撐點的轉(zhuǎn)動,所以不能真正實現(xiàn)“坐下”這個動作,只能通過do together制造假象。
3)選中Flyer這個類,添加Jump和GoFly兩個方法。Jump函數(shù)實現(xiàn)Flyer向MoveDirection方向移動,并一邊跳躍一邊啄食。GoFly函數(shù)實現(xiàn)Flyer向Obstacle飛行的動作。相關(guān)代碼如下圖,其中通過Flyer的函數(shù)(function)isCollidingWith設(shè)置循環(huán)(while)揮動翅膀的條件,關(guān)鍵代碼如圖3:
4)使用自定義的方法和類本身就有的函數(shù)、方法實現(xiàn)動畫。注意動作的順序、時間,比如相機的移動要跟隨主要對象。
4 結(jié)束語
用Alice編程,讓編程變得更有趣,它避免了一些傳統(tǒng)編程方式下會產(chǎn)生的語法錯誤以及編譯連接等等錯誤引起的困擾。運用Alice已有的對象庫和已經(jīng)寫好的步驟編寫一個動畫或者游戲,即快捷方便又能直觀地表現(xiàn)出來。當然,如果想要制作更逼真復(fù)雜的動畫,也可以自己創(chuàng)建新的步驟??偨Y(jié)來說,Alice是一個很好的,能提起人們對編程興趣的可視化編程軟件。
參考文獻:
[1] 新浪科技.11月TIOBE編程語言排行榜[EB/OL]. (2008-11-20)[2016-03-29].http://tech.sina.com.cn/s/2008-11-20/1137881896.shtml.
[2] Dann W P, Stephen Cooper, Randy Pausch. 用Alice學(xué)編程[M]. 付永剛,譯. 北京: 機械工業(yè)出版社, 2009.
[3] 徐志紅, 尹祿, 趙生慧, 等. 基于Alice 培養(yǎng)女大學(xué)生計算機編程能力的教學(xué)改革探索[J]. 蚌埠學(xué)院學(xué)報, 2014, 10(3): 5.
[4] 鄭歡, 陳勇. 視覺化程序設(shè)計軟件的應(yīng)用與發(fā)展[J]. 電腦知識與技術(shù), 2015,6(17): 92.