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

正文內(nèi)容

基于j2me的俄羅斯方塊手機(jī)游戲-預(yù)覽頁

2025-07-16 01:04 上一頁面

下一頁面
 

【正文】 E 的俄羅斯方塊手機(jī)游戲 軟件著作權(quán)登記申請(qǐng) 文檔及源程序材料 申請(qǐng)人: 申請(qǐng)人: 河海大學(xué) 電子信息工程 王楷 1 本軟件通過采用藍(lán)牙技術(shù)使手機(jī)用戶能在小區(qū)內(nèi)進(jìn)行聯(lián)網(wǎng)俄羅斯方塊游戲。建議您優(yōu)先選擇TXT,或下載源文件到本機(jī)查看。 開發(fā)環(huán)境: 開發(fā)環(huán)境: J2ME 技術(shù) 通過對(duì)手機(jī)的增值應(yīng)用的開發(fā),Java 的跨平臺(tái)應(yīng)用就被完整的移植到手機(jī)應(yīng)用上。 圖 J2EE、J2SE、J2ME 之間關(guān)系 在提出 J2ME 平臺(tái)時(shí),將它定義為“一種以廣泛的消費(fèi)性產(chǎn)品為目標(biāo)的高度優(yōu)化的 Java 運(yùn)行環(huán)境” 。 在實(shí)際應(yīng)用中,其應(yīng)用能力是區(qū)分這兩種類型設(shè)備的最主要條件。所以需要使用一些專用的軟件對(duì)其進(jìn)行 配置,以下就對(duì)這些用于配置的開發(fā)軟件和其所支持的 Java 語言和類庫進(jìn)行介紹。不論什么 Java 應(yīng)用服務(wù)器實(shí)質(zhì)都是內(nèi)置了某個(gè)版本的 JDK。 WTK 的全稱是 Sun J2ME Wireless Toolkit —— Sun 的無線開發(fā)工具包。該工具箱包含了 完整的生成工具、 實(shí)用程序以及設(shè)備仿真器。 在 版中,WTK 全面的支持 JTWI 規(guī)范。 配置 J2ME 開發(fā)環(huán)境 J2ME 開發(fā)環(huán)境可以由 JDK 加上 jbuilder 或 netBeans 或者 eclipse 進(jìn)行配置, 由于本課 題是采用 JDK 加上 NetBeans IDE 進(jìn)行配置開發(fā)環(huán)境的,所以主要介紹這種配置方法。 支持 包括 JSF、Struts、Spring 和 Hibernate 在內(nèi)的框架。同時(shí) Mobility Pack 還可以很容易地與第三方模擬器集成為開發(fā)者提 供所需的運(yùn)行環(huán)境。在進(jìn)行本課題設(shè)計(jì)時(shí),針對(duì)本課題需求選擇環(huán)境架 構(gòu)。 J2ME 的設(shè)計(jì)者之定義了兩個(gè)架構(gòu)層,為了避免分隔出兩個(gè)不兼容的平臺(tái),定義了兩個(gè) 架構(gòu),這兩個(gè)架構(gòu)層為: (1) 個(gè)人的、間歇性連接的移動(dòng)設(shè)備:有限連接設(shè)備配置(CLDC) ; (2) 經(jīng)常性連接的網(wǎng)絡(luò)終端設(shè)備:連接設(shè)備配置(CDC) 。 CDC 規(guī)范中使用 Java 2 平臺(tái)的虛擬機(jī)內(nèi)存,這里統(tǒng)稱為簡(jiǎn)易虛擬內(nèi)存(Compact Virtual Machine,CVM) 。下表列出了 CDC 所支持的 Package。CLDC 規(guī)范也定義了終端設(shè)備具有以下特性: (1) 60KB~512KB 以下內(nèi)存用于 Java 運(yùn)行; (2) 16bit 或 32bit 處理器; (3) 有限能源供應(yīng)(通常使用電池作為供能設(shè)備) ; (4) 有限或間斷的網(wǎng)絡(luò)連接。 所以有些在標(biāo)準(zhǔn)的環(huán)境 定義的 Compliant VM 特性不予支持。CLDC 保 留 Java 規(guī)范中所定義的核心 3 個(gè)包,即 、并且重新定義一個(gè)新 的目錄 ,用來支持通用框架(GCF,Generic Connection Framework) 。CLDC 因?yàn)橘Y源受限的關(guān)系,不足以支持標(biāo)準(zhǔn)的虛擬機(jī)開發(fā)環(huán)境和類庫以及 Java 語 言程序的一些應(yīng)用。MIDP 針對(duì) 的是移動(dòng)信息設(shè)備類,這類設(shè)備通常指手機(jī)或者是 PDA,它們?cè)谄聊?、?nèi)存或處理器等硬 件特性上有很多限制。其 API 如下: (1) 應(yīng)用方式(MIDP 應(yīng)用程序語義和控制) ; (2) 用戶界面應(yīng)用; (3) 持久存儲(chǔ)器應(yīng)用; (4) 網(wǎng)絡(luò)應(yīng)用; (5) 計(jì)時(shí)應(yīng)用。 9 J2ME 開發(fā)環(huán)境界面圖 開發(fā)環(huán)境的編程窗口、調(diào)試窗口、 開發(fā)環(huán)境的編程窗口、調(diào)試窗口、輸出結(jié)果 的編程窗口 10 軟件功能: 軟件功能: 移動(dòng)電話的發(fā)展堪稱迅猛,是近幾年快速成長(zhǎng)的新興產(chǎn)業(yè),其技術(shù)越來越成熟,采用的 技術(shù)越來越先進(jìn),手機(jī)已從普通移動(dòng)通信終端向智能終端轉(zhuǎn)變,所支持的功能越來越多。由于手機(jī)作為小型終端設(shè)備,所擁有的設(shè)備、資源有限,所以 對(duì)運(yùn)行的程序有所限制, 通常是需要程序運(yùn)行時(shí)所占用的內(nèi)存和內(nèi)核的資源較少?,F(xiàn)有的手機(jī)聯(lián)網(wǎng)的方式有: 紅外連接、藍(lán)牙連接以及收費(fèi)的連接等。根據(jù)調(diào)查顯示,由于網(wǎng)絡(luò) 流量費(fèi)用的關(guān)系, 手機(jī)玩家更加愿意接受在局域網(wǎng)內(nèi)進(jìn)行不收費(fèi)連接的游戲, 在考慮到應(yīng)用 的可能性及便利性時(shí), 藍(lán)牙連接成為進(jìn)行手機(jī)聯(lián)機(jī)游戲的首選, 這就為藍(lán)牙技術(shù)的應(yīng)用提供 了一個(gè)很好的領(lǐng)域。 軟件設(shè)計(jì)過程 軟件設(shè)計(jì)過程 總體設(shè)計(jì)思路 因?yàn)楸拒浖O(shè)計(jì)的系統(tǒng)為: 實(shí)現(xiàn)俄羅斯方塊游戲的運(yùn)行, 并且增加了手機(jī)小區(qū)內(nèi)藍(lán)牙聯(lián) 網(wǎng)的功能。 游戲的功能定義:能夠?qū)崿F(xiàn)俄羅斯方塊游戲運(yùn)行,具有單機(jī)及聯(lián)網(wǎng)游戲功能。 當(dāng)方塊落到區(qū)域底部或者另一方塊之上將停止移動(dòng), 然后新的方塊會(huì)產(chǎn)生。在 J2ME 程序比較小時(shí), 為了提高程序的執(zhí)行效率,通常的做法是只用一個(gè)類完成整個(gè)應(yīng)用程序。 其次還有按鍵分析模塊: 分析得到按鍵的含義, 做出響應(yīng); 響應(yīng)模塊: “左”、 “右”、 “下”、 “移動(dòng)”和“旋轉(zhuǎn)”幾個(gè)模塊,負(fù)責(zé)改變當(dāng)前方塊的狀態(tài)數(shù)據(jù);畫方塊模塊:位置移動(dòng)后,把方 塊畫到新的位置之上;檢查模塊:在每次狀態(tài)改變之前,對(duì)方塊企圖占用的區(qū)域加以檢查。還有當(dāng)每次 方塊到底的時(shí)候,都需要檢查一下是否有新的層排滿了,如果有的話應(yīng)該消層。 在設(shè)計(jì)時(shí)還要考慮到下墜塊下 墜時(shí)間和下墜速度的問題,在一個(gè)下墜塊位置固定后,則下一個(gè)下墜塊開始下墜,同時(shí)設(shè)計(jì) 一個(gè)定時(shí)器通過對(duì)其的調(diào)用,就可以實(shí)現(xiàn)對(duì)下墜塊速度的控制。圖 a 為單機(jī)游戲屏幕示意圖。 圖 b 聯(lián)機(jī)模式下手機(jī)屏幕繪制示意圖 在圖 b 中, 當(dāng)在進(jìn)行藍(lán)牙聯(lián)機(jī)模式下游戲時(shí), 通過設(shè)定一個(gè)固定的時(shí)間值來進(jìn)行對(duì)主屏 的刷新, 控制對(duì)下墜塊的繪制; 且在有新的下墜塊產(chǎn)生或進(jìn)行消行時(shí)也調(diào)用函數(shù)對(duì)主屏的屏 幕進(jìn)行重新繪制進(jìn)行刷新,而附屏通過傳輸過來的數(shù)據(jù)對(duì)屏幕進(jìn)行更新,設(shè)定一個(gè)時(shí)間值, 每過一定的時(shí)間則向遠(yuǎn)端發(fā)送一次數(shù)據(jù), 且每當(dāng)本地玩家有消行或新下墜塊產(chǎn)生時(shí), 也發(fā)送 數(shù)據(jù),這樣就保證了附屏更新的實(shí)時(shí)性。toolkit 的 Preferences Utility(使用偏好)提供了新 的 Bluetooth/OBEX 標(biāo)簽以進(jìn)行藍(lán)牙參數(shù)設(shè)置。根據(jù) JSR 82 規(guī)范,所有 潛在藍(lán)牙系統(tǒng)都必須支持藍(lán)牙控制中心(BCC) ,該控制中心是一個(gè)控制面板,它的作用類 似于可以讓用戶或 OEM 給堆棧中的某些配置參數(shù)定義具體值得應(yīng)用程序,特別是,它將應(yīng) 用于堆棧初始化中。 JSR82 被設(shè)計(jì)為支持?jǐn)?shù)據(jù)傳輸,不支持語音傳輸。 圖 c 基于 JSR82 的協(xié)議棧 JSR82(JABWT)與 MIDP、CLDC 的關(guān)如圖 d 所示,CLDC 是 MIDP 和 JSR82 的基礎(chǔ)。 本地設(shè)備類(LocalDevice 類)標(biāo)識(shí)了本地藍(lán)牙設(shè)備。 遠(yuǎn)端設(shè)備類(RemoteDevice)一個(gè) RemoteDevice 的實(shí)例代表了一個(gè)遠(yuǎn)端藍(lán)牙設(shè)備。 DeviceClass 類。 當(dāng)一個(gè)設(shè)備被發(fā)現(xiàn),同時(shí)他的類也會(huì)被發(fā)現(xiàn);當(dāng)發(fā)現(xiàn)代理調(diào)用 deviceDiscovered()時(shí), 其中一個(gè)參數(shù)就是 DeviceClass。 考慮到游戲?yàn)槁?lián)機(jī)游戲, 因此在開發(fā)時(shí)應(yīng)該注意變量的區(qū)分, 應(yīng)在程序中定義兩組類似 的成員變量和常量, 類中除共享的成員變量外, 變量都需要定義成本地玩家和遠(yuǎn)端玩家兩份, 通過對(duì)遠(yuǎn)端變量增加_Remote(或者_(dá)REMOTE)后綴來區(qū)分本地變量和遠(yuǎn)端變量。游戲在進(jìn)行單機(jī)模式運(yùn)行時(shí),游戲的判定機(jī)制為:當(dāng)屏幕已被填滿 則判定游戲結(jié)束;而游戲在進(jìn)行聯(lián)網(wǎng)模式下運(yùn)行時(shí),通過藍(lán)牙接口實(shí)現(xiàn)數(shù)據(jù)的通信,在遠(yuǎn)端 屏幕被填滿, 判定游戲結(jié)束, 遠(yuǎn)端玩家主屏顯示游戲結(jié)束, 本地玩家游戲主屏顯示游戲勝利, 反之亦然。 根據(jù)設(shè)定的系統(tǒng)操作流程則可以進(jìn)行系統(tǒng)編程。 包中的 TetrisCanvas 類封裝了游戲邏輯,TetrisBlock 類定義了 7 種方塊及方塊的繪制方法, TetrisMap 類中保存的是游戲地圖中的數(shù)據(jù)。 20 圖 3 游戲運(yùn)行狀態(tài)圖 21 圖 3 為游戲運(yùn)行狀態(tài)圖,從圖中可以看出游戲運(yùn)行狀態(tài)的變化: 在啟動(dòng)游戲后,首先進(jìn)入角色(Master/Slave/Single)選擇畫面; 若選擇單機(jī)(Singer)模式則進(jìn)行單機(jī)游戲; 游戲開始后,再按“開始”鍵,則進(jìn)入暫停狀態(tài),再按次則恢復(fù)運(yùn)行游戲,兩種狀 態(tài)可以相互切換; 若游戲結(jié)束,則返回到角色(Master/Slave/Single)選擇畫面; 若選擇主機(jī)(Slave)模式,則向周圍廣播自己的服務(wù),然后等待;若選擇遠(yuǎn)端玩家 (Master)模式,則搜索周圍服務(wù)。 22 圖 4 系統(tǒng)軟件流程圖 主要算法 現(xiàn)對(duì)本軟件設(shè)計(jì)中的一些主要算法進(jìn)行描述。 主程序模塊 主程序模塊(MainMIDlet 類) ,MainMIDlet 類派生自 MIDlet,并實(shí)現(xiàn) CommanfListener 接口,是本軟件研究的系統(tǒng)的入口類。 在 TetrisBlock 類中定義了 7 種方塊的不同形狀和對(duì)應(yīng)的顏色, 種方塊形狀及顏色都有一個(gè) 7 對(duì)應(yīng)的 ID,分別為 1~7,每種方塊的顏色是固定的,方塊的行裝由 16 個(gè) 4*4 的小方格組成, 在通過一維來控制其旋轉(zhuǎn)地變化,所以在數(shù)據(jù)邏輯上可以使用三維數(shù)組對(duì)其定義。 Public static final int [] BRICK_COLORS = { 0x00FF0000, 27 0x0000FF00, 0x00FFFF00, 0x000000FF, 0x00FF00FF, 0x0000FFFF, 0x00C0DCC0, 0x00808080 }。 gamearea_y=。 其中 gamearea_x 指的是游戲區(qū)域左上角 X 坐標(biāo), gamearea_y 指的是游戲區(qū)域左上角 Y 坐標(biāo),游戲區(qū)域?yàn)橛螒蛉萜鲄^(qū)域和下一個(gè)下墜物的顯示區(qū)域組成。 public TetrisBlock(TetrisMap map , boolean isMaster) { = map。 next = (()) % 7 + 1。 next = (()) % 7 + 1。 Paint()方法首先判斷需繪制方塊是否有狀態(tài)上的改變,是否平移、旋轉(zhuǎn)、加速下墜。 isCrashAtBegin()方法用來判斷下落塊是不是和 map 中已有的磚塊重疊,設(shè)置返回值為 true 或者是 false,決定方塊下落的起始位置,即 y 值若為負(fù),則說明方塊的起始位置已經(jīng)超 出初始定義的游戲屏幕范圍,此時(shí)游戲狀態(tài)結(jié)束顯示 GAME_OVER。 若連接游戲, 則在屏幕上還需繪制遠(yuǎn)端玩家的游戲信息, 故需要設(shè)定遠(yuǎn)端玩家的參數(shù)值, 他們的命令方法和代表本地玩家的成員變量類似,簡(jiǎn)單的增加一個(gè)_Remote 后綴即可。 btConnections = btConns。 setReceiveThread()。 public static final String ROLE_SLAVE = Slave 遠(yuǎn)端接入(互聯(lián)模式下)。由于玩家要對(duì)游戲進(jìn)行控制,所以要對(duì)按鍵進(jìn)行設(shè)置并控制其響應(yīng),按鍵響應(yīng)在 TetrisCanvas 類實(shí)現(xiàn)父類的方法 keyPress()方法中實(shí)現(xiàn)。在游戲中,響應(yīng)玩家按鍵控制的信息,在屏幕 上的表現(xiàn)就是方塊的下降、旋轉(zhuǎn)、平移、消行等,這些狀態(tài)通過 paint()方法進(jìn)行處理實(shí)現(xiàn)。receivePN() 方 法 用 來 繪 制 附 屏 上 所 需 繪 制 方 塊 的 ID 值 , 在 TetrisCanvas 類 中 聲 明 一 個(gè) 布 爾 值 b_receivedPN(),用它來判斷是否收到新的 PN 值(判斷是否收到新的當(dāng)前方塊和下一個(gè)方 塊的 ID 值,即遠(yuǎn)端玩家的剛才控制的方塊位置已經(jīng)固定,產(chǎn)生新的方塊) ,這個(gè)布爾值在 調(diào)用 paint_Remote 方法時(shí)要用到。 TetrisMap 類中主要成員方法圖 15 所示: public TetrisMap( TetrisCanvas canvas , boolean _isMaster){……} public void setParameters( boolean _isMaster){……} public void outputParameters(){……} public void setTetrisBlock( TetrisBlock block ){……} public void init(){……} public int get(int x, int y){……} public void set(int x, int y, int val){……} public void paint(Graphics g){……} public boolean check(Graphics g, int row){……} protected void deleteRow(Graphics g, int y){……} public void repaintMap(Graphics g){……} public void repaintMap_Remote( Graphics g ){……} public void drawBlockAll(Graphics g,int y){……} public void drawBlock(Graphics g, int y){……} private void paintScore(Graphics g){……} public void outputMapdata(){……} public void outputdeleteRowNum(){……} public void caculateScore(){……} 圖 15 TetrisMap 類中主要成員方法 在 TetrisMap 類中首先聲明了 mapdata[][]和 mapBlockExist[]兩個(gè)數(shù)組,mapdata 代表的 34 是地圖數(shù)據(jù),而 mapBlockExist 中保存的是布爾值,如果 mapBlockExist[i]=true,則表示第 i+1 行有磚塊。 mapBlockExist = new boolean[16]。 Init()方法用來初始化 TetrisMap 實(shí)例中的 mapdata 和 mapBlockExist 數(shù)據(jù)。deleteRow()是本地方法,
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1