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

正文內(nèi)容

基于j2me的俄羅斯方塊手機游戲(編輯修改稿)

2024-07-19 01:04 本頁面
 

【文章內(nèi)容簡介】 等級下一個墜落快等。圖 a 為單機游戲屏幕示意圖。在進行單機 模式下游戲時,通過設(shè)定一個固定的時間值來進行屏幕的刷新,控制對下墜塊的繪制;且在 有新的下墜塊產(chǎn)生或進行消行時也調(diào)用函數(shù)對屏幕進行重新繪制進行刷新, 這樣也就保證了 在游戲時不會有間斷感,使游戲感覺流暢。 12 圖 a 單機模式屏幕繪制示意圖 在聯(lián)網(wǎng)游戲模式下,屏幕的左半部分繪制兩個屏幕,這兩個屏幕一大一小,小屏幕顯示 的是遠端玩家信息, 大屏幕繪制的是本地玩家的游戲狀態(tài), 在屏幕的左部分分別顯示本地玩 家和遠端玩家的分數(shù)、狀態(tài)、等級下一個墜落快等。如 圖 b 為聯(lián)機模式屏幕示意圖。 圖 b 聯(lián)機模式下手機屏幕繪制示意圖 在圖 b 中, 當在進行藍牙聯(lián)機模式下游戲時, 通過設(shè)定一個固定的時間值來進行對主屏 的刷新, 控制對下墜塊的繪制; 且在有新的下墜塊產(chǎn)生或進行消行時也調(diào)用函數(shù)對主屏的屏 幕進行重新繪制進行刷新,而附屏通過傳輸過來的數(shù)據(jù)對屏幕進行更新,設(shè)定一個時間值, 每過一定的時間則向遠端發(fā)送一次數(shù)據(jù), 且每當本地玩家有消行或新下墜塊產(chǎn)生時, 也發(fā)送 數(shù)據(jù),這樣就保證了附屏更新的實時性。 小區(qū)內(nèi)藍牙聯(lián)網(wǎng) 越來 越多的移動手 機開始支 持 java 應(yīng) 用,應(yīng) 用于無 線藍牙技術(shù)標 準的 java APIs (JABWT) 由 JSR 82(Java 藍牙無線技術(shù) APIs, , Java APIs for Bluetooth Wireless Technology) 規(guī)范定義,支持快速開發(fā)便捷、及用途廣泛的藍牙應(yīng)用。無線設(shè)備生產(chǎn)商已對 JABWT 規(guī)范 做出反應(yīng),他們宣布移動手機和其它產(chǎn)品將支持 JABWT 應(yīng)用。即本課題選用的藍牙規(guī)范為 13 J2ME Wireless Toolkit 所支持的 JABWT。toolkit 的 Preferences Utility(使用偏好)提供了新 的 Bluetooth/OBEX 標簽以進行藍牙參數(shù)設(shè)置。在此欄下 OBEX 設(shè)置和三個藍牙子標簽,它 們分別是:Internal Properties(內(nèi)部屬性)標簽允許你設(shè)置設(shè)備搜索的超時時間,System Properties (系統(tǒng)屬性) 標簽允許用戶定義一些調(diào)用 ()方法便可得到藍 牙屬性。這里對 JSR82(JABWT)規(guī)范進行簡單講解。 藍牙 API 依賴 java 通用連接框架,Java 藍牙 API 定義了兩個包:一個是 Java 藍牙 API 的核心 ,另一個是用于對象的 (OBEX) 。根據(jù) JSR 82 規(guī)范,所有 潛在藍牙系統(tǒng)都必須支持藍牙控制中心(BCC) ,該控制中心是一個控制面板,它的作用類 似于可以讓用戶或 OEM 給堆棧中的某些配置參數(shù)定義具體值得應(yīng)用程序,特別是,它將應(yīng) 用于堆棧初始化中。 任何藍牙應(yīng)用都有以下這些組件:堆棧初始化組件,設(shè)備管理組件,設(shè)備發(fā)現(xiàn)組件,服 務(wù)發(fā)現(xiàn)組件和通訊組件。 JSR82 規(guī)范定義的 API 中包括 21 個類及接口。JSR82 的最小需求是受限連接設(shè)備配置 (CLDC) ,而可靠連接設(shè)備配置(CDC)是 CLDC 的超集,所以 JSR82 可以再 CLDC 及 CDC 上實現(xiàn),即可以再任意 J2ME 環(huán)境下支持使用 JSR82 規(guī)范。 JSR82 被設(shè)計為支持數(shù)據(jù)傳輸,不支持語音傳輸。它從便于開發(fā)的角度所規(guī)定的 API 分為:設(shè)備/服務(wù)發(fā)現(xiàn)(Discovery) 、通信(Communication) 、設(shè)備管理(DeviceManagement) 3 大類。發(fā)現(xiàn)類包括設(shè)備的發(fā)現(xiàn)、服務(wù)發(fā)現(xiàn)和服務(wù)注冊的類或接口;通信類包括在串行剖面 層次、RFCOMM 層次、L2CAP 層次和 OBEX 層次建立連接和使用連接的類或接口;設(shè)備 管理類包括代表控制和管理的類或接口。 基于 JSR82 的協(xié)議棧如圖 c 所示,黃色部分為 JSE82 規(guī)范提供給 Java 平臺開發(fā)者的藍 牙軟件棧。 圖 c 基于 JSR82 的協(xié)議棧 JSR82(JABWT)與 MIDP、CLDC 的關(guān)如圖 d 所示,CLDC 是 MIDP 和 JSR82 的基礎(chǔ)。 14 無論 MIDP 還是 JSR82 均給予 CLDC 而設(shè)計。 圖 d JSR82 與 MIDP、CLDC 的層次關(guān)系 下面介紹設(shè)備管理 API。設(shè)備管理 API 有 3 個主要的類來支持設(shè)備管理:.LocalDevice 類(本地設(shè)備類) ;.RemoteDevice 類(遠端設(shè)備類) ;.DeviceClass 類。 本地設(shè)備類(LocalDevice 類)標識了本地藍牙設(shè)備。藍牙應(yīng)用程序和 LocalDevice 之間 的關(guān)系是典型的一對一關(guān)系,如圖 e 所示。 圖 e 本地設(shè)備類 本地設(shè)備提供了方法來返回關(guān)于本地設(shè)備的信息,并且能夠進入 Bluetooth manager: (1) .getBluetoothAddress()返回藍牙設(shè)備地址; (2) .getDeviceClass()返回設(shè)備類; (3) .getFriendlyName()返回設(shè)備友好名稱, 藍牙設(shè)備名通常是用戶在藍牙控制中心為其 設(shè)置的; (4) .getRecord()返回一個指定藍牙連接的服務(wù)記錄; (5) .updateRecord()方法用來為指定的 ServiceRecord 更新 SDDB 服務(wù)記錄; 15 (6) .getDiscoverable()返回設(shè)備的可發(fā)現(xiàn)狀態(tài); (7) .setDiscoverable()設(shè)置設(shè)備的可發(fā)現(xiàn)狀態(tài); (8) .getDiscoveryAgent()返回一個參考給發(fā)現(xiàn)代理; (9) .getProperty()返回一個設(shè)備的藍牙屬性。 通過調(diào)用 getProperty()方法用戶可以得到的屬性包括: (1) .,藍牙 API 版本; (2) .,一次性能夠被獲得的服務(wù)記錄屬性的最大值; (3) .,支持的連接設(shè)備的最大值; (4) .,同時發(fā)生的服務(wù)發(fā)現(xiàn)處理的最大值; (5) .,L2CAP 最大發(fā)射單元。 遠端設(shè)備類(RemoteDevice)一個 RemoteDevice 的實例代表了一個遠端藍牙設(shè)備。在 一個藍牙客戶端應(yīng)用程序可以進行服務(wù), 消費之前, 它必須發(fā)送一個設(shè)備請求來發(fā)現(xiàn)遠端設(shè) 備。典型的藍牙應(yīng)用程序和遠端設(shè)備之間的關(guān)系是一對多,如圖 f 所示。 圖 f 遠端設(shè)備類 遠端設(shè)備(RemoteDevice)提供的方法中,有些很類似于本地設(shè)備(LocalDevice)里提 供的方法: (1) getBluetoothAddress()返回藍牙地址; (2) .getFriendlyName()返回藍牙設(shè)備名; (3) .getRemoteDevice()返回相應(yīng)的被指定藍牙連接的遠端設(shè)備; (4) .authenticate()嘗試識別驗證遠端設(shè)備; (5) .authorize()為指定的藍牙連接去嘗試批準遠端設(shè)備訪問本地設(shè)備; (6) .encrypt()嘗試為指定的藍牙連接開啟或關(guān)閉加密; 16 (7) .isAuthenticated()測試是否遠端設(shè)備可以被驗證; (8) .isAuthorized()測試是否遠端設(shè)備已經(jīng)被藍牙控制中心授權(quán)訪問本地設(shè)備以進行藍 牙連接; (9) .isEncrypted()測試是否本地設(shè)備和遠端設(shè)備之間的通信被加密; (10) .isTrustedDevice()測試是否遠端設(shè)備被藍牙控制中心指定為可信任的。 DeviceClass 類。一個 DeviceClass 對象代表一個設(shè)備的設(shè)備類(CoD) ,例如一個打印 機或者一部電話。CoD 包括一個主類,一個輔的類,和服務(wù)類型或服務(wù)類。DeviceClass 提 供了如下方法: (1) .getMajorDeviceClass()方法獲取設(shè)備的主類; (2) .getMinorDeviceClass()方法獲取設(shè)備的輔類; (3) .getServiceClasses()獲取設(shè)備的服務(wù)類。 當一個設(shè)備被發(fā)現(xiàn),同時他的類也會被發(fā)現(xiàn);當發(fā)現(xiàn)代理調(diào)用 deviceDiscovered()時, 其中一個參數(shù)就是 DeviceClass。用戶可以通過它的 getDeviceClass()方法找到本地設(shè)備的 CoD。 系統(tǒng)的最終方案 本軟件通過 NetBeans IDE 軟件搭建的 J2ME 環(huán)境開發(fā)平臺,編寫 Java 應(yīng)用語言的手機 游戲程序。該課題可以主要分為兩大模塊: 基于 JSR82 的設(shè)備與服務(wù)的發(fā)現(xiàn)和建立連接; 游戲的控制和屏幕繪制等。 考慮到游戲為聯(lián)機游戲, 因此在開發(fā)時應(yīng)該注意變量的區(qū)分, 應(yīng)在程序中定義兩組類似 的成員變量和常量, 類中除共享的成員變量外, 變量都需要定義成本地玩家和遠端玩家兩份, 通過對遠端變量增加_Remote(或者_REMOTE)后綴來區(qū)分本地變量和遠端變量。 在程序設(shè)計時,應(yīng)該考慮到下墜塊的設(shè)計問題,本課題設(shè)計采用三維數(shù)組來表示,通過 增加其旋轉(zhuǎn)值的設(shè)定, 來表示 7 種下墜塊旋轉(zhuǎn)形狀的改變, 對與 7 種下墜塊對于其形狀和對 應(yīng)的顏色都有一個對應(yīng)的 ID 值,這樣方便了值的調(diào)用。 同時對與游戲的邏輯控制和地圖的控制也是本課題的重點之一,屏幕的繪制方法為兩 種,一種是玩家進行時單機模式進行游戲時的繪制方法,另一種為聯(lián)網(wǎng)模式下屏幕的繪制。 而在聯(lián)網(wǎng)模式下邏輯控制的判定機制和單機模式下的邏輯控制的判定機制也有所不同, 即游 戲勝利的判定條件不同。游戲在進行單機模式運行時,游戲的判定機制為:當屏幕已被填滿 則判定游戲結(jié)束;而游戲在進行聯(lián)網(wǎng)模式下運行時,通過藍牙接口實現(xiàn)數(shù)據(jù)的通信,在遠端 屏幕被填滿, 判定游戲結(jié)束, 遠端玩家主屏顯示游戲結(jié)束, 本地玩家游戲主屏顯示游戲勝利, 反之亦然。 系統(tǒng)軟件設(shè)計 系統(tǒng)軟件設(shè)計 本軟件的系統(tǒng)操作流程分為以下幾步: (1) 用戶啟動 MIDlet 后,首先進入 Master/Slave 選擇畫面,若選擇 Slave,則向周圍廣 播自己的服務(wù),然后等待;若選擇 Master,則搜索周圍服務(wù)。Master 端在搜索到 17 服務(wù)后, Slave 端的服務(wù)描述信息顯示在屏幕上, 將 若選擇 Singer 則進行單機游戲; (2) Master 選擇想與之進行游戲的 Slave (在搜素已存在的服務(wù)時可能不只一個) 建立 , 連接; (3) 按“開始”鍵,判斷遠端玩家是否已經(jīng)同意開始游戲(進入“等待”狀態(tài)) ,如果 沒有同意,則“等待” (GAME_WAIT) ,并且發(fā)送“等待”信號給遠端玩家; (4) 按 “開始” 如果遠端玩家已經(jīng) 鍵, “等待”GAME_WAIT)則 ( , “初始化”GAME_INIT) ( 游戲,同時發(fā)送該信號給遠端玩家; (5) 開始游戲后,再按“開始”鍵,則進入暫停(GAME_PAUSED)狀態(tài),再按次則 繼續(xù)運行游戲(GAME_RUN)狀態(tài),兩種狀態(tài)可以相互切換; (6) 若收到對方游戲結(jié)束(GAME_OVER)的信號,則主屏上顯示勝利(GAME_WIN) 畫面,附屏顯示示游戲失敗的畫面,若本地玩家游戲結(jié)束,則本地玩家主屏顯示游 戲失敗的畫面,附屏上顯示游戲勝利的畫面,并發(fā)送該信號給遠端玩家; (7) 若遠端玩家斷開連接或者退出,則本地玩家繼續(xù)游戲,代表遠端玩家的 gameState 的值為 GAME_EXIT 或者為 GAME_DISCONNECTED,并停止發(fā)送數(shù)據(jù)。 其中主屏顯示本地玩家游戲狀態(tài),附屏顯示遠端玩家的游戲狀態(tài),主屏占三分之一,附 屏占五分之一。 根據(jù)設(shè)定的系統(tǒng)操作流程則可以進行系統(tǒng)編程。 系統(tǒng)設(shè)計框圖 系統(tǒng)在設(shè)計時,按照其功能,對編碼進行考慮分為三個包文件: (1) 包,其中包括:游戲的主程序模塊、邏輯控制模塊、屏幕的繪制模塊、 方塊生成與坐標控制模塊、游戲地圖存儲模塊、數(shù)據(jù)傳輸序列化模塊等; (2) 包,其中包括:藍牙設(shè)備與服務(wù)的發(fā)現(xiàn)模塊、主從角色選擇模塊、 主從線程模塊、藍牙連接的保存模塊等; (3) 缺省包,這個包中保存了提示音信息。 系統(tǒng)詳細構(gòu)成如圖 1 所示。 18 圖 1 系統(tǒng)構(gòu)成 包中,BluetoothDiscover 類提供了一個封裝后的 API,提供了簡單的接 口進行藍牙設(shè)備及服務(wù)的發(fā)現(xiàn);BluetoothConnection 類封裝了建立后的 I/O 流。 包中的 TetrisCanvas 類封裝了游戲邏輯,TetrisBlock 類定義了 7 種方塊及方塊的繪制方法, TetrisMap 類中保存的是游戲地圖中的數(shù)據(jù)。這些類的關(guān)系可用圖 2 表示。 19 圖 2 系統(tǒng)中類的關(guān)系圖 MainMIDlet 類為主程序類,主要控制游戲進程;BluetoothDiscover 類為藍牙設(shè)備及服 務(wù)發(fā)現(xiàn)類;bluetoothConnection 類提供了藍牙保存功能;TetrisBlock 類對方塊生成與坐標起 到控制作用;TetrisCanvas 類中定義了游戲的邏輯控制及對 TetrisMap 類調(diào)用繪制的方法; TetrisMap 類實現(xiàn)了游戲地圖數(shù)據(jù)的存儲; MasterSlaveSelect 類引導(dǎo)玩家進入聯(lián)機游戲, 實現(xiàn) 了角色劃分;MasterThread 類及 SingleThread 類分別定義了本地玩家與遠端玩家藍牙連接方 法;Serialization 接口定義了傳輸數(shù)據(jù)時數(shù)據(jù)的序列化及反序列話的方法。同時從上圖中可 以看出各個類之間的關(guān)系及調(diào)用方法。 20 圖 3 游戲運行狀態(tài)圖 21 圖 3 為游戲運行狀態(tài)圖,從圖中可以看出游戲運行狀態(tài)的變化: 在啟動游戲后,首先進入角色(Master/Slave/Single)選擇畫面; 若選擇單機(Singer)模式則進行單機游戲; 游戲開始后,再按“開始”鍵,則進入暫停狀態(tài),再按次則恢復(fù)運行游戲,兩種狀 態(tài)可以相互切換; 若游戲結(jié)束,則返回到角色(Master/Slave/Single)選擇畫面; 若選擇主機(Slave)模式,則向周圍廣播自己的服務(wù),然后等待;若選擇遠端玩家 (Master)模式,則搜索周圍服務(wù)。Master 端在搜索到服務(wù)后,將
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1