亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        唐型基 柴群 楊光臨

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

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

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

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

        1 引言

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

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

        2 項(xiàng)目驅(qū)動(dòng)教學(xué)法

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

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

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

        面向?qū)ο蟪绦蛟O(shè)計(jì)過(guò)程一般分為三個(gè)階段:面向?qū)ο蠓治?,面向?qū)ο笤O(shè)計(jì),面向?qū)ο髮?shí)現(xiàn)[5]。

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

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

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

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

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

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

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

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

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

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

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

        7)最終的BOSS對(duì)象。靜態(tài)成員:位置坐標(biāo)(x,y),圖像大?。╳idth,height),圖片。動(dòng)態(tài)成員:移動(dòng)、繪制圖片。

        8)游戲背景對(duì)象。靜態(tài)成員:位置坐標(biāo)(x,y),圖像大?。╳idth,height),圖片。動(dòng)態(tài)成員:繪制圖片。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        3.3 面向?qū)ο髮?shí)現(xiàn)

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

        1)MovableObject的定義:

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

        其他類的定義在此省略。

        最后定義程序的窗口類,在窗口類將游戲主框架類的對(duì)象加入到窗口內(nèi)容窗格的中間,于是游戲畫(huà)面便可在窗口中顯示出來(lá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);

        //將將游戲主框架類的對(duì)象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)動(dòng)作是退出程序

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

        }

        }

        4 總結(jié)

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

        參考文獻(xiàn):

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

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

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

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

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

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

        收稿日期:2021-05-25

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

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

        猜你喜歡
        教學(xué)方法
        初中英語(yǔ)寫(xiě)作教學(xué)方法初探
        甘肅教育(2020年2期)2020-09-11 08:01:42
        教學(xué)方法與知識(shí)類型的適宜
        數(shù)學(xué)復(fù)習(xí)教學(xué)方法
        高中體育教學(xué)方法初探
        淺談高等數(shù)學(xué)中教學(xué)方法的創(chuàng)新
        實(shí)用型中醫(yī)人才培養(yǎng)中慕課教學(xué)方法的探討
        文言文教學(xué)方法實(shí)踐初探
        高中文言文教學(xué)方法之我見(jiàn)
        初中數(shù)學(xué)教師不可忽視的幾種教學(xué)方法
        散文百家(2014年11期)2014-08-21 07:17:18
        語(yǔ)文閱讀教學(xué)方法略談
        台湾佬娱乐中文22vvvv| 上海熟女av黑人在线播放| 美女内射毛片在线看免费人动物| 国产真实夫妇视频| 亚洲午夜无码久久yy6080| 日本黄色一区二区三区视频| 偷拍一区二区三区高清视频| 亚洲三区av在线播放| 人妻少妇满足中文字幕| 久久青青草原亚洲av无码麻豆| 18无码粉嫩小泬无套在线观看| 欧美一级三级在线观看| 国产免费一区二区av| 偷拍视频网址一区二区| 一进一出一爽又粗又大| 久久精品国产亚洲av瑜伽| 日韩在线手机专区av| 日本黑人亚洲一区二区| 97人人超碰国产精品最新| 久久88综合| 国产精品久久熟女吞精| 999zyz玖玖资源站永久| 欧美操逼视频| 国产欧美日韩图片一区二区| 蜜桃视频在线在线观看| 含紧一点h边做边走动免费视频| 亚洲乱妇老熟女爽到高潮的片| 精品人妻av区乱码| 午夜一区二区三区在线观看| 久久精品免费中文字幕| 人妻av乱片av出轨| 人妻无码在线免费| 亚洲中文字幕一二区精品自拍 | 国产青春草在线观看视频| 在线观看av网站永久| 日本高清www无色夜在线视频| 国产在线看不卡一区二区| 国产一级黄色录像大片| 色综合视频一区中文字幕| 在线无码国产精品亚洲а∨| 日本国产一区二区在线|