freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于j2me的java游戲坦克大戰(zhàn)的開(kāi)發(fā)畢業(yè)設(shè)計(jì)畢業(yè)設(shè)計(jì)論文-在線瀏覽

2024-07-29 14:48本頁(yè)面
  

【正文】 大的區(qū)別。易于學(xué)習(xí): 既然手機(jī)游戲面向的是普通消費(fèi)者而不是計(jì)算機(jī)專(zhuān)家,那么他們不可能深入的學(xué)習(xí)游戲技巧。保持游戲的簡(jiǎn)單是最基本的要求。可中斷性: 多任務(wù)處理是手機(jī)生活方式的基本特征。而游戲、日歷管理、通訊和工作數(shù)據(jù)訪問(wèn)使用的是同一個(gè)設(shè)備。 一開(kāi)始開(kāi)發(fā)和設(shè)計(jì)每個(gè)游戲都是昂貴的。基于訂閱的游戲是不斷產(chǎn)生收入的最好方法。豐富的社會(huì)交互: 不管一個(gè)游戲設(shè)計(jì)得多好,只要玩家找到了它的根本模式或者玩完了所有的游戲路徑很快就會(huì)厭煩這個(gè)游戲。在今天紛繁復(fù)雜的多玩家游戲中具有豐富社會(huì)交互的游戲證明是成功的。利用手機(jī)技術(shù)的優(yōu)點(diǎn): 巨額的手機(jī)技術(shù)研發(fā)費(fèi)用都花在提高設(shè)備和網(wǎng)絡(luò)的可用性和可靠性上面。好的手機(jī)游戲應(yīng)該利用那些更新的設(shè)備特征和網(wǎng)絡(luò)基礎(chǔ)設(shè)備的優(yōu)點(diǎn)。無(wú)違法內(nèi)容:既然所有年齡/性別的人群都玩手機(jī)游戲并且常常在公共/工作場(chǎng)合,就應(yīng)該避免明顯的暴力或者色情內(nèi)容。FC主機(jī)在游戲業(yè)界造成的巨大沖擊眾所周知,這款主機(jī)在當(dāng)時(shí)事實(shí)上幾乎占領(lǐng)了世界各地多個(gè)國(guó)家的整個(gè)游戲市場(chǎng),并使得逐漸圖12 80年代中期的FC機(jī)器沒(méi)落的北美游戲市場(chǎng)再度復(fù)蘇。主機(jī)所采用得處理器為CMOS 6502,一款已經(jīng)淘汰的70年代中期產(chǎn)品。6502 芯片cpu 主頻為8 bit,12 MHz,內(nèi)存8k,畫(huà)面 52色,同屏最多顯示其中的13色,聲音2個(gè)矩波,1個(gè)三角波,1個(gè)雜音,1個(gè)PCM音頻(見(jiàn)圖12)。其游戲界面如圖13所示。分析了J2ME在手機(jī)軟件開(kāi)發(fā)中起的重要作用,描述了本論文的相關(guān)背景。使用Java編寫(xiě)的程序能在世界范圍內(nèi)共享。2. 安全性Java的編程類(lèi)似C++,但舍棄了C++的指針對(duì)存儲(chǔ)器地址的直接操作,程序運(yùn)行時(shí),內(nèi)存由操作系統(tǒng)分配,這樣可以避免病毒通過(guò)指針入侵系統(tǒng)。3. 面向?qū)ο? Java吸收了C++面向?qū)ο蟮母拍?,將?shù)據(jù)封裝于類(lèi)中,實(shí)現(xiàn)了程序的簡(jiǎn)潔性和便于維護(hù)性,使程序代碼可以只需一次編譯就可反復(fù)利用。5. 健壯性Java致力與檢查程序在編譯和運(yùn)行時(shí)的錯(cuò)誤,并自動(dòng)回收內(nèi)存,減少了內(nèi)存出錯(cuò)的可能性。 關(guān)于JBuilder9 JBuilder是目前最好的Java開(kāi)發(fā)工具之一,在協(xié)同管理、對(duì)J2EE和XML的支持等方面均走在其他產(chǎn)品的前面。Jbuilder是一種處于市場(chǎng)領(lǐng)先地位的跨平臺(tái)環(huán)境,主要用于構(gòu)建具有行業(yè)實(shí)力的企業(yè)Java應(yīng)用程序。由于Java技術(shù)的發(fā)展迅速,經(jīng)常有新的組件推出或新的錯(cuò)誤修正,致使JBuilder的版本升級(jí)很快。 關(guān)于Wireless Tool Kit WTK(Wireless Tool Kit)是Sun公司針對(duì)J2ME推出的用于手機(jī)和Palm等移動(dòng)設(shè)備的開(kāi)發(fā)包,是除手機(jī)廠商的專(zhuān)用開(kāi)發(fā)包外唯一的手機(jī)模擬器開(kāi)發(fā)包。雖然它沒(méi)有強(qiáng)大的功能和完善的調(diào)試手段,但它提供運(yùn)行模擬器的最基本組件,是其他IDE需集成采用的必備元素。它所使用的傳輸媒體可以是紅外線、網(wǎng)絡(luò)、以及其他可用來(lái)傳輸?shù)拿襟w。整個(gè)詳細(xì)的運(yùn)作流程如圖21所示。 第三章 程序結(jié)構(gòu)、思想和相關(guān)技術(shù) 本程序需解決的有關(guān)技術(shù)問(wèn)題1. 游戲程序是一項(xiàng)精度要求很高的程序系統(tǒng),因?yàn)槠浯a利用率很高。因此,其邏輯設(shè)計(jì)應(yīng)當(dāng)相當(dāng)嚴(yán)謹(jǐn),需將所有可能發(fā)生的事件及意外情況考慮在設(shè)計(jì)中。3. 己方坦克的運(yùn)行可以通過(guò)鍵盤(pán)響應(yīng)事件控制,但敵方則因?yàn)槭亲詣?dòng)運(yùn)行,就需要有一定其一定的智能性;同時(shí),出現(xiàn)在屏幕上的敵方可能會(huì)有較多的數(shù)量,這需要為每個(gè)敵方開(kāi)辟一個(gè)線程以便能讓其獨(dú)立運(yùn)行。敵人坦克的運(yùn)行算法也需要進(jìn)行適當(dāng)?shù)脑O(shè)置,以免游戲過(guò)于簡(jiǎn)單,單調(diào)。敵方子彈僅需要掃描用戶(hù)坦克,而用戶(hù)坦克需要在每一步掃描所有的敵方坦克。另外,子彈在運(yùn)行過(guò)程中也需要實(shí)時(shí)掃描是否碰撞到了相關(guān)障礙物或屏幕邊界。5. 雙方的坦克在前進(jìn)時(shí)也需要考慮到是否碰撞到相關(guān)物體或?qū)Ψ教箍耍悦庵丿B運(yùn)行,造成許多物理上不可能的情況,缺乏真實(shí)感。6. 游戲的結(jié)束、開(kāi)始、動(dòng)態(tài)信息畫(huà)面作為構(gòu)成一個(gè)完美程序都是必不可少的重要部分。7. 游戲的地圖不可能通過(guò)繪圖來(lái)解決。同時(shí),地圖關(guān)卡不宜保存在手機(jī)有限的內(nèi)存中,而最好采取外部文件的讀入讀出方法。如何采用合理的記分標(biāo)準(zhǔn),需要進(jìn)行適當(dāng)?shù)脑O(shè)計(jì)。手機(jī)中由于處理器和內(nèi)存空間、存儲(chǔ)空間都十分有限,其數(shù)據(jù)庫(kù)系統(tǒng)與普通PC大相徑庭。9. Java是基于虛擬機(jī)的半解釋型編譯系統(tǒng),其執(zhí)行效率較C++等完全編譯后的程序會(huì)低很多,程序如果不進(jìn)行精簡(jiǎn)和優(yōu)化,將可能導(dǎo)致運(yùn)行的不流暢。以上相關(guān)技術(shù)細(xì)節(jié)和整體流程將分別在以下小節(jié)闡述。MIDlet及相關(guān)的支持類(lèi)組成了MIDP應(yīng)用程序的實(shí)際內(nèi)容。在MIDP規(guī)格中定義了MIDlet的生命周期,以及可以存在的三種狀態(tài),包括Paused、Active以及Destroyed,每一個(gè)MIDlet在任何時(shí)刻只可能處于其中的一個(gè)狀態(tài)。運(yùn)行程序后允許用戶(hù)選擇執(zhí)行選項(xiàng)菜單,在開(kāi)始游戲后將先從外部文件載入地圖文件,對(duì)背景的所有物體進(jìn)行繪圖。用戶(hù)控制的坦克運(yùn)行在主線程中,隨屏幕刷新的頻率而步進(jìn)。用戶(hù)坦克自誕生之時(shí)起將擁有一發(fā)子彈,子彈雖然開(kāi)在單獨(dú)的線程中,但運(yùn)行結(jié)束后(比如撞到相關(guān)物體或敵方坦克時(shí))并不結(jié)束子彈對(duì)象,只是將其線程終止。在屏幕重繪的主程序中,將在每次的循環(huán)中判斷若干事件。以便程序進(jìn)入相關(guān)的分支執(zhí)行相關(guān)的反應(yīng)代碼,結(jié)束游戲或統(tǒng)計(jì)分?jǐn)?shù)等。TankMain類(lèi)是繼承自MIDlet的控制主程序啟動(dòng)的首先被載入系統(tǒng)的部分。閃過(guò)后載入StartChoice類(lèi),為用戶(hù)提供可選擇的選項(xiàng)。它決定了游戲何時(shí)該結(jié)束,何時(shí)分配敵人數(shù)量,GameOver字樣的閃現(xiàn)規(guī)則,地圖的繪制及整個(gè)游戲的調(diào)度。敵方坦克與用戶(hù)坦克的相關(guān)功能和具體行為分別定義在EnemySprite和UserSprite類(lèi)中,它們都繼承自TankSprite公共類(lèi),以簡(jiǎn)化程序的代碼、理清結(jié)構(gòu)。如果已死亡或完成所有的關(guān)數(shù),程序?qū)⒂脩?hù)所得的分?jǐn)?shù)記載到RMS數(shù)據(jù)庫(kù)中,進(jìn)行永久性保存。 提供低級(jí)繪制的Canvas類(lèi)為了能有程序開(kāi)發(fā)人員控制接口的外觀和行為,需要使用大量的初級(jí)用戶(hù)接口類(lèi),尤其在游戲程序中,幾乎完全依賴(lài)的就是Canvas抽象類(lèi)進(jìn)行繪圖。Canvas提供了鍵盤(pán)事件、指點(diǎn)桿事件(如果設(shè)備支持),并定義了允許將鍵盤(pán)按鍵映射為游戲控制鍵的函數(shù)。應(yīng)當(dāng)將鍵代碼轉(zhuǎn)換為游戲鍵的代碼,以便硬件開(kāi)發(fā)商能定義他們自己的游戲鍵布局。 Graphics類(lèi)Graphics類(lèi)提供了簡(jiǎn)單的2D繪圖功能。程序只能在paint()函數(shù)中使用Graphics繪制,GameCanvas可調(diào)用getGraphics()函數(shù)直接繪制在緩沖區(qū)上,可以在任何時(shí)間請(qǐng)求傳輸?shù)角芭_(tái)。 PNG格式PNG(Portable Network Graphics)格式是MIDlet唯一支持的圖象格式,PNG具體格式由PNG Specification,Version 。坦克之間或與障礙物碰撞時(shí)就不會(huì)因?yàn)楸尘坝刑囟ǖ念伾?,顯示出的效果像貼上的圖片而缺乏真實(shí)感,物體之間輕微重疊時(shí)最上層圖片也不會(huì)覆蓋超過(guò)其有效象素外的部分。這些代碼包含在每一個(gè)單獨(dú)的png格式圖象中,然而如果將多個(gè)png圖象合并在一張幅面稍大一些的整圖中,多個(gè)chunks就可以得到精簡(jiǎn),圖片的大小可以得到控制。在Game包中的TiledLayer和Sprite類(lèi)都整合了這樣的功能。 Game包中的新功能 ,為游戲的開(kāi)發(fā)帶來(lái)了極大的便利。 LayerManager(以下簡(jiǎn)稱(chēng)LM)提供控制整體畫(huà)面層的控制。LM存儲(chǔ)了一個(gè)層的列表,新的層可以用append函數(shù)附加、刪除和插入。層號(hào)總是連續(xù)的,即使有中間的層被移除,其他層的序號(hào)會(huì)作相應(yīng)的調(diào)整以保持整體的完整性。改變View Window的位置可以制造出滾動(dòng)屏幕的效果。唯有界面右側(cè)的計(jì)分欄由Graphics類(lèi)繪制。不同的frame可交相顯示,構(gòu)成動(dòng)態(tài)的效果。Sprite也可以從整合的圖象中讀圖,讀圖時(shí)將把大圖分解為若干等寬等高的小圖。本程序中的雙方坦克、子彈都由Sprite繼承得到。由此,引入?yún)⒖键c(diǎn)的概念。默認(rèn)是(0,0)點(diǎn),如果需要,可將參考點(diǎn)設(shè)置在畫(huà)面邊界之外。子彈的參考點(diǎn)設(shè)置在子彈底部的中心,因?yàn)樽訌椧怀雠谕驳臅r(shí)候緊挨著坦克的象素就是其底部中心。該類(lèi)使不需要高分辨率的圖象就能創(chuàng)建大幅圖面成為可能。一塊整圖可被分割成等大小的圖象格,每塊格有其對(duì)應(yīng)的序號(hào),按照行列遞增。本程序中的地圖即為游戲背景。地圖背景分為20*22個(gè)圖象格,每個(gè)格使用一個(gè)字節(jié)表示其中的障礙物,圖象文件存儲(chǔ)在外部文件中,以16進(jìn)制的整數(shù)串表示,因此每個(gè)地圖的大小為固定的440字節(jié)。J2ME中并沒(méi)有J2SE中的File類(lèi),獲取外部文件的手段很有限,僅僅在Class類(lèi)中提供了一個(gè)getResourceAsStream函數(shù),將外部文件獲取為輸入流,再由InputStream的繼承類(lèi)讀出。需要在paint()方法內(nèi)所想要畫(huà)的圖形畫(huà)在一張預(yù)先準(zhǔn)備好的背景,等所有繪圖操作都完成后再將背景的數(shù)據(jù)拷貝到實(shí)際的屏幕上。這樣的技術(shù)在繪制動(dòng)畫(huà)時(shí)特別有用。不過(guò)在某些MIDP的實(shí)現(xiàn)上已經(jīng)加上了雙重緩沖的支持,因此在處理前應(yīng)先利用Canvas類(lèi)的isDoubleBuffer()方法來(lái)判斷。Canvas類(lèi)中采取響應(yīng)鍵盤(pán)事件的方法,每次執(zhí)行周期時(shí)會(huì)讀取keyPressed函數(shù)中需執(zhí)行的代碼。在某些不支持keyRepeat功能的設(shè)備上,反復(fù)執(zhí)行的按鍵,比如發(fā)射子彈,將不能因?yàn)殚L(zhǎng)時(shí)間按壓而自動(dòng)重復(fù),這樣就需要用戶(hù)高頻率的手動(dòng)擊鍵,這在操縱空間非常有限的移動(dòng)設(shè)備上是非常困難的。對(duì)此,針對(duì)游戲的開(kāi)發(fā),Game包提供的鍵盤(pán)狀態(tài)功能將顯得十分有效。將以位的形式返回鍵盤(pán)上所有鍵的按與釋放的狀態(tài),當(dāng)bit為1時(shí),鍵就是被按下的狀態(tài),為0時(shí)則為釋放狀態(tài)。這保證了快速的按鍵和釋放也會(huì)被循環(huán)所捕捉。敵方按照規(guī)則不能和用戶(hù)坦克重合,則它每行走一步就需要把用戶(hù)坦克掃描一次,判斷其是否碰撞到了用戶(hù)的坦克。然而不能僅僅將用戶(hù)坦克作為其Sprite參數(shù)傳遞給敵人的類(lèi)進(jìn)行判斷。為了提前預(yù)知碰撞,可以將所有坦克的碰撞范圍設(shè)定為一個(gè)比坦克圖片稍大一些的矩形,此矩形僅在坦克前方比坦克圖形多出一個(gè)象素。這樣,就可以提前一步判斷。敵方坦克由于需要具有一定的智能性,以便對(duì)玩家攻擊,使之具有一定的可玩性。需要指出的是,當(dāng)發(fā)生阻礙不能在不變方向的情況下繼續(xù)行走時(shí),并不一定立即需要采取轉(zhuǎn)向的對(duì)策。本程序設(shè)置為:當(dāng)碰撞到障礙物或邊界時(shí)立即轉(zhuǎn)向,但碰到玩家坦克時(shí)需要有一個(gè)等待的時(shí)間,這個(gè)時(shí)間由碰撞前隨機(jī)取得的在某方向上的持續(xù)行走步數(shù)決定,當(dāng)發(fā)生坦克間碰撞時(shí),此隨機(jī)數(shù)將在下一次循環(huán)前減少為原來(lái)的2/3,這樣就實(shí)現(xiàn)了加快轉(zhuǎn)向的時(shí)間,避免死鎖在一個(gè)方向上靜止的停留過(guò)長(zhǎng)的時(shí)間。坦克之間由以上道理也不會(huì)發(fā)生重疊,但當(dāng)某坦克正從上方生成而正巧有另一輛阻礙在其生成點(diǎn)處,這將導(dǎo)致不可避免的重合。本程序中并未使用過(guò)多復(fù)雜的人工智能算法,如有時(shí)間,將可能再此方面加以完善。子彈所需要完成的任務(wù)有:它是一個(gè)繼承了Runnable虛類(lèi)的可運(yùn)行單獨(dú)線程的對(duì)象。子彈使用的是象素級(jí)的碰撞檢測(cè),因?yàn)樽訌椀膱D片形狀不規(guī)則,如果使用矩形碰撞檢測(cè),將有可能在子彈尚未接觸到物體時(shí)就已返回碰撞的真值。如果來(lái)自玩家,則每一步需掃描所有的敵方坦克,檢查是否發(fā)生碰撞,這可能會(huì)花費(fèi)不少的CPU時(shí)間。敵人之間顯然,如上已經(jīng)提過(guò),不需要檢測(cè),但敵人與玩家之間應(yīng)當(dāng)可以互相消除子彈,以便在狹窄的路口中仍有存活的機(jī)會(huì)。這樣較多的運(yùn)算也將不可避免的耗費(fèi)大量CPU時(shí)間。對(duì)磚墻將有能力將其擊毀,使之在畫(huà)面上消失;對(duì)水泥鋼筋將不能發(fā)生作用,子彈也不能通過(guò);對(duì)于河流,坦克不可以通過(guò),但子彈可以;對(duì)于草叢,子彈和坦克都可以通過(guò)。很顯然,手機(jī)上的數(shù)據(jù)庫(kù)系統(tǒng)不可能有PC上的強(qiáng)大功能。RMS是專(zhuān)門(mén)針對(duì)移動(dòng)設(shè)備的服務(wù)的。在一個(gè)MIDlet suite包里的所有MIDlet都允許創(chuàng)建多個(gè)記錄集,只要它們賦有不同的名稱(chēng)。同一個(gè)包內(nèi)的MIDlets可以直接互相訪問(wèn)它們的記錄集,不同包內(nèi)也可產(chǎn)生共享,但這需要有包的授權(quán)屬性決定。訪問(wèn)模式允許私有使用或訪問(wèn)。Record store 每次被修改后都會(huì)自動(dòng)在其屬性上附加上時(shí)間戳,這為同步化引擎和程序的控制都極為有效。開(kāi)發(fā)者可以利用InputStream的派生類(lèi)DataInputStream、DataOutputStream以及ByteArrayInputStream、ByteArrayOutputStream將不同種類(lèi)的數(shù)據(jù)類(lèi)型打包,以字節(jié)流的形式發(fā)送和接收。第一項(xiàng)記錄的ID是1,其后的每個(gè)記錄ID遞增。然而讀取或?qū)懭氲淖止?jié)數(shù)組都只能代表一個(gè)字段的信息,如果需要讀取或?qū)懭攵鄠€(gè)字段就必須要將數(shù)據(jù)轉(zhuǎn)換成字節(jié)信息,并且提供適當(dāng)?shù)臋C(jī)制來(lái)分隔這些信息。將所有要存放的數(shù)據(jù)用字符串表示,但是在字段和字段之間以一個(gè)特殊的符號(hào)作為分隔。2.利用輸入/輸出流這一種方法較上一種復(fù)雜,但是較為實(shí)用。利用輸入輸出流可以寫(xiě)入及讀取不同數(shù)據(jù)類(lèi)型的數(shù)據(jù),做法是在寫(xiě)入數(shù)據(jù)時(shí)先將一個(gè)DataOutputStream數(shù)據(jù)流對(duì)象串接到一個(gè)ByteArrayOutStream數(shù)據(jù)流對(duì)象,然后再依字段的數(shù)據(jù)類(lèi)型用writeInt()、writeBoolean()等方法寫(xiě)入,最后把ByteArrayOutputStream內(nèi)的元素?cái)?shù)據(jù)寫(xiě)入record中。 本程序中主要存放在永久區(qū)的內(nèi)容為用戶(hù)得到的最高分?jǐn)?shù)的記錄。每次有新的更高的記錄就會(huì)插入進(jìn)相應(yīng)的位置,將最低一名排擠出記錄。返回的getString可以將名字輸送給字節(jié)流。打印到屏幕上時(shí),記錄ID號(hào)即為排名,因此將顯示三項(xiàng)數(shù)據(jù)。在這樣的情況下需要在不影響原有功能的情況下適當(dāng)?shù)目s減JAR文件的大小,除了可以克服內(nèi)存空間的限制外,也能大幅度縮短下載的時(shí)間(費(fèi)用也降低了),勢(shì)必會(huì)有更多的人愿意下載所開(kāi)發(fā)的程序。在應(yīng)用程序內(nèi),對(duì)于所建立的類(lèi)、接口、方法及變量名而言,都需要賦予一個(gè)識(shí)別的名稱(chēng),所命名的名稱(chēng)每多一個(gè)字符就會(huì)在類(lèi)文件內(nèi)多產(chǎn)生一個(gè)字節(jié),對(duì)于一個(gè)較復(fù)雜的應(yīng)用程序而言就會(huì)增加為數(shù)不小的數(shù)據(jù)量。第二是減少?gòu)?fù)雜的程序結(jié)構(gòu),為一些共同的行為建立一個(gè)抽象類(lèi)(Abstract Class) 來(lái)表示繼承的子類(lèi)的共通性。將PNG格式的小分辨率圖象合并在一張大的高分辨率圖象中,由于減少了chunks,將比合并前的總大小減少許多。它包括了所有的信息。目前流行的如d
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1