版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
畢業(yè)論文(設(shè)計(jì))用紙幕后臺(tái)的緩沖區(qū)內(nèi)的圖像刷新到前臺(tái)來(lái)(flushGraphics()應(yīng)該寫在render(){}的最后)。renderboss()方法重繪的是關(guān)尾的精靈cboss、相關(guān)信息等,與render()的區(qū)別在與于函數(shù)lm.paint(g,0,0),起始坐標(biāo)是不可變的,即,關(guān)尾的地圖背景是不可變的。實(shí)際上,renderboss()是完全不需要的,只要在render()函數(shù)中設(shè)置相關(guān)標(biāo)志位就可以解決關(guān)尾的繪圖問(wèn)題。玩家飛機(jī)的生命標(biāo)志使用drawImage()就可以繪制在屏幕上了。4.4游戲中的獎(jiǎng)勵(lì)及相關(guān)飛機(jī)的行為根據(jù)游戲設(shè)定,當(dāng)y1=-1000時(shí),會(huì)出現(xiàn)如圖4-8所示的飛機(jī)(sboss),當(dāng)玩家擊落他后,屏幕會(huì)顯示“援軍到達(dá)“,并且玩家剩余飛機(jī)數(shù)加1。使用if((y1==-1000)&&(sbz==0)){}設(shè)定sboss的初始位置,根據(jù)游戲設(shè)定,sboos從屏幕上方倒飛入屏幕,所以sboss設(shè)定的初始位置(50,planepoup-65),其中planepoup為屏幕上邊緣的標(biāo)志位。圖4-9最后,要將sbz賦值為1,消除sboos不停設(shè)置初始位置的BUG。圖4-9當(dāng)sboss飛入屏幕后,將sbz賦值為2,以執(zhí)行下面的if(sbz==2)語(yǔ)句。圖4-10在判斷語(yǔ)句if(sbz==2)里,將根據(jù)玩家的位置自動(dòng)飛圖4-10行。首先,根據(jù)玩家飛機(jī)的位置對(duì)sbmove賦值,當(dāng)c1在sboos的上、下、左、右時(shí),其對(duì)應(yīng)的值為1、2、3、4在這4個(gè)if語(yǔ)句中,要設(shè)置標(biāo)志位(smovebz==0)。設(shè)置這個(gè)標(biāo)志位的目的是防止sboos根據(jù)c1的位置不停的改變運(yùn)行狀態(tài),即防止sboos成為跟蹤飛機(jī)。當(dāng)sboos根據(jù)c1的位置改變一次運(yùn)行方向后,smovebz賦值為1,即不檢測(cè)c1的位置。只有sboss運(yùn)行到屏幕的邊緣時(shí),才將smovebz重新賦值為0,使其可以再次通過(guò)c1的位置決定sboos的運(yùn)行方向。當(dāng)玩家子彈擊中sboss后,使用sboss.setFrame(1),此時(shí)飛機(jī)變紅,在本次repaint結(jié)束前,使用sboss.setFrame(0)使飛機(jī)變?yōu)楸緛?lái)顏色,而程序設(shè)定每1/20秒畫一次,由此得到飛機(jī)被擊中后變色的效果。(參見(jiàn)圖4-10)。sboos會(huì)根據(jù)玩家飛機(jī)的位置發(fā)射子彈,根據(jù)游戲設(shè)置,當(dāng)玩家在其上方、左方、右方時(shí),sboss一次發(fā)射1發(fā)子彈,而玩家飛機(jī)在其下方時(shí),sboss一次發(fā)射3發(fā)子彈。sboss與cboss共用3發(fā)子彈,因?yàn)楫?dāng)sboss出現(xiàn)時(shí),離關(guān)尾還遠(yuǎn),所以,為了提高效率,采用這種方法。如果sboos被擊落后,使用函數(shù)setVisable(false)將bossbullet0、bossbullet1、bossbullet2設(shè)置為不見(jiàn),使用sboss.setImage()函數(shù)將sboos的圖片設(shè)置為爆炸圖片。同時(shí),玩家生命標(biāo)志playerno加1,sbz賦值為-1,使得sboos無(wú)法發(fā)射子彈,sbpzbz賦值為1,使得玩家的子彈不與sboos進(jìn)行碰撞檢測(cè)。同時(shí)在屏幕中使用drawString()繪制“援軍到達(dá)”四個(gè)字,隨著屏幕的運(yùn)動(dòng),爆炸圖片逐漸進(jìn)入屏幕下方,當(dāng)sboos.getY()>palnepo,通過(guò)改變標(biāo)志位的值使得drawSteing()不在執(zhí)行,四字消失。如果玩家被擊落后并沒(méi)有點(diǎn)“返回“,而此時(shí),背景會(huì)一直運(yùn)動(dòng)到關(guān)尾,考慮到其與關(guān)尾BOSS共用3發(fā)子彈,如sboos不消失,將會(huì)出現(xiàn)子彈亂飛的情況。所以,如果判斷語(yǔ)句if((sboss.getY()==getHeight()))為真,則表示離地圖的終點(diǎn)只有一個(gè)屏幕的距離時(shí),sbz賦值為-1、sbpzbz賦值為1(含義上面已經(jīng)說(shuō)明)。同時(shí)調(diào)用sboss.move(0,-3),使sboos快速飛出屏幕,直到判斷語(yǔ)句if(sboss.getY()<-65)為真時(shí),調(diào)用下面的函數(shù)setVisable(false),使得sboos不可見(jiàn)。4.5普通敵人相關(guān)屬性普通敵人是指游戲中不斷出現(xiàn)的蘭色飛機(jī)。首先在程序中首先定義了aik、aip兩個(gè)Random()類對(duì)象,ai和aipp兩個(gè)整型變量。程序中使用switch(ai)語(yǔ)句判斷下一次的飛機(jī)出現(xiàn)情況,為了達(dá)到不重復(fù)出現(xiàn)的效果,使用語(yǔ)句ai=aik.nextInt()%4(同樣應(yīng)該在構(gòu)造函數(shù)中放置此語(yǔ)句和aipp=aip.nextInt()%5,以使每次游戲開(kāi)始的時(shí)候敵人飛機(jī)的出現(xiàn)順序是不固定的),以隨機(jī)出現(xiàn)0,1,2,3四個(gè)整數(shù)(代表著飛機(jī)的四種出現(xiàn)情況)。情況1:使用aipp=aip.nextInt()%5取得隨機(jī)數(shù)aipp,根據(jù)下面三條語(yǔ)句設(shè)置飛機(jī)的出現(xiàn)位置:j0.setPosition(100-aipp*30,planepoup+24); j1.setPosition(100,planepoup); j2.setPosition(100+aipp*30,planepoup-24);;將getHeight()/8賦給整型變量kkk,每次循環(huán)kkk-1,當(dāng)kkk<=1時(shí)飛機(jī)轉(zhuǎn)向,當(dāng)aipp>0時(shí),飛機(jī)向左下方運(yùn)行,使用語(yǔ)句setFrame(0)、move(-3,3)達(dá)成向左下方運(yùn)動(dòng)的效果。當(dāng)aipp<0時(shí),向右下方運(yùn)動(dòng),實(shí)現(xiàn)方法同上。情況2:初始位置設(shè)置方法同情況1。當(dāng)kkk〈0時(shí),飛機(jī)掉頭向上飛,其中setFrame(3),move(-4,0)。情況3:初始位置設(shè)置方法同情況1。當(dāng)kkk〈0時(shí),飛機(jī)只向左轉(zhuǎn)。設(shè)置情況3的原因是在更多的隨機(jī)位置出現(xiàn)敵機(jī)。情況4:初始位置設(shè)置方法同情況1。但其中的飛機(jī)j1具有跟蹤能力,其實(shí)現(xiàn)方法如下:使用2個(gè)if語(yǔ)句if(j1.getX()<c1.getX())、if(j1.getX()>c1.getX())判斷J1在c1的左或右側(cè),并且實(shí)時(shí)根據(jù)判斷情況使用setFrame()和move()改變飛機(jī)的形態(tài),使用語(yǔ)句if((j1.getX()<c1.getX())&&((j1.getX()+48)>c1.getX())&&(j1.getY()<c1.getY()))判斷c1是否在j1的下方,當(dāng)c1在j1的下方時(shí),發(fā)射子彈jbullet1。以上四種情況的最后,都將使用函數(shù)nextInt()產(chǎn)生ai,aipp的值。設(shè)置整型數(shù)組jb[4],對(duì)應(yīng)著4種出現(xiàn)情況的標(biāo)志位。如,執(zhí)行情況1,首先執(zhí)行判斷語(yǔ)句if(jb[0]==1),在此語(yǔ)句中,首先使用setVisable(true)函數(shù)將敵人飛機(jī)設(shè)置為可見(jiàn)的,并根據(jù)上次運(yùn)行的qipp的值設(shè)置敵人飛機(jī)的初始位置最后,jb[0]賦值為2。接著執(zhí)行判斷語(yǔ)句if(jb[0]==2),在此語(yǔ)句中,首先使用move()函數(shù)使飛機(jī)向下運(yùn)動(dòng),同時(shí)kkk減1,當(dāng)kkk<=0時(shí),飛機(jī)轉(zhuǎn)向,此時(shí),根據(jù)aipp的正負(fù)判斷飛機(jī)向哪邊轉(zhuǎn)向。當(dāng)飛機(jī)飛出屏幕時(shí),jb[0]賦值為3。需要注意的一點(diǎn)是,當(dāng)取得ai的數(shù)值時(shí),一定要寫上這條語(yǔ)句:jb[ai]=1;因?yàn)楫?dāng)4種情況都出現(xiàn)一便的時(shí)候,標(biāo)志位jb[]里的數(shù)值都將變?yōu)?,如果不將其重新賦值為1,敵人飛機(jī)將只能出現(xiàn)4次。其他3種情況也大致如此。普通敵人是否發(fā)射子彈由以下語(yǔ)句if(((j1.getX()<=c1.getX()-18)||((j2.getX()-6)>=c1.getX()))&(jbz==0)),即c1在j1左側(cè)18象素范圍內(nèi)或j2左側(cè)6象素范圍時(shí),j0、j1、j2一起發(fā)射子彈,jbz=1,表示在這組子彈消失前敵人不發(fā)射子彈。如果jpb的值為0,則判斷語(yǔ)句if(jpb==0)里的move()語(yǔ)句將一直執(zhí)行下去。之后,還需要對(duì)每發(fā)子彈于玩家飛機(jī)進(jìn)行碰撞檢測(cè),如果碰撞,則將碰撞的這發(fā)子彈設(shè)置為不可見(jiàn)。4.6白云的實(shí)現(xiàn)原理為了游戲界面更加美觀,程序中設(shè)定了精靈數(shù)組cloud[i]來(lái)表示白云,由于白云應(yīng)該在所有飛機(jī)的上方,即cloud[i]應(yīng)該最早被append()到LayerManager中,或者使用insert(cloud[],0)在索引數(shù)值0處插入Layer,本程序采用了第一種方法,即在gameScreen類的構(gòu)造函數(shù)中按游戲設(shè)置的順序使用lm.append()加入到LayerManager之中。程序中設(shè)定白云數(shù)為5。首先設(shè)置白云的初始位置,其語(yǔ)句如下:cloud[0].setPosition(25,planepoup-(65));cloud[1].setPosition(80,planepoup-(140));cloud[2].setPosition(112,planepoup-(90));cloud[3].setPosition(175,planepoup-(200));cloud[4].setPosition(223,planepoup-(70));其原理為:將屏幕的X數(shù)軸和Y數(shù)軸各分成5份,即在X軸的5個(gè)范圍內(nèi)每個(gè)范圍出現(xiàn)一朵白云,Y軸的每個(gè)范圍內(nèi)也只能出現(xiàn)一朵。所以的白云的起始位置在每次游戲開(kāi)始時(shí)是固定的。白云位置設(shè)定后,使用move(0,1)使白云移動(dòng),由于白云初始位置設(shè)定在屏幕的不同區(qū)域內(nèi),故其移動(dòng)出屏幕的先后順序是不同的,使用if(cloud[].getY()>planepo)判斷白云是否飛出屏幕。如果為真則使用cloud[].setPosition(cloudposition*40,planepoup)設(shè)置白云的位置,其中,cloudposition=aicloud.nextInt()%5,aicloud為Random()類對(duì)象。乘以40表示其在X軸出現(xiàn)的范圍是多少,cloud[0]、cloud[1]、cloud[2]、cloud[3]、cloud[4]乘以的值分別為40,30、55、15、22。以達(dá)成白云的隨機(jī)出現(xiàn)效果。4.7關(guān)尾BOSS及相關(guān)屬性關(guān)尾處飛機(jī)在屏幕上方橫向移動(dòng),而背景地圖不動(dòng),所以使用renderboss()重繪屏幕,其中,paint(g,0,0)表示屏幕繪制點(diǎn)在坐標(biāo)軸(0,0)處。BOSS生命進(jìn)度條由以下語(yǔ)句繪制:g.setColor(255,0,0); g.fillRect(2,2,60,5);//生命進(jìn)度條背靜紅 g.setColor(255,255,255); g.fillRect(2,2,bosslife,5);//生命進(jìn)度條前景白其中bosslife記錄著BOSS的生命值,其初始值為0,當(dāng)玩家每擊中一次BOSS,其值加5,,即化出白色進(jìn)度條,當(dāng)bosslife==60時(shí),表示過(guò)關(guān),除玩家飛機(jī)與子彈外的其他Sprite均使用setVisable(false)使其不在顯示,同樣的pzbz要賦予1,以消除玩家飛機(jī)還能與敵人碰撞的BUG。如果cboss.getX()<0,則表示其在屏幕左方出界,應(yīng)改為右飛。同理如果cboss.getX()>(getWidth()-cboss.getWidth()),則表示其在屏幕右方出界,應(yīng)改為左飛。在飛機(jī)橫向飛行中,使用以下語(yǔ)句判斷飛機(jī)是否開(kāi)火:if(((cboss.getX()<=c1.getX()-10)||(cboss.getX()<=c1.getX()+60))&&(jbsz==0))當(dāng)每發(fā)一組子彈后,jbsz=1,則飛機(jī)無(wú)法開(kāi)火,知道子彈飛出屏幕,jbsz才重新設(shè)定為0。而((cboss.getX()<=c1.getX()-10)||(cboss.getX()<=c1.getX()+60)表示當(dāng)玩家飛機(jī)處于BOSS的左右各10個(gè)象素的范圍內(nèi)時(shí)。BOSS開(kāi)火。關(guān)尾參見(jiàn)圖4-10。4.8本章小結(jié)第四章中按照相應(yīng)的步驟描述了所有關(guān)鍵類的具體算圖4-10關(guān)尾法實(shí)現(xiàn),引用了相關(guān)函數(shù)進(jìn)行了具體流程的解釋,并對(duì)原圖4-10關(guān)尾理稍復(fù)雜的函數(shù)做了詳細(xì)的分析。對(duì)游戲有關(guān)的各運(yùn)行面也做了展示。5測(cè)試5.1打包測(cè)試的過(guò)程使用Eclipse完成代碼的調(diào)試之后,需要使用WTK生成包(即jar和jad文件),其過(guò)程如下:首先,使用WTK的新建項(xiàng)目功能建立一個(gè)新項(xiàng)目,要求與Eclipse工作區(qū)下的項(xiàng)目名稱、MIDlet類名相同(圖5-1)。圖5-1新建項(xiàng)目后,將Eclipse工作區(qū)下的.java文件拷入src文件夾,將.class文件拷入class文件夾(需要新建),將pic文件夾拷入res文件夾,點(diǎn)擊生成,如一切正常,將如圖片5-2所示。圖5-2之后,選擇項(xiàng)目-包-生成包。如圖5-3所示。圖5-3生成的jar和jad文件存儲(chǔ)在lzhhdm/bin目錄下。運(yùn)行MotorolaSDKv4.2forJ2ME,使用MOTOA760手機(jī)模擬器進(jìn)行測(cè)試。參考圖5-4。點(diǎn)擊Lanuch按紐,進(jìn)入如圖5-5的界面,即可以進(jìn)行游戲測(cè)試了。圖5-4測(cè)試的過(guò)程,實(shí)際上就是找不同的同學(xué)玩這款游戲,以期望發(fā)現(xiàn)BUG。實(shí)際上,幾乎每一版本都會(huì)產(chǎn)生很多BUG。5.2發(fā)現(xiàn)的BUG及解決情況幾乎每一個(gè)計(jì)算機(jī)程序都會(huì)有這樣那樣的不足,尤其是未經(jīng)過(guò)精心維護(hù)的非商業(yè)軟件。即使是作為操作系統(tǒng)的各種版本的Windows也時(shí)常會(huì)發(fā)生許多類型的錯(cuò)誤和漏洞。本游戲程序?qū)τ诔跎娲祟I(lǐng)域的畢業(yè)設(shè)計(jì)課題來(lái)說(shuō),尤其在開(kāi)始初期,感覺(jué)邏輯復(fù)雜,難以控制,因此產(chǎn)生了大量BUG,其中一些BUG還沒(méi)有解決,所有發(fā)現(xiàn)的BUG如下:1.玩家子彈出現(xiàn)順序問(wèn)題;2.玩家飛機(jī)爆炸后仍然可以控制爆炸圖片;3.當(dāng)過(guò)關(guān)后仍然會(huì)發(fā)生碰撞;圖5-54.當(dāng)玩家擊落可獎(jiǎng)人飛機(jī)的同時(shí)玩圖5-5家被擊落,并且此為玩家的最后一架飛機(jī),雖然顯示援軍到達(dá),但圖5-5游戲仍然結(jié)束。圖5-55.有某組飛機(jī)在飛機(jī)被擊中后仍能發(fā)射子彈;6.sboos左側(cè)子彈發(fā)射后不停在原位置刷新問(wèn)題;7.游戲運(yùn)行一段時(shí)間后變的很卡;其中,1、2、3、4條BUG已經(jīng)解決(方法已在第4章相關(guān)位置進(jìn)行了說(shuō)明)。4、5、6沒(méi)有解決,其中,4、5、6三條如果有足夠的時(shí)間可以解決。第7條以現(xiàn)有水平無(wú)法解決,因?yàn)槌霈F(xiàn)這種情況的原因估計(jì)是內(nèi)存的問(wèn)題,而由于水平的關(guān)系,現(xiàn)在的代碼變量過(guò)多,并且效率低下,有很多重復(fù)的地方,解決的方法只能是在水平提高的情況下重寫整個(gè)程序。5.3未完善的功能經(jīng)過(guò)匯總測(cè)試人員的建議,本游戲應(yīng)該完善的功能如下1.由于每按一次開(kāi)火,就會(huì)對(duì)玩家子彈的精靈數(shù)組進(jìn)行一次循環(huán)檢查,使得本運(yùn)行效率就不高的KVM運(yùn)行異常緩慢。即使刷屏沒(méi)有間隔也不會(huì)提高速度;2.最好有接寶物的設(shè)置,增強(qiáng)可玩性;3.由于沒(méi)由合適的圖片,使得敵人設(shè)置單一;4.地圖本應(yīng)由外部文件讀入,但設(shè)計(jì)初期并沒(méi)有掌握這項(xiàng)技術(shù);5.手機(jī)游戲最好只有一個(gè)類,而我卻有4個(gè);7.沒(méi)有添加成績(jī)記錄,即英雄榜;6.最大的遺憾,敵人不夠智能化。希望不遠(yuǎn)的將來(lái),我能夠有能力對(duì)這個(gè)游戲進(jìn)行重寫,以解決BUG、完善功能。6總結(jié)6.1本程序的總結(jié)和展望本程序設(shè)計(jì)實(shí)現(xiàn)了手機(jī)上以J2ME為平臺(tái)的飛行射擊游戲的開(kāi)發(fā),敵人運(yùn)行的方式由程序進(jìn)行控制,具有一定的可玩性和復(fù)雜性。經(jīng)過(guò)了細(xì)心的調(diào)試和排錯(cuò)解決了絕大部分的問(wèn)題。但是我的水平實(shí)在有限,在第5章列舉的眾多BUG和遺憾就可以看出這一點(diǎn)來(lái),但我相信,隨著時(shí)間的推移,個(gè)人水平的增長(zhǎng),我一定會(huì)重寫這個(gè)程序,使其更加完善,6.2感想這款游戲作為我的畢業(yè)設(shè)計(jì),是本人目前做過(guò)的最有意義的程序,這期間對(duì)J2ME的學(xué)習(xí),使我又回到了初學(xué)PASCAL的時(shí)候。本科期間做過(guò)很多課程設(shè)計(jì),大多規(guī)模很小。在數(shù)據(jù)庫(kù)、各種應(yīng)用軟件和游戲中,我仍覺(jué)得對(duì)游戲的設(shè)計(jì)有極大的熱情。因?yàn)槠涓鱾€(gè)模塊間的聯(lián)系十分緊密,代碼重復(fù)執(zhí)行率高,當(dāng)經(jīng)過(guò)無(wú)數(shù)次的調(diào)試、修改后,能最終看到成品,有無(wú)比自豪的心情。大學(xué)期間做過(guò)圖書館管理程序等簡(jiǎn)單的數(shù)據(jù)庫(kù)管理系統(tǒng)的課程設(shè)計(jì),思想大致相似,變化范圍有限,沒(méi)有太多自己可發(fā)揮的余地。大家作品的最終結(jié)果都離不開(kāi)同一個(gè)模式。相比一些數(shù)據(jù)庫(kù)軟件,游戲的設(shè)計(jì)有很多人情色彩和藝術(shù)思想的發(fā)揮,正式商業(yè)的軟件的人性化界面和各個(gè)游戲間迥異的結(jié)構(gòu)每每會(huì)讓人有去開(kāi)發(fā)的沖動(dòng)。學(xué)習(xí)J2ME的困難遠(yuǎn)遠(yuǎn)超出了想象,在設(shè)計(jì)初期,為了解決地圖的滾動(dòng)、玩家飛機(jī)如何不飛出上下邊界兩個(gè)問(wèn)題竟然花費(fèi)了數(shù)天的時(shí)間。很多相關(guān)的技術(shù),如需要使用到的線程、Game包的新功能、高級(jí)、低級(jí)圖形界面的使用、貼圖等,每一項(xiàng)都需要花一定的時(shí)間去掌握和熟悉。更為困難的是,J2ME為一種剛出現(xiàn)僅幾年的新技術(shù),國(guó)內(nèi)的參考資料非常少,僅有的幾本也停留在簡(jiǎn)單的介紹階段。臺(tái)灣的王森寫了本較好的書,給了我很大的幫助,但對(duì)設(shè)計(jì)該游戲來(lái)說(shuō),仍只夠入門。幸運(yùn)的是,互聯(lián)網(wǎng)上有那么多無(wú)私的人,由JasonLam著,DeabowayChou譯的電子書《J2ME&Gaming》給了我很大的幫助,作者、譯者的辛勤勞動(dòng)的成果免費(fèi)放在網(wǎng)上由大家下載,是開(kāi)源精神的完美體現(xiàn)。致謝首先感謝我的指導(dǎo)老師馬慧彬副教授,她在我的畢業(yè)設(shè)計(jì)過(guò)程中提出了指導(dǎo)性的方案和架構(gòu),并指引我閱讀相關(guān)的資料和書籍,使我在不熟悉的領(lǐng)域中仍能迅速掌握新興的技術(shù)。感謝黃明旭、包明輝同學(xué)對(duì)游戲進(jìn)行測(cè)試,感謝包明輝同學(xué)對(duì)游戲相關(guān)圖片的修改。感謝答辯組對(duì)本畢業(yè)設(shè)計(jì)的考核,如果可以得到專家的認(rèn)可將對(duì)我的學(xué)習(xí)和工作給予極大的鼓勵(lì)。你們客觀的評(píng)價(jià)和建議我將牢記在心,在今后的發(fā)展中揚(yáng)長(zhǎng)避短,更加努力的嚴(yán)格要求自己。參考文獻(xiàn)[1]JoshuaBloce著.潘愛(ài)民譯.EffectiveJava中文版.2004年7月第4版.機(jī)械工業(yè)出版社.[2]BruceEckel.侯捷譯.Java編程思想.2005年3月第1版.機(jī)械工業(yè)出版社出版社[3]王森著.Java手機(jī)/PDA程序設(shè)計(jì)入門.2005年2月第3版.電子工業(yè)出版社.[4]JamesKeogh著.潘穎王磊譯.J2ME開(kāi)發(fā)大全.2004年2月第1版清華大學(xué)出版社.[5]IanSommerville著.程成等譯.軟件工程.2003年1月第1版.機(jī)械工業(yè)出版社.[6]JasonLam著.Deabo wayChou譯J2ME&Gaming2004年末[7]陳立偉張克非黎秀紅著.精通JAVA手機(jī)游戲與應(yīng)用程序設(shè)計(jì).中國(guó)青年出版社.2005年5月[8]飛思科技產(chǎn)品研發(fā)中心.精通Jbuilder9.電子工業(yè)出版社.2004年[9]微型爪哇人.Java手機(jī)程序開(kāi)發(fā).中國(guó)鐵道出版社,2003年[10]FrandM.Carrano,JanetJ.Prichard
.著
韓志宏
譯.數(shù)據(jù)抽象和問(wèn)題求解——JAVA語(yǔ)言描述.清華大學(xué)出版社2005年4月[11]袁海燕王文濤著.JAVA實(shí)用程序設(shè)計(jì)100例.人民郵電出版社.2005年5月[12]JonathanKnudsen.What'sNewintheJ2MEWirelessToolkit2.22004年4月
附錄一代碼畢業(yè)論文(設(shè)計(jì))用紙佳木斯大學(xué)教務(wù)處 第60頁(yè)importjavax.microedition.midlet.MIDlet;importjavax.microedition.midlet.MIDletStateChangeException;importjavax.microedition.lcdui.*;publicclasslzhhdmextendsMIDletimplementsCommandListener{publicDisplaydisplay; privateImagesplashLogo; privatebooleanisSplash=true;publicForma;privateAlertalert;intlength;privateMenuScreenmenuscreen;privategameScreengamescreen;privateCommandok,back;privatebyte[]byteInputData; publiclzhhdm() { } protectedvoidstartApp()throwsMIDletStateChangeException{ display=Display.getDisplay(this); menuscreen=newMenuScreen(this); if(isSplash) {a=null; a=newForm("覽橋風(fēng)光V1.0"); ok=newCommand("ok",Command.OK,1); a.append(newStringItem(null,"")); a.addCommand(ok); a.setCommandListener(this); display.setCurrent(a); } } protectedvoidmenuscreenShow() { display.setCurrent(menuscreen); } protectedvoidmenuscreensecond(){ menuscreen=newMenuScreen(this); MenuScreen.mainmenu[0]="重新開(kāi)始";//玩完一遍或掛了后在玩一遍菜單第一項(xiàng)改為重新開(kāi)始 display.setCurrent(menuscreen); } protectedvoidpauseApp(){} protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{ } protectedvoidhelShow() {a=null; a=newForm("覽橋風(fēng)光V1.0"); back=newCommand("返回",Command.BACK,1); a.append(newStringItem(null,"操作方式:上2下8左4右6開(kāi)火5")); a.append(newStringItem(null,"彈藥數(shù):一次最多打三組")); a.addCommand(ok); a.setCommandListener(this); display.setCurrent(a); } protectedvoidrenwuShow() { a=null; a=newForm("覽橋風(fēng)光V1.0"); back=newCommand("返回",Command.BACK,1); a.append(newStringItem(null,"游戲名稱:覽橋風(fēng)光")); a.append(newStringItem(null,"版本號(hào):V1.00")); a.append(newStringItem(null,"制作者:信息電子技術(shù)學(xué)院01計(jì)算機(jī)5班劉澤華學(xué)號(hào):7")); a.addCommand(ok); a.setCommandListener(this); display.setCurrent(a); } protectedvoidgameShow() {try{ gamescreen=null; gamescreen=newgameScreen(this); gamescreen.start(); display.setCurrent(gamescreen); gamescreen.conti=true; }catch(Exceptionexp) { System.out.println("dfg"); } } publicvoidcommandAction(Commandarg0,Displayablearg1){ a=null; this.menuscreenShow(); }}importjavax.microedition.lcdui.*;publicclassMenuScreenextendsCanvasimplementsRunnable,CommandListener{Fontlowfont=Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_MEDIUM); Fonthighfont=Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_BOLD,Font.SIZE_MEDIUM); intlowColor=0x000000FF; inthighColor=0x00FF0000; inthighBGColor=0x00CCCCCC; intwidth; booleanco; intheight; intstartHeight; intspacing=highfont.getHeight()/2; publicstaticString[]mainmenu={"D?ó??·","°??ú","1?óú"}; intmenuIndex; ThreadmenuThread; privateCommandok=newCommand("ok",Command.OK,1); privatelzhhdmmidlet; publicMenuScreen(lzhhdmmidlet) { this.midlet=midlet; width=getWidth(); height=getHeight(); startHeight=(highfont.getHeight()*mainmenu.length)+((mainmenu.length-1)*spacing); startHeight=(height-startHeight)/2; menuIndex=0; addCommand(ok); setCommandListener(this); menuThread=newThread(this); menuThread.start(); co=true; } publicvoidrun() { while(co) { repaint(); } } publicvoidpaint(Graphicsg) { g.setColor(0x00FFFFFF); g.fillRect(0,0,width,height); for(inti=0;i<mainmenu.length;i++) { if(i==menuIndex) { g.setColor(highBGColor); g.fillRect(0,startHeight+(i*highfont.getHeight())+spacing,width,highfont.getHeight()); g.setFont(highfont); g.setColor(highColor); g.drawString(mainmenu[i],(width-highfont.stringWidth(mainmenu[i]))/2,startHeight+(i*highfont.getHeight())+spacing,20); }else { g.setFont(lowfont); g.setColor(lowColor); g.drawString(mainmenu[i],(width-lowfont.stringWidth(mainmenu[i]))/2,startHeight+(i*highfont.getHeight())+spacing,20); } } } publicvoidkeyPressed(intcode) { if(getGameAction(code)==Canvas.UP&&menuIndex-1>=0) { menuIndex--; } elseif(getGameAction(code)==Canvas.DOWN&&menuIndex+1<mainmenu.length) { menuIndex++; } } publicvoidcommandAction(Commandc,Displayabled) { if(c==ok) { switch(menuIndex) { case0: co=false; midlet.gameShow(); break; case1: midlet.helShow(); break; case2: midlet.renwuShow(); break; } } }
}importjavax.microedition.lcdui.*;importjavax.microedition.lcdui.game.*;publicclassmybulletsextendsSprite{publicintscore=0; privateint[][]bullets; privateintbulletstotal;publicintwidth,bulletheight; publicintno=0; publicmybullets(Imageimg,intpicwidth,intpicheight,intbulletstotal,intwidth,intheight) { super(img,picwidth,picheight); this.bulletstotal=bulletstotal; bullets=newint[bulletstotal][4]; this.width=width; this.bulletheight=height/7; }publicvoidinitBullets(inti){ bullets[i][3]=1; bullets[i][2]=0;}publicvoidupdata(inti){ bullets[i][1]+=bullets[i][2];}publicvoidsetfirstposition(intx,inty,intnof,Spritesprite[],Imageimg){ sprite[nof].setVisible(true);sprite[nof+1].setVisible(true);sprite[nof+2].setVisible(true); bullets[nof][0]=x+10;bullets[nof][1]=y-24;sprite[nof].setImage(img,6,6);bullets[nof+1][1]=bullets[nof][1]+10;bullets[nof+1][0]=x+10;sprite[nof+1].setImage(img,6,6);bullets[nof+2][1]=bullets[nof+1][1]+10;bullets[nof+2][0]=x+10;sprite[nof+2].setImage(img,6,6);}publicvoidnewposition(Spritesprite[],inti,intv,Spritejp0,Spritejp1,Spritejp2,Spriteboss,Imageimg){ bullets[i][2]-=5; sprite[i].setPosition(bullets[i][0],bullets[i][1]+bullets[i][2]); sprite[i+1].setPosition(bullets[i][0],bullets[i+1][1]+bullets[i][2]); sprite[i+2].setPosition(bullets[i][0],bullets[i+2][1]+bullets[i][2]);if(sprite[i].collidesWith(jp0,true)){ sprite[i].setImage(img,32,32); sprite[i+1].setImage(img,32,32); sprite[i+2].setImage(img,32,32); sprite[i].setFrame(1); sprite[i+1].setFrame(1); sprite[i+2].setFrame(2); bullets[i][3]=0; bullets[i+1][3]=0; bullets[i+2][3]=0; jp0.setVisible(false); no=1; score=score+1;}if(sprite[i].collidesWith(jp1,true)){ sprite[i].setImage(img,32,32); sprite[i+1].setImage(img,32,32); sprite[i+2].setImage(img,32,32); sprite[i].setFrame(1); sprite[i+1].setFrame(1); sprite[i+2].setFrame(2); bullets[i][3]=0; bullets[i+1][3]=0; bullets[i+2][3]=0; jp1.setVisible(false); no=1;score=score+1;}if(sprite[i].collidesWith(jp2,true)){ sprite[i].setImage(img,32,32); sprite[i+1].setImage(img,32,32); sprite[i+2].setImage(img,32,32); sprite[i].setFrame(1); sprite[i+1].setFrame(1); sprite[i+2].setFrame(2); bullets[i][3]=0; bullets[i+1][3]=0; bullets[i+2][3]=0; jp2.setVisible(false); no=1;score=score+1;}}publicbooleanisAlive(inti){ if(bullets[i][3]==1)returntrue;elsereturnfalse;}publicvoidsetAlive(inti){ for(intz=i;z<i+3;z++) { bullets[i][3]=0; } }publicintrscore(){ returnscore;}publicvoidclean(inti,Spritesprite[]){ for(intz=i;z<i+3;z++) { //sprite[z].setPosition(0,-1500); sprite[z].setVisible(false); no=1; }}}importjavax.microedition.lcdui.*;importjavax.microedition.lcdui.game.*;importjava.util.*;publicclassgameScreenextendsGameCanvasimplementsRunnable,CommandListener{privateFormal;publicLayerManagerlm,lm1;TiledLayerb1;intheight=getHeight();intbosscolor=0;intsbosscolor=0;intsbz=0;intsbmove=0;intsfire=0;intsmovebz=0;intsbpzbz=0;intslife=0;intsbo=0;intdrawslife=0;intlr=0;intdrawadd=0;intpzbz=0;intpzbzover=0; intplaylife=-1;intbosslife=0;intinputno=0;intposition=0;intj1b=0;intjbsz=-1;intsbsz0=-1;intsbsz1=-1;intsbsz2=-1;intsbsz3=-1;intplanepo;intplanepoup;intkkk;intgz=0;intgzks=0;intjiangli=0;intjplaneno;intcloundno=0;intright=0;intleft=1;intboss=0;intover=0;intai=0;intplanert=-1;intsupermen=0;intovercmd=0;intbossover=0;intjpb=-12;intaipp=0;intjbz=0;intcloudposition;Randomaik=newRandom();Randomaip=newRandom();Randomaicloud=newRandom();intjb[]=newint[5];intplayerno=3;
privatemybullets[]huokebullet=newmybullets[9];privateSpritejbullet0,jbullet1,jbullet2,bossbullet0,bossbullet1,bossbullet2;privateSpritecloud[]=newSprite[5];privateMenuScreenms;privateSpritec1,sboss,cboss,j0,j1,j2,boss1;privatelzhhdmmidlet;ints1=0;ints2=65;ints3=0;introw2;introw;intplanecolor=0;intplanecoco=0;publicintby1;publicinty1;publicgameScreen(lzhhdmmidlet){super(true);this.midlet=midlet;addCommand(newCommand("暫停",Command.BACK,1));setCommandListener(this);
lm=newLayerManager();c1=newSprite(img("/pic/MyPlaneFrames.png"),24,24);cboss=newSprite(img("/pic/boss.png"),65,50);jbullet0=newSprite(img("/pic/bullet.png"),6,6);jbullet1=newSprite(img("/pic/bullet.png"),6,6);jbullet2=newSprite(img("/pic/bullet.png"),6,6);bossbullet0=newSprite(img("/pic/bullet.png"),6,6);bossbullet1=newSprite(img("/pic/bullet.png"),6,6);bossbullet2=newSprite(img("/pic/bullet.png"),6,6);sboss=newSprite(img("/pic/smallboss.png"),65,50);b1=createBackGround();c1.setPosition(getWidth()/2,row2+getHeight()-25);System.out.println("ffffffffffff");planepoup=row2;planepo=row2+getHeight();j0=newSprite(img("/pic/jplane2.png"),24,22);j1=newSprite(img("/pic/jplane2.png"),24,22);j2=newSprite(img("/pic/jplane2.png"),24,22);kkk=getHeight()/8;lm.append(j0);lm.append(j1);lm.append(j2);cboss.setVisible(false);aipp=aip.nextInt()%3;if(aipp==0){aipp=aip.nextInt()%3;}lm.append(cboss);lm.append(bossbullet0);lm.append(bossbullet1);lm.append(bossbullet2);lm.append(jbullet0);lm.append(jbullet1);lm.append(jbullet2);lm.append(sboss);jb[0]=1;jb[1]=1;jb[2]=1;jb[3]=1;try{for(inti=0;i<=4;i++){cloud[i]=newSprite(img("/pic/cloud1.png"),16,16);lm.append(cloud[i]);}}catch(Exceptione){System.out.println("cloud");}try{for(inti=0;i<9;i++){
huokebullet[i]=playerbullet("/pic/bullet.png");}}catch(Exceptione){}try{for(inti=0;i<=8;i=i+3){huokebullet[i].no=1;//okhuokebullet[i].score=0;}}catch(Exceptione){System.out.println("ffffffffffffff");}for(inti=0;i<9;i++){lm.append(huokebullet[i]);}lm.append(c1);lm.append(b1);}privateImageimg(Stringpic){
Imageimg=null;try{ img=Image.createImage(pic);}catch(Exceptionexp){System.out.println(exp);}returnimg;}privatemybulletsplayerbullet(Stringpic){Imageimg=null;try{ img=Image.createImage(pic);}catch(Exceptionexp){System.out.println(exp);}returnnewmybullets(img,6,6,21,getWidth(),getHeight());}publicTiledLayercreateBackGround(){Imageimg=null;try{ img=Image.createImage("/pic/beijing.png");
}catch(Exceptionexp){System.out.println("layercreateimage");} TiledLayertiledLayer=newTiledLayer(50,200,img,16,16);int[]map1[]{地圖};for(inti=0;i<map1.length;i++){intcolumn=i%15;row=(i-column)/15; tiledLayer.setCell(column,row,map1[i]);}row2=(row+1)*16-getHeight();y1=-row2;returntiledLayer;}booleanconti=true;intrate=50; publicvoidrun() {longst=0; longet=0; Graphicsg=getGraphics(); intl=1350; while(conti){st=System.currentTimeMillis(); input();if(huokebullet[0].isAlive(0)){huokebullet[0].no--;if(huokebullet[0].no>0){ huokebullet[0].newposition(huokebullet,0,3,j0,j1,j2,cboss,img("/pic/explosion.png")); }if(huokebullet[0].no<=0){ huokebullet[0].setAlive(0); huokebullet[0].clean(0,huokebullet);}} if(huokebullet[3].isAlive(3)){huokebullet[3].no--;if(huokebullet[3].no>0){huokebullet[3].newposition(huokebullet,3,3,j0,j1,j2,cboss,img("/pic/explosion.png")); }if(huokebullet[3].no<=0){huokebullet[3].setAlive(3);huokebullet[3].clean(3,huokebullet);}} if(huokebullet[6].isAlive(6)){huokebullet[6].no--; if(huokebullet[6].no>0){ huokebullet[6].newposition(huokebullet,6,3,j0,j1,j2,cboss,img("/pic/explosion.png")); }if(huokebullet[6].no<=0){huokebullet[6].setAlive(6);huokebullet[6].clean(6,huokebullet);}}if(huokebullet[0].collidesWith(cboss,true)){huokebullet[0].setVisible(false); huokebullet[1].setVisible(false); huokebullet[2].setVisible(false);cboss.setFrame(1);if(bosslife<=55){bosslife=bosslife+5;}huokebullet[0].setAlive(0);huokebullet[0].clean(0,huokebullet);}if(huokebullet[0].collidesWith(sboss,true)&&(sbpzbz==0)){ huokebullet[0].setVisible(false);huokebullet[1].setVisible(false); huokebullet[2].setVisible(false); sboss.setFrame(1);if(slife<=75){slife=slife+5;}huokebullet[0].setAlive(0); huokebullet[0].clean(0,huokebullet);if(huokebullet[3].collidesWith(cboss,true)){cboss.setFrame(1); huokebullet[3].setVisible(false);huokebullet[4].setVisible(false); huokebullet[5].setVisible(false);huokebullet[3].no=0;if(bosslife<=55){bosslife=bosslife+5;} huokebullet[3].setAlive(3);huokebullet[3].clean(3,huokebullet);}if(huokebullet[3].collidesWith(sboss,true)&&(sbpzbz==0)){sboss.setFrame(1);huokebullet[3].setVisible(false);huokebullet[4].setVisible(false);huokebullet[5].setVisible(false);huokebullet[3].no=1;if(slife<=75){slife=slife+5;}huokebullet[3].setAlive(3);huokebullet[3].clean(3,huokebullet);}if(huokebullet[6].collidesWith(cboss,true)){ huokebullet[6].setVisible(false); huokebullet[7].setVisible(false);huokebullet[8].setVisible(false);cboss.setFrame(1);if(bosslife<=55){bosslife=bosslife+5;}huokebullet[6].setAlive(6);huokebullet[6].clean(6,huokebullet); }if(huokebullet[6].collidesWith(sboss,true)&&(sbpzbz==0)){sboss.setFrame(1);huokebullet[6].setVisible(false); huokebullet[7].setVisible(false); huokebullet[8].setVisible(false);if(slife<=75){slife=slife+5;}huokebullet[6].setAlive(6); huokebullet[6].clean(6,huokebullet);;}if((y1>-1350)&&(pzbzover==0))
{ switch(ai){ case0: if(jb[0]==1){ jbz=0; j0.setVisible(true); j1.setVisible(true); j2.setVisible(true);j1.setFrame(2); j0.setFrame(2); j2.setFrame(2);j0.setPosition(100-aipp*30,planepoup+24); j1.setPosition(100,planepoup); j2.setPosition(100+aipp*30,planepoup-24);jb[0]=2;}if(jb[0]==2){j0.move(0,3);j1.move(0,3);j2.move(0,3);kkk=kkk-1; }if(kkk<=0){jb[0]=3;if(aipp>=0){j1.setFrame(0); j0.setFrame(0);j2.setFrame(0); j0.move(-3,3);j1.move(-3,3); j2.move(-3,3);}elseif(aipp<0){j1.setFrame(1); j0.setFrame(1); j2.setFrame(1);j0.move(3,3);j1.move(3,3);j2.move(3,3);}if(j2.getY()>planepo) {j0.setVisible(false);j1.setVisible(false);j2.setVisible(false);jbullet0.setVisible(false);jbullet1.setVisible(false);jbullet2.setVisible(false);jpb=-1;ai=aik.nextInt()%4; aipp=aip.nextInt()%5;if(aipp==0){aipp=aip.nextInt()%5;}if(ai<0)ai=ai*(-1);jb[ai]=1; kkk=getHeight()/8;}}if((j1.getX()<=c1.getX()-18)&(jbz==0)){jpb=0;if(j0.isVisible()){jbullet0.setVisible(true);}if(j1.isVisible()){jbullet1.setVisible(true);}if(j2.isVisible()){jbullet2.setVisible(true);}jbullet0.setPosition(j0.getX()+12,j0.getY()+30);jbullet1.setPosition(j1.getX()+12,j1.getY()+30);jbullet2.setPosition(j2.getX()+12,j2.getY()+30);jbz=1;}break;case1: if(jb[1]==1){j0.setVisible(true);j1.setVisible(true);j2.setVisible(true);j1.setFrame(2); j0.setFrame(2);j2.setFrame(2);j0.setPosition(100-aipp*30,planepoup+24);j1.setPosition(100,planepoup);j2.setPosition(100+aipp*30,planepoup-24);;jb[1]=2;}if(jb[1]==2){j0.move(0,3);j1.move(0,3);j2.move(0,3);kkk=kkk-1;}if(kkk<0){jb[1]=3;}if(jb[1]==3){jpb=1;j1.setFrame(3);j0.setFrame(3);j2.setFrame(3);jb[1]=4;}if(jb[1]==4){j0.move(0,-4);j1.move(0,-4);j2.move(0,-4); if(j2.getY()<planepoup){j0.setVisible(false);j1.setVisible(false);j2.setVisible(false);jbullet0.setVisible(false); jbullet1.setVisible(false);jpb=-1; jbullet2.setVisible(false); ai=aik.nextInt()%4; if(ai<0)ai=ai*(-1);jb[ai]=1;aipp=aip.nextInt()%5; if(aipp==0){aipp=aip.nextInt()%5;}kkk=getHeight()/8;}}break;case2:if(jb[2]==1){jbz=0;j0.setVisible(true);j1.setVisible(true);j2.setVisible(true);j1.setFrame(2);j0.setFrame(2);j2.setFrame(2);j0.setPosition(100-aipp*30,planepoup+aipp*30);j1.setPosition(100,planepoup);j2.setPosition(100+aipp*30,planepoup+aipp*30);;jb[2]=2;}if(jb[2]==2){j0.move(0,3);j1.move(0,3);j2.move(0,3);kkk=kkk-1;}if(kkk<=0){jb[2]=3;j1.setFrame(0);j0.setFrame(0);j2.setFrame(0);j0.move(-3,3);j1.move(-3,3);j2.move(-3,3); if(j2.getY()>planepo){jpb=-1;jbullet0.setVisible(false);jbullet1.setVisible(false);jbullet2.setVisible(false);j0.setVisible(false);j1.setVisible(false);j2.setVisible(false);ai=aik.nextInt()%4;if(ai<0)ai=ai*(-1);jb[ai]=1; aipp=aip.nextInt()%5;if(aipp==0){aipp=aip.nextInt()%5;}kkk=getHeight()/8; }}if(((j1.getX()<=c1.getX()-18)||((j2.getX()-6)>=c1.getX()))&(jbz==0)){if(j0.isVisible()){jbullet0.setVisible(true);}if(j1.isVisible()){jbullet1.setVisible(true);}if(j2.isVisible()){jbullet2.setVisible(true);}jpb=0;jbullet0.setPosition(j0.getX()+12,j0.getY()+30); jbullet1.setPosition(j1.getX()+12,j1.getY()+30);jbullet2.setPosition(j2.getX()+12,j2.getY()+30);jbz=1;} break;case3:if(jb[3]==1){jbz=0; j0.setVisible(true);j1.setVisible(true);j2.setVisible(true);j1.setFrame(2);j0.setFrame(2);j2.setFrame(2);j0.setPosition(200-aipp*50,planepoup-aipp*10);j1.setPosition(100,planepoup); j2.setPosition(100+aipp*50,planepoup-aipp*10);jb[3]=2;}if(jb[3]==2){j0.move(0,3);j1.move(0,3);j2.move(0,3);if(gzks==0){if(j1.getX()<c1.getX()){j1.move(2,2);j1.setFrame(1);}if(j1.getX()>c1.getX()){j1.setFrame(0);j1.move(-2,2);}if((j1.getX()<c1.getX())&&((j1.getX()+48)>c1.getX())&&(j1.getY()<c1.getY())){j1.setFrame(2);j1.move(0,2);if(j1b==0){jbullet1.setPosition(j1.getX()+12,j1.getY()+30);j1b=1;}}j0.move(0,3);jbullet1.move(0,3);j1.move(0,3);j2.move(0,3);}if((j2.getY()>(planepo+22))&&(j0.getY()>(planepo+22))&&((j1.getY()<(planepoup-22))||(j1.getY()>(planepo+22)))){jb[3]=1;gz=0;gzks=0;jbullet1.setVisible(false);jbullet2.setVisible(false); j0.setVisible(false);j1.setVisible(false); j2.setVisible(false);ai=aik.nextInt()%4;if(ai<0)ai=ai*(-1);jb[ai]=1;aipp=aip.nextInt()%5;if(aipp==0){aipp=aip.nextInt()%5;}kkk=getHeight()/8;}if((j2.getX()<=c1.getX()-18)&(jbz==0))/{jpb=0
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度數(shù)據(jù)中心機(jī)房設(shè)備安裝工程一切險(xiǎn)保險(xiǎn)協(xié)議3篇
- 專屬2024房產(chǎn)中介代理協(xié)議范例版B版
- 2025年度高新技術(shù)產(chǎn)業(yè)園區(qū)廠房租賃管理協(xié)議范本4篇
- 2025年度柴油運(yùn)輸合同涉及多式聯(lián)運(yùn)及無(wú)縫銜接4篇
- 專業(yè)服務(wù)協(xié)議草案(2024年修訂版)版B版
- 2025年度茶葉產(chǎn)業(yè)鏈金融服務(wù)合作協(xié)議8篇
- 2025年度城市綠道場(chǎng)地平整與生態(tài)景觀合同4篇
- 2025年度廠房建筑安全防護(hù)設(shè)施承包合同4篇
- 2025年度高科技產(chǎn)業(yè)員工勞動(dòng)合同范本4篇
- 2025年度廠房裝修項(xiàng)目進(jìn)度管理與支付協(xié)議4篇
- 2023年浙江省公務(wù)員考試面試真題解析
- GB/T 5796.3-2022梯形螺紋第3部分:基本尺寸
- GB/T 16407-2006聲學(xué)醫(yī)用體外壓力脈沖碎石機(jī)的聲場(chǎng)特性和測(cè)量
- 簡(jiǎn)潔藍(lán)色科技商業(yè)PPT模板
- 錢素云先進(jìn)事跡學(xué)習(xí)心得體會(huì)
- 道路客運(yùn)車輛安全檢查表
- 宋曉峰辣目洋子小品《來(lái)啦老妹兒》劇本臺(tái)詞手稿
- 附錄C(資料性)消防安全評(píng)估記錄表示例
- 噪音檢測(cè)記錄表
- 推薦系統(tǒng)之協(xié)同過(guò)濾算法
- 提高筒倉(cāng)滑模施工混凝土外觀質(zhì)量QC成果PPT
評(píng)論
0/150
提交評(píng)論