999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

雷電游戲的設(shè)計與實現(xiàn)

2021-12-18 13:42:01唐型基柴群楊光臨
電腦知識與技術(shù) 2021年31期
關(guān)鍵詞:教學(xué)方法

唐型基 柴群 楊光臨

摘要:許多高校的Java程序設(shè)計課程教學(xué)正在改革,強調(diào)提升編程應(yīng)用能力。但在教學(xué)中普遍的學(xué)生完成作業(yè)還行,開發(fā)項目卻不會,一個主要的原因是面向?qū)ο蟮木幊趟枷霙]有建立起來,該文以項目驅(qū)動教學(xué)法案例——雷電游戲的設(shè)計實現(xiàn)為例討論引導(dǎo)學(xué)生學(xué)習(xí)面向?qū)ο蟮某绦蛟O(shè)計方法。

關(guān)鍵詞:Java程序設(shè)計;項目驅(qū)動;面向?qū)ο?教學(xué)方法

中圖分類號:TP311 ? ? ? 文獻(xiàn)標(biāo)識碼:A

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

1 引言

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

Java 語言作為一門純面向?qū)ο缶幊陶Z言,面向?qū)ο缶幊趟枷牒退惴ㄊ撬撵`魂[1]。Java程序設(shè)計語言基礎(chǔ)語法部分的學(xué)習(xí)并不難,學(xué)過C語言的學(xué)生基本上都能掌握。但Java本身它是一門面向?qū)ο蟮某绦蛟O(shè)計語言,很多的學(xué)生不會使用面向?qū)ο蟮乃枷肴シ治鰡栴},對于Java的使用也僅停留在使用“升級版C語言”的層次,仍是采用面向過程的編程方式使用Java語言[2]。這也是許多學(xué)生完成課本作業(yè)還行,但獨立去完成一小個項目卻無從下手的根本原因。

2 項目驅(qū)動教學(xué)法

Java程序設(shè)計課程中的內(nèi)容相較多,基礎(chǔ)部分包括:數(shù)據(jù)類型、分支控制結(jié)構(gòu)、循環(huán)控制結(jié)構(gòu)、數(shù)組、異常處理、類和對象、接口等,結(jié)合應(yīng)用部分還有:圖形界面、數(shù)據(jù)庫連接和操縱、多線程、網(wǎng)絡(luò)、面向?qū)ο蟾呒壧匦缘取0磦鹘y(tǒng)的教師講,學(xué)生被動“填鴨”灌輸?shù)姆绞浇虒W(xué),學(xué)生難以接受眾多的知識,更別說應(yīng)用。只有將知識融合到項目中,以項目來驅(qū)動學(xué)生去學(xué)習(xí)掌握這些知識,才能讓學(xué)生更好地學(xué)會這些繁雜瑣碎的知識,并認(rèn)識到這些知識是怎么運用的。在課堂教學(xué)中結(jié)合項目開發(fā),激發(fā)學(xué)生學(xué)習(xí)興趣,增強他們的代碼調(diào)試能力,提高項目開發(fā)水平[3]。教學(xué)整體設(shè)計“以職業(yè)技能培養(yǎng)為目標(biāo),以項目任務(wù)實現(xiàn)為載體、理論學(xué)習(xí)與實際操作相結(jié)合”[4]。因此項目驅(qū)動教學(xué)法是學(xué)習(xí)Java程序設(shè)計課程的有效的教學(xué)方法。

3 雷電游戲項目的面向?qū)ο笤O(shè)計

為激發(fā)學(xué)生對項目驅(qū)動學(xué)習(xí)的積極性和興趣,選取的是游戲方面的項目,學(xué)習(xí)與娛樂相結(jié)合,將學(xué)生玩游戲的熱情與興趣引導(dǎo)向開發(fā)游戲和編程方面來,激起學(xué)生學(xué)習(xí)的熱情,在開發(fā)游戲的過程學(xué)習(xí)面向?qū)ο蠓椒ǖ某绦蛟O(shè)計,在項目開發(fā)過程中體會Java程序設(shè)計的相關(guān)知識。本文以“雷電游戲”這一項目案例的設(shè)計與實現(xiàn)來討論項目驅(qū)動教學(xué)法中引導(dǎo)學(xué)生進(jìn)行面向?qū)ο蟮脑O(shè)計與開發(fā)。

面向?qū)ο蟪绦蛟O(shè)計過程一般分為三個階段:面向?qū)ο蠓治觯嫦驅(qū)ο笤O(shè)計,面向?qū)ο髮崿F(xiàn)[5]。

3.1 面向?qū)ο蠓治?/p>

將游戲程序分享給學(xué)生,讓學(xué)生一起運行體驗和觀察游戲。引導(dǎo)學(xué)生開始面向?qū)ο蟪绦蛟O(shè)計的第一階段:面向?qū)ο蟮姆治觥4穗A段分為兩個小的步驟,第一步是找出游戲中有哪些元素組成?這些元素也就是項目中的對象。

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

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

經(jīng)分析得到各對象的屬性有:

1)主角飛機 。靜態(tài)成員:位置坐標(biāo)(x,y),圖像大小(width,height),圖片。動態(tài)成員:取得坐標(biāo)(x,y)、繪制圖片、發(fā)射子彈、移動。

2)敵人飛機。靜態(tài)成員:位置坐標(biāo)(x,y),圖像大小(width,height),圖片。動態(tài)成員:取得坐標(biāo)(x,y)、移動、繪制圖片、發(fā)射子彈。

3)主角子彈。靜態(tài)成員:位置坐標(biāo)(x,y),圖像大小(width,height),圖片。動態(tài)成員:取得坐標(biāo)(x,y)、移動、繪制圖片。

4)敵人子彈。靜態(tài)成員:位置坐標(biāo)(x,y),圖像大小(width,height),圖片。動態(tài)成員:取得坐標(biāo)(x,y)、移動、繪制圖片。

5)增加生命值物品對象。靜態(tài)成員:位置坐標(biāo)(x,y),圖像大小(width,height),圖片。動態(tài)成員:取得坐標(biāo)(x,y)、移動、繪制圖片。

6)生命值(條)數(shù)。靜態(tài)成員:位置坐標(biāo)(x,y),圖像大小(width,height),圖片。動態(tài)成員:繪制圖片。

7)最終的BOSS對象。靜態(tài)成員:位置坐標(biāo)(x,y),圖像大小(width,height),圖片。動態(tài)成員:移動、繪制圖片。

8)游戲背景對象。靜態(tài)成員:位置坐標(biāo)(x,y),圖像大小(width,height),圖片。動態(tài)成員:繪制圖片。

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

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

3.2 面向?qū)ο笤O(shè)計

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3.3 面向?qū)ο髮崿F(xiàn)

面向?qū)ο髮崿F(xiàn)階段的任務(wù)是將上一階段的類圖中各類的靜態(tài)成員和成員方法的算法用Java語言描述出來,加上類相應(yīng)的構(gòu)造方法,將上述每個類編寫為相應(yīng)的Java源程序文件。

1)MovableObject的定義:

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

其他類的定義在此省略。

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

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

private GamePanel gpanel = new GamePanel();

public GameFrame() {//構(gòu)造方法

gpanel.setFocusable(true);

gpanel.requestFocus();

this.add(gpanel, BorderLayout.CENTER);

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

}

public static void main(String[] args) {

GameFrame frame = new GameFrame();

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

frame.setIconImage(Resources.IconPNG);//設(shè)置窗口圖標(biāo)

frame.setTitle("雷電");//設(shè)置窗口標(biāo)題

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//設(shè)置窗口關(guān)閉按鈕的默認(rèn)動作是退出程序

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

}

}

4 總結(jié)

項目驅(qū)動的教學(xué)方法是較為有效的學(xué)習(xí)Java程序設(shè)計的教學(xué)方法,以項目驅(qū)動學(xué)習(xí),結(jié)合學(xué)生感興趣的游戲項目激發(fā)學(xué)生主動學(xué)習(xí)的熱情。本文以雷電游戲項目的設(shè)計實現(xiàn)為例討論了在項目驅(qū)動教學(xué)法中引導(dǎo)學(xué)生學(xué)習(xí)面向?qū)ο蟮某绦蛟O(shè)計方法。展示了面向?qū)ο蟪绦蛟O(shè)計過程中面向?qū)ο蠓治觥⒚嫦驅(qū)ο笤O(shè)計、面向?qū)ο髮崿F(xiàn)三個階段的主要思想。項目驅(qū)動教學(xué)方法中第一個項目要教師帶領(lǐng)著學(xué)生練習(xí),然后再布置難度合理的項目讓學(xué)生自己動手去完成,在項目設(shè)計實現(xiàn)的過程中使學(xué)生學(xué)會面向?qū)ο蟮某绦蛟O(shè)計方法。

參考文獻(xiàn):

[1] 田春婷.單機版記憶游戲的設(shè)計與實現(xiàn)——Java語言任務(wù)驅(qū)動教學(xué)法應(yīng)用案例[J].科技與創(chuàng)新,2021(5):21-22,25.

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

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

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

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

【通聯(lián)編輯:朱寶貴】

收稿日期:2021-05-25

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

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

猜你喜歡
教學(xué)方法
初中英語寫作教學(xué)方法初探
甘肅教育(2020年2期)2020-09-11 08:01:42
教學(xué)方法與知識類型的適宜
數(shù)學(xué)復(fù)習(xí)教學(xué)方法
高中體育教學(xué)方法初探
淺談高等數(shù)學(xué)中教學(xué)方法的創(chuàng)新
實用型中醫(yī)人才培養(yǎng)中慕課教學(xué)方法的探討
文言文教學(xué)方法實踐初探
高中文言文教學(xué)方法之我見
初中數(shù)學(xué)教師不可忽視的幾種教學(xué)方法
散文百家(2014年11期)2014-08-21 07:17:18
語文閱讀教學(xué)方法略談
主站蜘蛛池模板: 四虎精品黑人视频| 亚洲看片网| 国产精品不卡永久免费| 先锋资源久久| 麻豆精品在线视频| 国产成人欧美| 亚洲视频影院| 国产三级毛片| julia中文字幕久久亚洲| 天堂中文在线资源| 青草视频在线观看国产| 国产嫖妓91东北老熟女久久一| 国产欧美日韩视频怡春院| 亚欧成人无码AV在线播放| 国产精品美乳| 国产另类乱子伦精品免费女| 99re在线视频观看| 福利视频久久| 欧美日韩免费观看| 无码免费视频| 国产成人乱无码视频| 福利姬国产精品一区在线| 午夜国产精品视频| 国产9191精品免费观看| 国产成人乱码一区二区三区在线| 久久精品无码国产一区二区三区 | 一区二区午夜| 国产激情在线视频| 国产午夜无码专区喷水| 国产99视频免费精品是看6| 麻豆精选在线| 激情六月丁香婷婷| 99热这里都是国产精品| 九九久久99精品| 国产chinese男男gay视频网| 97视频精品全国在线观看| 91精品国产无线乱码在线| 欧美成人在线免费| 天天色综网| 久久综合色播五月男人的天堂| 精品国产一区二区三区在线观看| 日韩在线2020专区| 激情视频综合网| 情侣午夜国产在线一区无码| 丁香婷婷激情网| 亚洲三级色| 91尤物国产尤物福利在线| 久久精品人人做人人综合试看| 国产一线在线| 久久青草视频| 54pao国产成人免费视频| 国产凹凸一区在线观看视频| 欧美翘臀一区二区三区| 午夜欧美在线| 国产爽妇精品| 在线中文字幕日韩| h网站在线播放| 国产亚洲美日韩AV中文字幕无码成人 | 色老二精品视频在线观看| 男女性色大片免费网站| 亚洲天堂在线免费| 欧美日韩精品一区二区在线线| 久久国产精品影院| 国产成人夜色91| 成人精品午夜福利在线播放| 国产成人AV综合久久| 青青国产视频| 久久五月天国产自| 欧美日韩一区二区在线播放| 婷婷色一区二区三区| 91久久精品日日躁夜夜躁欧美| 黄色网页在线观看| 777午夜精品电影免费看| 国产噜噜在线视频观看| 亚洲不卡av中文在线| 国产精品理论片| 日本人妻丰满熟妇区| 亚洲综合色婷婷| 美女啪啪无遮挡| 久久性视频| 香蕉伊思人视频| 国产真实乱人视频|