?

雷電游戲的設計與實現

2021-12-18 13:42唐型基柴群楊光臨
電腦知識與技術 2021年31期
關鍵詞:Java程序設計項目驅動面向對象

唐型基 柴群 楊光臨

摘要:許多高校的Java程序設計課程教學正在改革,強調提升編程應用能力。但在教學中普遍的學生完成作業還行,開發項目卻不會,一個主要的原因是面向對象的編程思想沒有建立起來,該文以項目驅動教學法案例——雷電游戲的設計實現為例討論引導學生學習面向對象的程序設計方法。

關鍵詞:Java程序設計;項目驅動;面向對象;教學方法

中圖分類號:TP311 ? ? ? 文獻標識碼:A

文章編號:1009-3044(2021)31-0092-03

1 引言

Java程序設計這門課程是目前高校計算機類相關專業的基礎必修課程,該課程具有很強的運用性、實踐性,傳統的教學過程在大多數情況下只是讓學生學會了一門程序設計語言的基礎,現代社會的競爭異常激烈,對學生的應用能力要求也在提高。面對這樣的情形,各高校也在對Java程序設計課程進行改革,不斷往課程里“加料”,強調提升學生的應用能力。

Java 語言作為一門純面向對象編程語言,面向對象編程思想和算法是它的靈魂[1]。Java程序設計語言基礎語法部分的學習并不難,學過C語言的學生基本上都能掌握。但Java本身它是一門面向對象的程序設計語言,很多的學生不會使用面向對象的思想去分析問題,對于Java的使用也僅停留在使用“升級版C語言”的層次,仍是采用面向過程的編程方式使用Java語言[2]。這也是許多學生完成課本作業還行,但獨立去完成一小個項目卻無從下手的根本原因。

2 項目驅動教學法

Java程序設計課程中的內容相較多,基礎部分包括:數據類型、分支控制結構、循環控制結構、數組、異常處理、類和對象、接口等,結合應用部分還有:圖形界面、數據庫連接和操縱、多線程、網絡、面向對象高級特性等。按傳統的教師講,學生被動“填鴨”灌輸的方式教學,學生難以接受眾多的知識,更別說應用。只有將知識融合到項目中,以項目來驅動學生去學習掌握這些知識,才能讓學生更好地學會這些繁雜瑣碎的知識,并認識到這些知識是怎么運用的。在課堂教學中結合項目開發,激發學生學習興趣,增強他們的代碼調試能力,提高項目開發水平[3]。教學整體設計“以職業技能培養為目標,以項目任務實現為載體、理論學習與實際操作相結合”[4]。因此項目驅動教學法是學習Java程序設計課程的有效的教學方法。

3 雷電游戲項目的面向對象設計

為激發學生對項目驅動學習的積極性和興趣,選取的是游戲方面的項目,學習與娛樂相結合,將學生玩游戲的熱情與興趣引導向開發游戲和編程方面來,激起學生學習的熱情,在開發游戲的過程學習面向對象方法的程序設計,在項目開發過程中體會Java程序設計的相關知識。本文以“雷電游戲”這一項目案例的設計與實現來討論項目驅動教學法中引導學生進行面向對象的設計與開發。

面向對象程序設計過程一般分為三個階段:面向對象分析,面向對象設計,面向對象實現[5]。

3.1 面向對象分析

將游戲程序分享給學生,讓學生一起運行體驗和觀察游戲。引導學生開始面向對象程序設計的第一階段:面向對象的分析。此階段分為兩個小的步驟,第一步是找出游戲中有哪些元素組成?這些元素也就是項目中的對象。

通過觀察和分析,在游戲中找到如下的對象:1)主角飛機,2)敵人飛機,3)主角子彈,4)敵人子彈,5)增加生命值物品,6)生命值(次)數(在窗體上方顯示的),7)最終的BOSS。從游戲界面上看,暫時找到的對象就是上述的對象。但是游戲要正常運行還缺少了一些東西,比如游戲背景,游戲運行時聽到的聲音,游戲主框架等,沒有他們程序是不完整的。因此把這三個元素分別擬定成為游戲項目中的對象,它們是:8)游戲背景,9)游戲聲音,10)游戲主框架。

接下來是面向對象分析階段中的第二步,分析各個對象具有什么特性(屬性)?主要指靜態和動態兩個方面的特性。靜態的是成員變量,動態的則是成員方法。

經分析得到各對象的屬性有:

1)主角飛機 。靜態成員:位置坐標(x,y),圖像大?。╳idth,height),圖片。動態成員:取得坐標(x,y)、繪制圖片、發射子彈、移動。

2)敵人飛機。靜態成員:位置坐標(x,y),圖像大?。╳idth,height),圖片。動態成員:取得坐標(x,y)、移動、繪制圖片、發射子彈。

3)主角子彈。靜態成員:位置坐標(x,y),圖像大?。╳idth,height),圖片。動態成員:取得坐標(x,y)、移動、繪制圖片。

4)敵人子彈。靜態成員:位置坐標(x,y),圖像大?。╳idth,height),圖片。動態成員:取得坐標(x,y)、移動、繪制圖片。

5)增加生命值物品對象。靜態成員:位置坐標(x,y),圖像大?。╳idth,height),圖片。動態成員:取得坐標(x,y)、移動、繪制圖片。

6)生命值(條)數。靜態成員:位置坐標(x,y),圖像大?。╳idth,height),圖片。動態成員:繪制圖片。

7)最終的BOSS對象。靜態成員:位置坐標(x,y),圖像大?。╳idth,height),圖片。動態成員:移動、繪制圖片。

8)游戲背景對象。靜態成員:位置坐標(x,y),圖像大?。╳idth,height),圖片。動態成員:繪制圖片。

9)聲音對象。靜態成員:聲音文件名。動態成員:播放聲音文件。

10)游戲主框架對象。它是一個框架,把上述所有對象都包含,并控制著它們協調地工作。靜態成員:生命值(次)數對象,增加生命物品對象,敵機對象,主角飛機對象,敵方子彈對象,主角子彈對象,背景對象,聲音對象。動態成員:初始化游戲,繪圖,按鍵控制。

3.2 面向對象設計

面向對象開發過程的第二階段是面向對象設計,即以項目中的各對象為原型設計出各個類,各個類實例化之后即得到了項目中的對象。此階段中包含兩個步驟,第一步是分析項目中各對象之間的關系(如包含,控制,生成等),然后使用UML工具畫出類圖。

分析每個對象得知,他們有很多的共通點,如:靜態成員:位置坐標(x,y),圖像大?。╳idth,height),圖片。動態成員:取得坐標(x,y);移動;繪制圖片。于是提高代碼的重用性,采用面向對象的繼承的思想,先定義出抽象類:移動對象類(MovableObject),然后其他相應的各對象類可從該類那里繼承而得到。如圖1所示。

第二步是進一步細化類圖,確定類中各個對象靜態成員的具體屬性的類型,明確動態成員要完成的功能,并用采用自然語言或者圖形工具(如流程圖,PAD圖等)描述出來。

1)MovableObject類的設計,x,y坐標設定為整型數據,高(height),寬(width)設定為整型數據,圖片設定為Image類型,如圖2所示。

2)主角飛機(Hero)類的設計。繼承于抽象類MovableObject,增加發射子彈的成員方法。由于主角飛機類是受到按鍵控制的,因此不用父類中的move方法,新增加向上下左右四個方法的移動的成員方法。

其中,發射子彈方法的算法描述為生成主角子彈對象,并填寫它首次出現的位置坐標及圖片小大等信息。

向上移動方法的算法描述為:如果縱坐標y的值大于10則坐標y值減去10,否則不減。

向下移動方法的算法描述為:如果縱坐標y的值小于600(游戲窗口的高度值)減去70(主角飛機圖片的高度)則坐標y加10,否則不加。

向左移動方法的算法描述為:如果橫坐標x的值大于10則坐標x值減去10,否則不減。

向右移動方法的算法描述為:如果橫坐標x的值小于400(游戲窗口的寬度值)減去40(主角飛機圖片的寬度)則坐標x加10,否則不加。

3)敵機(Enemy)類的設計。繼承于抽象類MovableObject,增加發射子彈的方法。

發射子彈方法的算法描述為生成敵機子彈對象,并填寫它首次出現的位置坐標及圖片小大等信息。

重寫父類中的move方法,每間隔一段時間,向下移動5(坐標y加5),向左或向右移動一段距離(x坐標加上-5到5之間的一個數值)。

4)游戲主框架類(GamePanel)類的設計。主框架類繼承于Panel類,在該類中將各對象的運動變化交由一個線程來進行處理運行,為確保游戲程序順暢運行,各對象的顯示和繪制交由另一個線程來進行處理。其中,繪制顯示的對象,這線程不用新建線程另外處理,因為界面程序的組件都有繪制的線程和專用的方法(paint),對象運動變化之后,只要通知界面程序的組件繪制的線程(也可以理解為調用界面程序的繪圖方法更新內容)即可。靜態成員:生命值(次)數對象列表,增加生命物品列表,敵機列表,主角飛機,敵方子彈列表,主角子彈列表,背景對象,聲音對象,各圖形元素運動控制的線程對象。成員方法:初始化游戲,繪圖(重寫paint方法),按鍵控制(控制主角移動),(各對象碰撞的)音效播放,背景音樂播放;事件監聽(按鍵監聽處理);重新開始游戲。

5)各對象運動控制的線程(ThdObjMove)類的設計。此類最好在主框架類中進行設計(內部類),這樣方便線程訪問和控制主框架類的各成員。各圖形元素運動控制的線程類的設計:在線程體中控制敵人、敵人子彈、主角子彈、主角、增加生命值物品等各個對象的移動;并檢查是否發生(敵人與主角、敵人子彈與主角、主角子彈與敵人、增加生命值物品與主角)碰撞;游戲進程發展;Boss出場;檢查游戲是否結束;播放指定音效等。靜態成員:循環控制標記。成員方法:產生敵人;產生增加生命值物品;敵人開火(三類敵人,分別發射三種子彈);敵人移動;增加生命值物品對象移動;檢查增加生命值物品對象與主角是否碰撞;檢查敵人與主角是否碰撞;查檢敵人子彈與主角是否碰撞;查檢主角子彈與敵人是否碰撞(兩種子彈);線程主方法(線程體)。

項目中還有其他類和對象的設計,在此省略。

3.3 面向對象實現

面向對象實現階段的任務是將上一階段的類圖中各類的靜態成員和成員方法的算法用Java語言描述出來,加上類相應的構造方法,將上述每個類編寫為相應的Java源程序文件。

1)MovableObject的定義:

2)主角飛機Hero類的定義:

其他類的定義在此省略。

最后定義程序的窗口類,在窗口類將游戲主框架類的對象加入到窗口內容窗格的中間,于是游戲畫面便可在窗口中顯示出來了。

public class GameFrame extends JFrame {//游戲窗口類,繼承于JFrame

private GamePanel gpanel = new GamePanel();

public GameFrame() {//構造方法

gpanel.setFocusable(true);

gpanel.requestFocus();

this.add(gpanel, BorderLayout.CENTER);

//將將游戲主框架類的對象gpanel添加到內容空格的中間

}

public static void main(String[] args) {

GameFrame frame = new GameFrame();

frame.setSize(410, 630); //設定窗口的大小

frame.setIconImage(Resources.IconPNG);//設置窗口圖標

frame.setTitle("雷電");//設置窗口標題

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//設置窗口關閉按鈕的默認動作是退出程序

frame.setVisible(true);//設置窗口可見

}

}

4 總結

項目驅動的教學方法是較為有效的學習Java程序設計的教學方法,以項目驅動學習,結合學生感興趣的游戲項目激發學生主動學習的熱情。本文以雷電游戲項目的設計實現為例討論了在項目驅動教學法中引導學生學習面向對象的程序設計方法。展示了面向對象程序設計過程中面向對象分析、面向對象設計、面向對象實現三個階段的主要思想。項目驅動教學方法中第一個項目要教師帶領著學生練習,然后再布置難度合理的項目讓學生自己動手去完成,在項目設計實現的過程中使學生學會面向對象的程序設計方法。

參考文獻:

[1] 田春婷.單機版記憶游戲的設計與實現——Java語言任務驅動教學法應用案例[J].科技與創新,2021(5):21-22,25.

[2] 曹文平,寧彬.任務驅動+過程反饋的Java教學方法研究[J].教育教學論壇,2021(4):165-168.

[3] 虞曉霞,彭浩.項目制班內分層互動教學模式在Java程序設計課程教學中的應用[J].計算機教育,2021(5):96-100.

[4] 張虎,葉傳奇,谷志峰.基于案例驅動的教學在《Java程序設計》課程中的實施與探索[J].電腦知識與技術,2021,17(14):146-148.

[5] 張海藩,牟永敏.軟件工程導論[M].6版.北京:清華大學出版社,2013.

【通聯編輯:朱寶貴】

收稿日期:2021-05-25

項目基金:凱里學院線下一流課程——“Java程序設計”(課題編號:xx202009)

作者簡介:唐型基(1984—),男,貴州凱里人,副教授,主要從事數據結構與算法分析研究。

猜你喜歡
Java程序設計項目驅動面向對象
面向對象的計算機網絡設計軟件系統的開發
面向對象的數據交換協議研究與應用
《Java程序設計》課程網站的設計與實現
Java程序設計基礎課實踐教學中的分層教學模式研究
基于實訓項目的Java程序設計實驗教學模式改革與實踐
基于工程思維的Java程序設計課程教學研究
依托工作室的軟件工程實踐教學研究
基于物聯網項目驅動的嵌入式系統教學改革的研究與實踐
基于“紅色之旅”項目驅動的《調酒與咖啡》工作室制人才培養機制探討
試論基于項目驅動的機械制圖教學改革
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合