- Java游戲開發實踐:Greenfoot編程快速入門
- 何青
- 3960字
- 2019-12-06 16:22:07
第1章 Greenfoot簡介
本章將要介紹Greenfoot的一些基本內容,包括Greenfoot的安裝與設置、Greenfoot的基本操作,以及Greenfoot的API等。通過本章的介紹,可以全面了解Greenfoot的主要功能,同時初步掌握Greenfoot的使用方法。
1.1 概述
Greenfoot是由英國肯特大學的Michael和Martin設計的一款Java游戲設計工具,它是一個功能完整的開發環境,可以方便地使用Java語言編寫游戲和進行游戲模擬。Greenfoot可認為是一個用Java語言創建的二維圖形程序框架和集成開發環境的結合體,它支持Java語言的全部特性,特別適合進行基于組件的可視化編程。在Greenfoot中,對象的可視化和交互性是其重要特征,任何游戲中的角色和物體都可以通過鼠標拖放的形式添加和更改。
Greenfoot的運行界面很簡潔,主要分為4個功能區域:菜單欄、游戲面板、控制按鈕和場景信息,如圖1.1所示。

圖1.1 Greenfoot的運行界面
菜單欄中的各菜單項對應著各種操作命令,包括“打開”“刪除”“關閉”等命令;游戲面板是整個游戲的運行容器,游戲的場景和角色在此進行交互和顯示;場景信息中顯示了游戲的組成部分及其結構;控制按鈕用于對游戲進行即時掌控:“運行”按鈕用于自動運行游戲,“單步”按鈕用于單步運行游戲,“復位”按鈕讓游戲回到初始情形,“運行速度”滾動條用來調節游戲的運行速度,“編譯全部”按鈕用來編譯游戲代碼。
1.2 Greenfoot的安裝及設置

Greenfoot是一款免費的開源軟件,可以在官網(www.greenfoot.org/download)直接下載,下載頁面如圖1.2所示。截至本書寫作完畢,Greenfoot的最新版本為3.1.0,在下載頁面中提供了各個平臺下的Greenfoot安裝包,包括Windows、Mac、Linux及其他Java平臺。由于Greenfoot 3.x系列版本主要支持Windows 7以上的操作系統,考慮到與Windows XP系統的兼容性問題,本書以Greenfoot 2.x系列的最高版本2.4.2來編寫游戲程序案例(本書還提供了Greenfoot 3.x版本的案例代碼,以便安裝Greenfoot最新版本的讀者使用)。

圖1.2 Greenfoot下載頁面
另外,Greenfoot 3.x系列加入了新的“Stride模式”,即將各種程序語法做成類似積木塊的小模塊,然后通過組合與拼接這些語法模塊來搭建程序,目的是讓初學者專注于程序編寫的過程,而避免陷入程序語法的細節中。然而,雖然Stride模式能夠幫助新手快速學會編程,但是對于編寫大規模的程序卻不夠靈活和方便,而且游戲程序相對比較復雜,因此沒有必要采用Stride模式來編寫程序,直接使用傳統的文本編輯模式即可。
Greenfoot 2.4.2版本的下載地址位于圖1.2所示的下載頁面最下方的“Old Versions”一欄。單擊“old versions of Greenfoot”鏈接(www.greenfoot.org/download_old),可見圖1.3所示頁面,在該頁面中可以找到Greenfoot 2.4.2的安裝程序。

圖1.3 Greenfoot 2.4.2下載頁面
Greenfoot是基于Java開發環境的,其運行離不開JDK(Java開發工具包)的支持。從圖1.3中可以看到,Greenfoot 2.4.2為Windows平臺提供了兩個安裝程序,第一個已綁定了JDK,無須另外安裝;第二個只是單獨的Greenfoot安裝程序,沒有綁定JDK,因此需要先安裝JDK后再安裝Greenfoot。Greenfoot 2.4.2支持JDK 1.6及以上版本。當然,使用其他操作系統的讀者也可以選擇相應的Greenfoot安裝文件進行安裝。
在初次使用Greenfoot的時候,會彈出如圖1.4所示的界面,需要在其中設置JDK的安裝路徑。單擊左下角的“Browse”按鈕進行設置。

圖1.4 JDK設置界面
隨后會打開JDK選擇對話框,如圖1.5所示,在其中選擇JDK的安裝路徑。若下載的Greenfoot安裝文件綁定了JDK的版本,則可進入Greenfoot安裝目錄下的“jdk/bin”子目錄,選擇“java”文件,然后單擊對話框下方的“打開”按鈕,即可正常使用Greenfoot。

圖1.5 JDK選擇對話框
Greenfoot是一款國際化的設計工具,支持多個國家的語言,安裝完成后可將其界面設置為中文。打開Greenfoot,在主界面的菜單欄單擊“Edit”菜單項下的“Preferences”選項,如圖1.6所示。

圖1.6 菜單欄中的“Preferences”選項
然后單擊“Interface”標簽,并在“Language”選項后的下拉列表中選擇“Chinese”,如圖1.7所示。關閉并重啟Greenfoot,可以發現操作界面上的文字都變成了中文。

圖1.7 設置中文界面
1.3 Greenfoot基本操作方法
1.3.1 創建游戲場景

使用Greenfoot進行游戲設計,首先需要新建一個游戲項目。在Greenfoot界面的菜單欄中單擊“劇本”菜單項下的“新建劇本”選項,如圖1.8所示。在隨后彈出的對話框中為游戲項目設置保存路徑,同時設置一個項目名稱,例如“myGame”。Greenfoot會自動創建一個文件夾,里面包含了該游戲的所有文件。

圖1.8 創建游戲項目
在創建游戲項目后,會出現一個空的游戲場景界面。界面右側分別有兩個類:一個是場景類World,另一個是角色類Actor。Java程序都是由類組成,而組成Greenfoot游戲的類則主要是場景類和角色類。需要注意,World類和Actor類都是抽象類,它們不能直接被使用,在設計程序時需要創建這兩個類的子類才行,這在以后的游戲設計中會詳細介紹。
接下來,右擊World類,在彈出的快捷菜單中單擊“新建子類”選項,如圖1.9所示。

圖1.9 創建游戲場景
當執行“新建子類”命令后,將彈出“新建類”對話框進行World子類的設置,如圖1.10所示。

圖1.10 “新建類”對話框
在圖1.10中的“類名”文本框中輸入子類的名稱“MyWorld”。然后單擊“完成”按鈕,并單擊Greenfoot界面右下方的“編譯全部”按鈕,便可以看到如圖1.11所示的游戲場景。因為沒有設置背景圖像,所以系統默認生成的是一個白色背景的空白游戲場景。

圖1.11 新建的游戲場景
需要指出的是,圖1.11中所示的游戲場景面板的尺寸是可以調節的。右擊圖1.12上的場景子類MyWorld,在彈出的快捷菜單中選擇“編輯代碼”命令,則會彈出圖1.13所示的MyWorld類的源代碼框。

圖1.12 選擇“編輯代碼”命令

圖1.13 MyWorld類的源代碼框
在圖1.13中找到“super(600, 400, 1);”這條語句,它表示創建一個尺寸為600像素×400像素大小的游戲場景。如果將它改為“super(300, 200, 1);”,則創建的游戲場景尺寸變為了300像素×200像素大小。然后,單擊Greenfoot界面右下角的“編譯全部”按鈕,便會生成圖1.14所示的新尺寸的游戲場景面板。可以看到,新的游戲場景面板的尺寸比初始時縮小了一半。

圖1.14 尺寸為300像素×200像素的游戲場景
此外,也可以在設置游戲場景時導入其他背景圖片。這里選擇的圖片文件是“cell.jpg”文件,它是事先準備好的,并已被放置到游戲項目文件夾下的“images”子文件夾中。當然也可以選擇或導入其他文件夾中的圖片文件,但建議將項目中使用的所有圖片文件放置在項目的“images”文件夾中,以便統一進行管理。
右擊MyWorld類,在彈出的快捷菜單中選擇“設置圖像”選項,如圖1.15所示。

圖1.15 設置場景的背景圖像
此時將會彈出“選擇類圖像”對話框,如圖1.16所示。
從該對話框中選擇“cell.jpg”圖片文件并單擊“完成”按鈕,即可看到Greenfoot更新了游戲場景。同時可以看到“cell.jpg”文件被設為場景的背景圖像,并以平鋪的方式填充了整個場景,如圖1.17所示。若在圖1.16所示的對話框中看不到“cell.jpg”圖片文件,可以單擊對話框中的“從計算機導入”按鈕,然后在計算機磁盤中選擇相應的圖片并導入。
將游戲場景的尺寸恢復到初始大小(即600像素×400像素),這時背景圖像仍然會以平鋪的方式自動填充整個游戲場景。

圖1.16 “選擇類圖像”對話框

圖1.17 設置背景圖像后的游戲場景
1.3.2 添加游戲角色
Greenfoot是交互式的圖形編程環境,可以用鼠標拖曳的方式向場景中添加游戲角色。
在添加角色前,首先要在游戲中創建一個角色。Greenfoot提供了一個角色類Actor,讓游戲設計者通過創建它的子類來為游戲添加角色。右擊Greenfoot界面上的Actor類,單擊彈出快捷菜單上的“新建子類”選項,如圖1.18所示。

圖1.18 創建游戲角色
此時將會彈出如圖1.19所示的“新建類”對話框,在該對話框中設置游戲角色類的名稱為“Wombat”,并將事先準備的圖片文件“wombat.gif”作為角色圖像。
在“新建類”對話框中設置好角色類的名稱和圖像后,單擊“完成”按鈕。回到Greenfoot界面,單擊“編譯全部”按鈕,會看見Greenfoot右側的類圖上新添加了一個名為Wombat的游戲角色類。
右擊這個Wombat類,在彈出的快捷菜單中選擇“new Wombat()”命令,然后單擊游戲場景面板的任意一個網格,即可看到一個Wombat類的游戲角色對象被添加到游戲場景中,如圖1.20所示。若是按住Shift鍵再移動鼠標,便可以重復地向游戲場景中添加多個角色對象。

圖1.19 設置角色的名稱與圖像

圖1.20 在場景中添加游戲角色
1.3.3 運行游戲
現在來看看Greenfoot界面上的控制按鈕是怎樣控制游戲程序運行的。在控制按鈕區域單擊“運行”按鈕,可以讓游戲自動運行。在運行過程中,“運行”按鈕會轉變為“暫停”按鈕,單擊它會使得游戲暫停運行。還有一個“復位”按鈕,單擊可以讓程序還原到運行前的初始狀態。可以調節“運行速度”滾動條來調節游戲的運行速度,當把滾動條中的滑塊向右側移動時,游戲的運行速度便加快了。若是想測試游戲角色的行為,則可以單擊“單步”按鈕來讓游戲單步執行,每單擊一次,游戲便運行一幀。而單擊“運行”按鈕實際上不過是循環地重復單步游戲程序。
“單步”按鈕表示游戲在一個單位時間內的運行情況,但要注意,這里的單位時間并不是以秒或毫秒來度量的。因為每臺計算機的硬件配置不同,運行情況有差異,所以編程時無法用精確的時間單位來計算游戲時間。這里所說的單位游戲時間是指游戲循環程序運行一次所耗費的那部分時間。
然而對于剛才創建的游戲來說,當游戲角色添加完畢后單擊“運行”按鈕,游戲似乎沒有任何反應。此時程序雖然開始運行了,但角色并沒有真正運動起來。這是因為雖然向場景中添加了游戲角色,但沒有為角色編寫任何的運動控制代碼,所以角色還不能運動。需要打開角色子類的代碼框,然后在其中編寫運行代碼,這在后面的章節中將會詳細介紹。
1.4 Greenfoot提供的主要API

Greenfoot為編程人員提供了豐富的API(Application Programming Interface,應用程序接口),通過調用這些API可以方便地編寫各種游戲操作。Greenfoot API包含了幾個主要的類:World類、Actor類、Greenfoot類、MouseInfo類、GreenfootImage類和GreenfootSound類。
World類和Actor類分別作為游戲場景和游戲角色的父類;Greenfoot類提供了使用Greenfoot自身框架的入口,例如暫停游戲運行或調整游戲速度等;GreenfootImage類是一個圖像類,主要為游戲場景和游戲角色提供圖形及圖像的繪制方法;MouseInfo類是一個提供鼠標輸入信息的類,例如獲取鼠標單擊的坐標以及標示什么角色被單擊等;GreenfootSound類則提供了對游戲音頻的播放和處理方法。表1.1~表1.6分別列舉了各類的主要方法。
表1.1 World類的主要方法

表1.2 Actor類的主要方法

表1.3 Greenfoot類的主要方法

表1.4 MouseInfo類的主要方法

表1.5 GreenfootImage類的主要方法

表1.6 GreenfootSound類的主要方法

若想要了解各個類的具體使用方法,可以在Greenfoot菜單欄的“幫助”菜單項中選擇“Greenfoot類文檔”選項,或者直接在World類或Actor類上雙擊。Greenfoot API的說明文檔和Greenfoot軟件集成在一起,不需要聯網就可以查看,如圖1.21所示。Greenfoot API的詳細資料參見本書的附錄部分。

圖1.21 Greenfoot API說明文檔