




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
項目8飛機(jī)大戰(zhàn)游戲?qū)W習(xí)目標(biāo)知識技能目標(biāo):掌握接口的定義;掌握類實現(xiàn)接口的方法;掌握繼承和多態(tài)的方法;能用兩種方式創(chuàng)建線程的方法;職業(yè)素養(yǎng)目標(biāo):具備較強(qiáng)的職業(yè)道德和責(zé)任心,提高代碼審查和質(zhì)量控制的能力具備軟件產(chǎn)品零BUG的質(zhì)量意識,提升代碼質(zhì)量和程序性能課證融通學(xué)習(xí)內(nèi)容與“大數(shù)據(jù)應(yīng)用開發(fā)(Java)”職業(yè)技能等級標(biāo)準(zhǔn)(初級)對應(yīng)關(guān)系工作任務(wù)職業(yè)技能要求1.3面向?qū)ο蟠a編寫(初級)1.3.2能熟練運用繼承和多態(tài)機(jī)制編寫復(fù)用度高的Java代碼;1.3.3能熟練運用接口機(jī)制設(shè)計靈活的Java程序;1.2Java高級機(jī)制編程(中級)1.2.3能運用Java異常處理機(jī)制編寫更健壯的Java程序;1.2.5能運用Java8的新特性完成函數(shù)式編程,提升編程效率。2.2多線程并發(fā)優(yōu)勢應(yīng)用2.2.1能熟練使用Java的多線程API創(chuàng)建線程類;任務(wù)8.1搭建系統(tǒng)框架1飛機(jī)大戰(zhàn)游戲中類設(shè)計如圖所示,根據(jù)類圖設(shè)計,完成項目框架的搭建,包括包的定義、接口的定義。任務(wù)詳解任務(wù)描述任務(wù)8.1搭建系統(tǒng)框架1技術(shù)準(zhǔn)備技能點1:面向接口編程思想面向接口編程思想是指在設(shè)計軟件應(yīng)用時,應(yīng)該先定義接口,然后再實現(xiàn)接口。接口定義了一組操作的規(guī)范,而實現(xiàn)類則負(fù)責(zé)具體實現(xiàn)這些操作。當(dāng)需要更改某個功能的實現(xiàn)時,只需要修改對應(yīng)的實現(xiàn)類,而不需要修改其他使用這個功能的代碼。最終實現(xiàn)內(nèi)部變動而不影響外部與其他實現(xiàn)交互。其優(yōu)點是提高代碼的可讀性、可復(fù)用性、可維護(hù)性和可擴(kuò)展性,以及降低代碼之間的耦合度。面向接口編程也是面向?qū)ο缶幊腆w系中的思想精髓之一。任務(wù)8.1搭建系統(tǒng)框架1微課1-1Java前世今生技能點1:面向接口編程思想(1)語法:interface接口名{//常量和抽象方法}技術(shù)準(zhǔn)備1.JDK8以前接口(2)使用說明:①接口中的抽象方法,可以不加abstract。②接口中的常量,可以不加final和static,系統(tǒng)默認(rèn)會加上。(3)接口特性①接口不可以被實例化,接口通常作為類型來使用。②實現(xiàn)類必須實現(xiàn)接口的所有方法,否則接口的實現(xiàn)類定義為抽象類。③實現(xiàn)類可以實現(xiàn)多個接口,實現(xiàn)Java中的多重繼承。④接口中的變量都是靜態(tài)常量。⑤接口可以多重繼承,也就是說一個接口可以有多個父接口。任務(wù)8.1搭建系統(tǒng)框架1技能點1:面向接口編程思想技術(shù)準(zhǔn)備接口新特性——JDK8.0之后,接口中除了有抽象方法以外,允許有默認(rèn)方法和靜態(tài)方法示例代碼:UsbInterface接口中有1個默認(rèn)方法和一個抽象方法。publicinterfaceUsbInterface{
//模擬連接USB設(shè)備
defaultvoidpreService(){
System.out.println("USB設(shè)備已連接");}
//模擬USB設(shè)備工作
voidservice();
//模擬拔出USB設(shè)備
defaultvoidafterService(){
System.out.println("USB設(shè)備已拔出");}}(1)默認(rèn)方法接口中的默認(rèn)方法用default關(guān)鍵字修飾,并提供方法的默認(rèn)實現(xiàn)。這一特性可以在不修改現(xiàn)有實現(xiàn)的基礎(chǔ)上添加新的方法,增強(qiáng)的接口的可擴(kuò)展性。任務(wù)8.1搭建系統(tǒng)框架1技能點1:面向接口編程思想技術(shù)準(zhǔn)備接口新特性——JDK8.0之后,接口中除了有抽象方法以外,允許有默認(rèn)方法和靜態(tài)方法示例代碼:在JDK8.0中,F(xiàn)unction接口中包含static方法identity()。publicinterfaceFunction<T,R>{static<T>Function<T,T>identity(){returnt->t;}}(2)JDK8中,允許接口中包含靜態(tài)方法,提供與接口相關(guān)的實用功能。JDK9.0之后,接口中允許有私有方法,私有方法只能在接口內(nèi)被調(diào)用。私有方法用于輔助默認(rèn)方法和靜態(tài)方法的實現(xiàn),隱藏實現(xiàn)細(xì)節(jié),提高代碼的可讀性和可維護(hù)性。JDK9.0中接口新特性任務(wù)8.1搭建系統(tǒng)框架1技能點2:抽象類的定義(1)定義抽象方法的語法[訪問控制符]abstract[返回值類型]方法名([形參列表]);(2)抽象方法的特點:①抽象方法沒有方法體,沒有{},方法頭后以分號結(jié)束②抽象方法必須在抽象類或者接口中,普通類中不能有抽象方法③抽象方法必須在子類中實現(xiàn),除非子類也是抽象類技術(shù)準(zhǔn)備1.抽象方法:是一種特殊的方法,它在抽象類或接口中聲明。抽象方法主要用于定義子類必須實現(xiàn)的特定行為,但不提供這些行為的具體實現(xiàn)。任務(wù)8.1搭建系統(tǒng)框架1技能點2:抽象類的定義(1)定義抽象類的語法[訪問控制符]abstractclass類名{public類名(){
//構(gòu)造方法}//抽象方法publicabstractvoidabstractMethodName();//非抽象方法的定義
}技術(shù)準(zhǔn)備2.抽象類的定義:抽象類是一種特殊的類,不能被實例化,通常用于定義一組具有共同特性的對象或作為一組子類的通用父類。抽象類可以包含抽象方法和非抽象方法,但如果一個類中包含抽象方法,那么這個類就必須被聲明為抽象類。(2)抽象類的特點①抽象類不能實例化②抽象類中可以有抽象方法,但不是必需的③抽象類應(yīng)該被繼承,不能定義成final的④抽象類的構(gòu)造方法不能是private任務(wù)8.1搭建系統(tǒng)框架1練一練閱讀下列代碼,分析類的定義有沒有錯誤?publicabstractclassPet{publicvoidprint(){//…}}
正確
原因:
;
錯誤
原因:
;
publicclassPet{publicabstractvoidprint();}
正確
原因:
;
錯誤
原因:
;
任務(wù)實施任務(wù)8.1搭建系統(tǒng)框架1第一步:任務(wù)分析(1)根據(jù)圖8.1中的類圖,寫出項目所涉及的包名及類名:(2)寫出接口名和接口中的抽象方法接口名:抽象方法:(3)抽象類GameObject中包含的屬性和方法第二步:編寫代碼(1)新建一個Java項目(2)新建包(3)新建接口IGameObject(4)新建抽象類GameObject第三步:驗證結(jié)果AEBCD小組協(xié)作,完成任務(wù)評價測試任務(wù)8.1搭建系統(tǒng)框架1評價指標(biāo)評價標(biāo)準(zhǔn)分值得分創(chuàng)建項目正確創(chuàng)建Java項目10
包的創(chuàng)建正確定義包,包名命名準(zhǔn)確10
接口定義正確定義接口IGameObject30
抽象類的定義正確定義抽象類GameObject30
編碼規(guī)范包名、接口名、抽象類命名規(guī)范、有合理的注釋20
任務(wù)8.1搭建系統(tǒng)框架1拓展提升——函數(shù)式接口Lambda表達(dá)式的本質(zhì)是實現(xiàn)了一個函數(shù)式接口。函數(shù)接口也是JDK8的新特性之一,用于支持Lambda表達(dá)式。函數(shù)式接口是只有一個抽象方法的接口,可以用@FunctionalInterface注解來顯式標(biāo)記,當(dāng)接口中多于一個抽象方法時,編譯會報錯。ActionListener接口和Lambda表達(dá)式是兼容的,因此添加事件監(jiān)聽時可以用Lambda表達(dá)式來實現(xiàn)。任務(wù)8.1搭建系統(tǒng)框架1案例:定義一個函數(shù)式接口,包含一個抽象方法say教師演示第一步:創(chuàng)建函數(shù)式接口//定義函數(shù)式接口@FunctionalInterfacepublicinterfaceMyInterface{//包含一個抽象方法publicvoidsay(Stringcontent);}第二步:調(diào)用接口中的方法
//創(chuàng)建Lambda表達(dá)式MyInterfacemi=content->System.out.println("say:"+content);//調(diào)用函數(shù)式接口的方法mi.say("Hello!FunctionInterface.");第三步:運行程序任務(wù)描述任務(wù)8.2定義接口的實現(xiàn)類2根據(jù)項目類圖可知,GameObject類實現(xiàn)Image接口,子彈類Bullet,敵機(jī)類Enemy,玩家飛機(jī)類Plane都是GameObject的子類。本任務(wù):根據(jù)類圖,實現(xiàn)GameObject類實現(xiàn)IGameObject接口,并創(chuàng)建GameObject的三個子類。具體任務(wù)任務(wù)8.2定義接口的實現(xiàn)類2技能點1:創(chuàng)建接口的實現(xiàn)類語法:class子類名implements接口列表{//給出接口中所有抽象方法的}使用說明:(1)如果類實現(xiàn)了接口,那么它必須提供該接口中聲明的所有方法的具體實現(xiàn),除非這個類本身是抽象的。(2)Java中,一個類可以實現(xiàn)一個或者多個接口,中間用逗號分隔。技術(shù)準(zhǔn)備類實現(xiàn)接口使用implements關(guān)鍵字,并且該類需要提供接口中所有方法的具體實現(xiàn)。技能點2:繼承的實現(xiàn)任務(wù)8.2定義接口的實現(xiàn)類2創(chuàng)建子類語法: class
子類名
extends
父類{ }使用說明:(1)父類必須是已經(jīng)存在的類,可以是JDK中定義的類,也可以是用戶自己定義或者第三方的類。(2)Java中不支持類的多重繼承,一個類只能有一個直接父類。(3)子類擁有父類所有非私有的屬性和方法。(4)final修飾的類不能作為父類(不能被繼承)。(5)子類也叫派生類,父類又稱為基類或者超類。面向?qū)ο蟮娜筇卣魇欠庋b性、繼承性和多態(tài)性。繼承性是指在現(xiàn)有類的基礎(chǔ)上創(chuàng)建子類,新增程序的功能。繼承性是面向?qū)ο蟪绦蛟O(shè)計非常重要的特性,其好處是可以減少代碼的冗余,便于系統(tǒng)升級和維護(hù)。技術(shù)準(zhǔn)備任務(wù)8.2定義接口的實現(xiàn)類2案例:編寫圓類,可以計算圓的面積和周長;編寫一個圓柱體類,可以計算圓柱體的體積、底面面積和底面周長。教師演示第一步:任務(wù)分析(1)識別所用到的類:圓類(Circle)、圓柱體類(Cylinder)和測試類Test;(2)識別圓類(Circle)包含的屬性和方法:(3)識別圓柱體類(Cylinder)包含的屬性和成員方法第二步:編碼實現(xiàn)(1)新建Java項目(2)新建Circle類(3)編寫圓柱體類(4)編寫測試類第三步:測試運行程序技能點3:多態(tài)的實現(xiàn)任務(wù)8.2定義接口的實現(xiàn)類2在面向?qū)ο蟪绦蛟O(shè)計理論中,多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計的重要特征之一。多態(tài)性是指:相同的消息發(fā)送給不同類的對象,可能產(chǎn)生多種不同的行為。多態(tài)性分為編譯時的多態(tài)性(靜態(tài)多態(tài)性)和運行時的多態(tài)性(動態(tài)多態(tài)性)。靜態(tài)多態(tài)性:通過方法的重載來實現(xiàn),程序在編譯時就清楚調(diào)用哪一個方法;動態(tài)多態(tài)性:通過方法的覆蓋來實現(xiàn),程序在執(zhí)行過程中才清楚調(diào)用哪一個方法。技術(shù)準(zhǔn)備任務(wù)8.2定義接口的實現(xiàn)類2方法重載:指在同一個類中出現(xiàn)多個同名的方法,要求方法特征(參數(shù)類型、參數(shù)個數(shù)、參數(shù)順序)不完全相同。方法重載在JDK提供的類中應(yīng)用特別廣泛,java.io.PrintStream類中包含多個print方法,其參數(shù)類型不同。
技術(shù)準(zhǔn)備——用重載實現(xiàn)靜態(tài)多態(tài)性任務(wù)8.2定義接口的實現(xiàn)類2案例:定義一個類,滿足以下要求:教師演示(1)包含編寫一個方法average,該方法以兩個整數(shù)為參數(shù),并以浮點數(shù)形式返回兩個整數(shù)的平均值;(2)重載average方法,使得輸入?yún)?shù)為3個整數(shù),然后返回這三個數(shù)的平均值;(3)重載average方法,使其返回四個參數(shù)的平均值。任務(wù)8.2定義接口的實現(xiàn)類2技術(shù)準(zhǔn)備——用覆蓋實現(xiàn)動態(tài)多態(tài)性方法覆蓋時應(yīng)遵循的原則有:(1)覆蓋后的方法(子類中的方法)不能比被覆蓋的方法(父類中的方法)有更嚴(yán)格的訪問權(quán)限;(2)覆蓋后的方法不能比被覆蓋的方法產(chǎn)生更多的異常。方法覆蓋又稱為方法重寫是指在子類中出現(xiàn)與父類的方法名、返回類型、函數(shù)特征完全相同的方法。方法覆蓋的作用是:當(dāng)父類中的方法不能滿足需要,覆蓋使得在子類中可以重新定義父類中已有的方法,從而體現(xiàn)出子類自己的行為。任務(wù)8.2定義接口的實現(xiàn)類2技術(shù)準(zhǔn)備——用super調(diào)用父類構(gòu)造方法創(chuàng)建子類對象會先調(diào)用父類的構(gòu)造方法(默認(rèn)調(diào)用父類無參構(gòu)造方法),再調(diào)用子類的構(gòu)造方法。也可以通過在子類構(gòu)造方法中通過super()調(diào)用父類構(gòu)造方法。語法:調(diào)用父類無參構(gòu)造方法:
super();調(diào)用父類有參構(gòu)造方法:
super([參數(shù)列表]);
使用說明:調(diào)用父類構(gòu)造方法的語句只能是子類構(gòu)造方法的第一條語句。子類中沒有通過super調(diào)用父類構(gòu)造方法,默認(rèn)調(diào)用父類無參構(gòu)造方法。任務(wù)8.2定義接口的實現(xiàn)類2練一練:閱讀下列代碼,分析程序存在的問題,并給出解決方案classSuperClass{
publicSuperClass(Stringstr){//有參構(gòu)造方法
System.out.println("TheSuperCalssConstructorisinvoked!");}}classSubClassextendsSuperClass{
publicSubClass(){//無參構(gòu)造方法
System.out.println("TheSubClassConstructorisinvoked!");}}classMainClass{
publicstaticvoidmain(String[]args){
SubClassobj=newSubClass();}}任務(wù)8.2定義接口的實現(xiàn)類2技術(shù)準(zhǔn)備——動態(tài)多態(tài)性的實現(xiàn)實現(xiàn)動態(tài)多態(tài)性的步驟:第一步:編寫父類第二步:編寫子類,子類重寫(覆蓋)父類方法第三步:運行時,使用父類的類型,子類的對象任務(wù)8.2定義接口的實現(xiàn)類2案例:編寫一個顧客類,包括ID,姓名,電話,地址,購買力,輸入客戶信息和輸出客戶信息的方法。編寫一個員工類,包括ID,姓名,電話,地址,工資,輸入員工信息和輸出客戶信息的方法。要求:增加代碼的重用。教師演示任務(wù)實施任務(wù)8.2定義接口的實現(xiàn)類2第一步:創(chuàng)建接口的實現(xiàn)類創(chuàng)建IGameObject的實現(xiàn)類GameObject,該類為抽象類。第二步:創(chuàng)建GameObject類的子類(1)創(chuàng)建子彈類。(2)創(chuàng)建敵機(jī)類。(3)創(chuàng)建玩家飛機(jī)類。第三步:驗證程序根據(jù)類圖,驗證包和接口的定義是否完整、準(zhǔn)確。AEBCD小組協(xié)作,完成任務(wù)評價測試任務(wù)8.2定義接口的實現(xiàn)類2評價指標(biāo)評價標(biāo)準(zhǔn)分值得分創(chuàng)建項目正確創(chuàng)建Java項目10
類實現(xiàn)接口正確定義GameObject,實現(xiàn)IGameObject接口10
敵機(jī)類正確定義Enemy類,繼承GameObject類20
子彈類正確定義Bullet類,繼承GameObject類20
玩家飛機(jī)類正確定義Plane類,繼承GameObject類20
編碼規(guī)范代碼編寫規(guī)范、有合理的注釋20
拓展提升——用可變參數(shù)減少方法的重載任務(wù)8.2定義接口的實現(xiàn)類2要實現(xiàn)計算兩個整數(shù)、三個整數(shù)、四個整數(shù)和五個整數(shù)的平均數(shù),我們可以用到方法的重載,定義四個average()方法。在JDK5.0之后,可以使用方法的可變參數(shù),將上述四個average方法用一個方法來替換??勺儏?shù)的形式:數(shù)據(jù)類型...可變參數(shù)名使用說明:(1)可變參數(shù)的本質(zhì)是數(shù)組,多個參數(shù)是當(dāng)做數(shù)組傳遞的。(2)一個方法最多只能有一個可變參數(shù),而且必須是最后一個參數(shù)。拓展提升——用可變參數(shù)減少方法的重載任務(wù)8.2定義接口的實現(xiàn)類2示例代碼:用可變參數(shù)實現(xiàn)計算兩個整數(shù)、三個整數(shù)、四個整數(shù)和五個整數(shù)的平均數(shù)publicintaverage(int...nums){
intsum=0;
for(intn:nums){
sum+=n;}
returnsum/nums.length;}任務(wù)描述任務(wù)8.3創(chuàng)建游戲界面3本任務(wù)創(chuàng)建游戲界面,具體要求:(1)窗口大小500×500,點擊窗體關(guān)閉按鈕結(jié)束游戲(2)加載游戲背圖片(3)在游戲窗口底部顯示玩家飛機(jī)具體任務(wù)任務(wù)8.3創(chuàng)建游戲界面3技能點1:將圖片文件轉(zhuǎn)換成Image對象技術(shù)準(zhǔn)備1.讀取圖像staticBufferedImageImageIO.read(Fileinput):從文件中讀取圖像staticBufferedImageImageIO.read(URLinput):從URL中讀取圖像2.寫入圖像ImageIO.write(RenderedImageim,StringformatName,Fileoutput)方法將圖像寫入文件。參數(shù)說明:(I)im可以是BufferedImage或其他實現(xiàn)了該接口的對象(2)formatName是要寫入的圖像格式(如"jpg”或"png")(3)output是輸出文件的File對象javax.imageio.ImageIO是Java標(biāo)準(zhǔn)庫中的一個類,它提供了一個簡單的接口來讀取、寫入和創(chuàng)建圖像。任務(wù)8.3創(chuàng)建游戲界面3案例:編寫GameUtil類,實現(xiàn)將文件轉(zhuǎn)換成Image教師演示第一步:任務(wù)分析實現(xiàn)讀圖像,用到j(luò)avax.imageio.ImageIO類的read()方法。第二步:編碼實現(xiàn)publicclassGameUtil{publicstaticImagegetImage(Stringpath){//讀圖像BufferedImageimage=null;URLurl=GameUtil.class.getClassLoader().getResource(path);try{image=ImageIO.read(url);}catch(IOExceptione){thrownewRuntimeException(e);}returnimage;}}任務(wù)8.3創(chuàng)建游戲界面3案例:在窗體中加載背景圖片教師演示第一步:任務(wù)分析圖片資源存放在Maven項目resources下,調(diào)用案例1中的類,實現(xiàn)讀圖像。第二步:編碼實現(xiàn)
關(guān)鍵技術(shù):在JFrame中顯示圖片,可以重寫paint(Graphicsg)方法,調(diào)用Graphics類中的drawImage()方法實現(xiàn)(1)新建一個Maven項目,在resources下新建images文件夾,將背景圖片存放到該文件夾中。(2)新建GameWindow,繼承自JFrame(3)在Main類中,創(chuàng)建GameWindow對象第三步:運行程序任務(wù)實施任務(wù)8.3創(chuàng)建游戲界面3第一步:任務(wù)分析在任務(wù)8.2的基礎(chǔ)上,編寫GameUtil類用于實現(xiàn)讀取圖像文件,編寫GameWindow類,用于顯示飛機(jī)大戰(zhàn)游戲界面。GameWindow類實現(xiàn)顯示主界面,初始化玩家飛機(jī),在主界面顯示背景圖片和玩家飛機(jī)。第二步:編碼實現(xiàn)(1)打開任務(wù)8.2的項目。(2)新建GameWindow類,繼承自JFrame,根據(jù)提示,完善代碼。(3)在main方法中創(chuàng)建GameWindow的對象第三步:運行程序AEBCD小組協(xié)作,完成任務(wù)評價測試任務(wù)8.3創(chuàng)建游戲界面3評價指標(biāo)評價標(biāo)準(zhǔn)分值得分創(chuàng)建項目正確創(chuàng)建Java項目10
顯示背景圖片正確在窗體中顯示背景圖片20
窗體顯示窗體居中、大小500*500、大小不可變20
顯示玩家飛機(jī)正確顯示玩家飛機(jī)30
編碼規(guī)范變量命名規(guī)范、有合理的注釋20
拓展提升——日志處理任務(wù)8.3創(chuàng)建游戲界面31.輸出日志信息java.util.logging.Logger類提供了輸出日志信息的方法2.日志級別java.util.logging.Level類定義了一組可用于控制日志輸出的標(biāo)準(zhǔn)日志記錄級別。按照級別從高到低分別是:Level.SEVERE:表示嚴(yán)重故障的消息級別;Level.WARNING:表示潛在問題的消息級別;Level.INFO:表示信息性消息的消息級別;Level.CONFIG:表示靜態(tài)配置消息的消息級別;Level.FINE:提供跟蹤信息的消息級別;Level.FINER:表示想當(dāng)詳細(xì)的跟蹤消息;Level.FINEST:表示高度詳細(xì)的跟蹤信息;3.關(guān)閉日志Logger.getGlobal().setLevel(Level.OFF);可實現(xiàn)不輸出日志信息。任務(wù)描述任務(wù)8.4用線程實現(xiàn)顯示游戲元素3在任務(wù)8.3中,完成了飛機(jī)大戰(zhàn)游戲主界面構(gòu)建,接下來用線程實現(xiàn)在游戲中同時加載玩家飛機(jī)、敵機(jī)和子彈。具體任務(wù):(1)創(chuàng)建一個子彈線程,用于管理玩家發(fā)射的子彈(2)創(chuàng)建一個敵機(jī)線程,用于管理敵機(jī)(3)創(chuàng)建一個線程,用于每個50毫秒刷新游戲界面(4)創(chuàng)建一個倒計時線程,用于記錄游戲時間具體任務(wù)任務(wù)8.4用線程實現(xiàn)顯示游戲元素3技能點1:線程及生命周期1.進(jìn)程和線程線程又稱為“輕量級”的進(jìn)程。一個進(jìn)程中可以有一個或者多個線程,如果進(jìn)程中只有一個線程,是單線程程序,如果進(jìn)程中有多個線程為多線程程序。2.線程的生命周期(1)新建狀態(tài)(2)可運行狀態(tài)(3)運行狀態(tài)(4)不可運行狀態(tài)(阻塞、睡眠等)(5)死亡狀態(tài)技術(shù)準(zhǔn)備任務(wù)8.4用線程實現(xiàn)顯示游戲元素3技能點2:用繼承Thread類方式創(chuàng)建線程(1)常用構(gòu)造方法Thread():創(chuàng)建一個新的線程對象。Thread(Runnabletarget):創(chuàng)建一個新的線程對象,用于執(zhí)行Runnable對象的任務(wù)。(2)常用方法start():啟動線程,線程進(jìn)入就緒狀態(tài)。run():線程執(zhí)行的主體,當(dāng)CPU空閑時,從就緒隊列中取優(yōu)先級最高的線程,執(zhí)行run()方法,此時,線程進(jìn)入運行狀態(tài)。interrupt():中斷線程wait():讓線程進(jìn)入等待狀態(tài)sleep(longs):線程進(jìn)入睡眠狀態(tài),參數(shù)的單位是毫秒setPriority(intpriority):設(shè)置線程的優(yōu)先級技術(shù)準(zhǔn)備1.通過繼承Thread類任務(wù)8.4用線程實現(xiàn)顯示游戲元素3技術(shù)準(zhǔn)備技能點2:用繼承Thread類方式創(chuàng)建線程示例代碼:創(chuàng)建線程類classMyThreadextendsThread{
//線程要完成的任務(wù)publicvoidrun(){}}啟動線程:
MyThreadthread=newMyThread();thread.start();任務(wù)8.4用線程實現(xiàn)顯示游戲元素3案例:在窗體顯示以“yyyy-MM-ddhh:mm:ss”格式動態(tài)顯示系統(tǒng)時間教師演示第一步:任務(wù)分析(1)創(chuàng)建Thread類的子類TimeThread,用于動態(tài)顯示系統(tǒng)時間(2)按照指定格式顯示系統(tǒng)日期和時間,用到SimpleDateFormat類,對系統(tǒng)當(dāng)前時間進(jìn)行格式化(3)動態(tài)顯示時間,用到無限循環(huán),避免時間不停刷新,可通過Thread.sleep(1000);讓線程睡眠1秒鐘第二步:編碼實現(xiàn)(1)新建一個Java項目(2)新建MainForm類,包含JPanel,JLabel等組件(3)在MainForm類中新建一個內(nèi)部類TimeThread,用于顯示系統(tǒng)時間(4)在MainForm類構(gòu)造方法中,創(chuàng)建TimeThread類的對象,并啟動start()方法(5)在main方法中創(chuàng)建MainForm類的對象第三步:運行程序技能點3:用實現(xiàn)Runnable接口創(chuàng)建線程任務(wù)8.4用線程實現(xiàn)顯示游戲元素3Java中類不支持多重繼承,因此,當(dāng)線程類已經(jīng)有父類的情況,可通過實現(xiàn)Runnable接口創(chuàng)建線程類。技術(shù)準(zhǔn)備第二步:動線程第一步:創(chuàng)建一個類,實現(xiàn)Runnable接口0201實現(xiàn)Runnable接口創(chuàng)建線程的步驟classMyThreadimplementsRunnable{publicvoidrun(){//線程要完成的任務(wù)}}MyThreadth=newMyThread();newThread(th).start();任務(wù)8.4用線程實現(xiàn)顯示游戲元素3案例:為避免沉迷游戲,為游戲窗口主界面添加倒計時提醒教師演示第一步:任務(wù)分析GameWindow類已經(jīng)繼承了JFrame類,只能通過實現(xiàn)Runnable接口創(chuàng)建線程實現(xiàn)倒計時。在游戲主界面顯示倒計時,20分鐘后游戲結(jié)束。倒計時格式:“倒計時:XX分鐘XX秒”第二步:編碼實現(xiàn)(1)打開任務(wù)8.2的項目(2)修改GameWindow類,實現(xiàn)Runnable接口,重寫run()方法第三步:運行程序任務(wù)實施任務(wù)8.4用線程實現(xiàn)顯示游戲元素3第一步:任務(wù)分析根據(jù)任務(wù)描述,本任務(wù)涉及到多個線程,可以將四個線程單獨放到org.example.planegame.service包中。第二步:編碼實現(xiàn)(1)編寫B(tài)ulletThread類,實現(xiàn)管理玩家發(fā)射的子彈。(2)編寫EnemyThread類,實現(xiàn)管理敵機(jī)和敵機(jī)發(fā)射的子彈。(3)編寫CountDownSecondThread類,實現(xiàn)游戲倒計時管理。(4)編寫PaintThread類,實現(xiàn)對界面定時刷新第三步:運行程序AEBCD小組協(xié)作,完成任務(wù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 斧鑿混凝土外墻施工方案
- 臺山屋頂清洗施工方案
- 水庫高溫施工方案
- 危險性專項施工方案
- 漯河管井降水施工方案
- TSHJMRH 0063-2024 在用潤滑油顆粒污染度的測定 光阻法
- 家長會安全發(fā)言稿
- 2025年度股份轉(zhuǎn)讓過程中稅務(wù)籌劃及優(yōu)惠政策合同
- 二零二五年度關(guān)于協(xié)議作廢糾紛的調(diào)解與賠償協(xié)議
- 二零二五年度夫妻共同維護(hù)家庭和諧與子女幸福感協(xié)議書
- 風(fēng)電場葉片無人機(jī)巡檢作業(yè)技術(shù)導(dǎo)則
- 工業(yè)廢鹽及副產(chǎn)鹽深度資源化利用項目可行性研究報告
- 制度機(jī)制風(fēng)險點及防控措施3篇
- 管道鈍化方案
- “小小科學(xué)家”廣東省少年兒童科學(xué)教育體驗活動+生物試題4
- 小兒推拿法操作評分標(biāo)準(zhǔn)
- 《研學(xué)旅行課程設(shè)計》課件-了解研學(xué)旅行概念
- MOOC 財務(wù)報表分析-華中科技大學(xué) 中國大學(xué)慕課答案
- 2024屆南京市建鄴區(qū)中考聯(lián)考物理試卷含解析
- 心腦血管疾病的危險因素與管理1
- 第一單元練習(xí)卷(單元測試)2023-2024學(xué)年統(tǒng)編版語文六年級下冊
評論
0/150
提交評論