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

正文內(nèi)容

基于j2me的俄羅斯方塊手機游戲-在線瀏覽

2024-08-02 01:04本頁面
  

【正文】 現(xiàn)在區(qū)域的最頂端; 然后每過一個固定時間間隔向下落一層, 玩家可以使用鍵盤控制方 塊向三個方向移動和順逆時針旋轉(zhuǎn) 90 度。 當方塊落到區(qū)域底部或者另一方塊之上將停止移動, 然后新的方塊會產(chǎn)生。 各模塊方案的選擇與論證 考慮到硬件的因素,J2ME 程序不能很大,通過已有的手機游戲來看,多數(shù)在 100 KB 以下。在 J2ME 程序比較小時, 為了提高程序的執(zhí)行效率,通常的做法是只用一個類完成整個應用程序。下面就對主要的模塊進行可行性分析與論 證,尋找最優(yōu)設計。 其次還有按鍵分析模塊: 分析得到按鍵的含義, 做出響應; 響應模塊: “左”、 “右”、 “下”、 “移動”和“旋轉(zhuǎn)”幾個模塊,負責改變當前方塊的狀態(tài)數(shù)據(jù);畫方塊模塊:位置移動后,把方 塊畫到新的位置之上;檢查模塊:在每次狀態(tài)改變之前,對方塊企圖占用的區(qū)域加以檢查。如果方塊到底了,應該固定在當前位置,這可以調(diào)用前面 的畫方塊模塊實現(xiàn),同時再產(chǎn)生一個新的方塊。還有當每次 方塊到底的時候,都需要檢查一下是否有新的層排滿了,如果有的話應該消層。產(chǎn)生新方塊時也需要檢查其產(chǎn)生的位置,如果這個位 置已被占用,則游戲結(jié)束。 在設計時還要考慮到下墜塊下 墜時間和下墜速度的問題,在一個下墜塊位置固定后,則下一個下墜塊開始下墜,同時設計 一個定時器通過對其的調(diào)用,就可以實現(xiàn)對下墜塊速度的控制。 遠/近端屏幕繪制 近端屏幕繪制 屏幕的繪制要考慮到單機模式和聯(lián)機模式, 在兩種模式下繪制有所不同。圖 a 為單機游戲屏幕示意圖。 12 圖 a 單機模式屏幕繪制示意圖 在聯(lián)網(wǎng)游戲模式下,屏幕的左半部分繪制兩個屏幕,這兩個屏幕一大一小,小屏幕顯示 的是遠端玩家信息, 大屏幕繪制的是本地玩家的游戲狀態(tài), 在屏幕的左部分分別顯示本地玩 家和遠端玩家的分數(shù)、狀態(tài)、等級下一個墜落快等。 圖 b 聯(lián)機模式下手機屏幕繪制示意圖 在圖 b 中, 當在進行藍牙聯(lián)機模式下游戲時, 通過設定一個固定的時間值來進行對主屏 的刷新, 控制對下墜塊的繪制; 且在有新的下墜塊產(chǎn)生或進行消行時也調(diào)用函數(shù)對主屏的屏 幕進行重新繪制進行刷新,而附屏通過傳輸過來的數(shù)據(jù)對屏幕進行更新,設定一個時間值, 每過一定的時間則向遠端發(fā)送一次數(shù)據(jù), 且每當本地玩家有消行或新下墜塊產(chǎn)生時, 也發(fā)送 數(shù)據(jù),這樣就保證了附屏更新的實時性。無線設備生產(chǎn)商已對 JABWT 規(guī)范 做出反應,他們宣布移動手機和其它產(chǎn)品將支持 JABWT 應用。toolkit 的 Preferences Utility(使用偏好)提供了新 的 Bluetooth/OBEX 標簽以進行藍牙參數(shù)設置。這里對 JSR82(JABWT)規(guī)范進行簡單講解。根據(jù) JSR 82 規(guī)范,所有 潛在藍牙系統(tǒng)都必須支持藍牙控制中心(BCC) ,該控制中心是一個控制面板,它的作用類 似于可以讓用戶或 OEM 給堆棧中的某些配置參數(shù)定義具體值得應用程序,特別是,它將應 用于堆棧初始化中。 JSR82 規(guī)范定義的 API 中包括 21 個類及接口。 JSR82 被設計為支持數(shù)據(jù)傳輸,不支持語音傳輸。發(fā)現(xiàn)類包括設備的發(fā)現(xiàn)、服務發(fā)現(xiàn)和服務注冊的類或接口;通信類包括在串行剖面 層次、RFCOMM 層次、L2CAP 層次和 OBEX 層次建立連接和使用連接的類或接口;設備 管理類包括代表控制和管理的類或接口。 圖 c 基于 JSR82 的協(xié)議棧 JSR82(JABWT)與 MIDP、CLDC 的關(guān)如圖 d 所示,CLDC 是 MIDP 和 JSR82 的基礎。 圖 d JSR82 與 MIDP、CLDC 的層次關(guān)系 下面介紹設備管理 API。 本地設備類(LocalDevice 類)標識了本地藍牙設備。 圖 e 本地設備類 本地設備提供了方法來返回關(guān)于本地設備的信息,并且能夠進入 Bluetooth manager: (1) .getBluetoothAddress()返回藍牙設備地址; (2) .getDeviceClass()返回設備類; (3) .getFriendlyName()返回設備友好名稱, 藍牙設備名通常是用戶在藍牙控制中心為其 設置的; (4) .getRecord()返回一個指定藍牙連接的服務記錄; (5) .updateRecord()方法用來為指定的 ServiceRecord 更新 SDDB 服務記錄; 15 (6) .getDiscoverable()返回設備的可發(fā)現(xiàn)狀態(tài); (7) .setDiscoverable()設置設備的可發(fā)現(xiàn)狀態(tài); (8) .getDiscoveryAgent()返回一個參考給發(fā)現(xiàn)代理; (9) .getProperty()返回一個設備的藍牙屬性。 遠端設備類(RemoteDevice)一個 RemoteDevice 的實例代表了一個遠端藍牙設備。典型的藍牙應用程序和遠端設備之間的關(guān)系是一對多,如圖 f 所示。 DeviceClass 類。CoD 包括一個主類,一個輔的類,和服務類型或服務類。 當一個設備被發(fā)現(xiàn),同時他的類也會被發(fā)現(xiàn);當發(fā)現(xiàn)代理調(diào)用 deviceDiscovered()時, 其中一個參數(shù)就是 DeviceClass。 系統(tǒng)的最終方案 本軟件通過 NetBeans IDE 軟件搭建的 J2ME 環(huán)境開發(fā)平臺,編寫 Java 應用語言的手機 游戲程序。 考慮到游戲為聯(lián)機游戲, 因此在開發(fā)時應該注意變量的區(qū)分, 應在程序中定義兩組類似 的成員變量和常量, 類中除共享的成員變量外, 變量都需要定義成本地玩家和遠端玩家兩份, 通過對遠端變量增加_Remote(或者_REMOTE)后綴來區(qū)分本地變量和遠端變量。 同時對與游戲的邏輯控制和地圖的控制也是本課題的重點之一,屏幕的繪制方法為兩 種,一種是玩家進行時單機模式進行游戲時的繪制方法,另一種為聯(lián)網(wǎng)模式下屏幕的繪制。游戲在進行單機模式運行時,游戲的判定機制為:當屏幕已被填滿 則判定游戲結(jié)束;而游戲在進行聯(lián)網(wǎng)模式下運行時,通過藍牙接口實現(xiàn)數(shù)據(jù)的通信,在遠端 屏幕被填滿, 判定游戲結(jié)束, 遠端玩家主屏顯示游戲結(jié)束, 本地玩家游戲主屏顯示游戲勝利, 反之亦然。Master 端在搜索到 17 服務后, Slave 端的服務描述信息顯示在屏幕上, 將 若選擇 Singer 則進行單機游戲; (2) Master 選擇想與之進行游戲的 Slave (在搜素已存在的服務時可能不只一個) 建立 , 連接; (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ù)。 根據(jù)設定的系統(tǒng)操作流程則可以進行系統(tǒng)編程。 系統(tǒng)詳細構(gòu)成如圖 1 所示。 包中的 TetrisCanvas 類封裝了游戲邏輯,TetrisBlock 類定義了 7 種方塊及方塊的繪制方法, TetrisMap 類中保存的是游戲地圖中的數(shù)據(jù)。 19 圖 2 系統(tǒng)中類的關(guān)系圖 MainMIDlet 類為主程序類,主要控制游戲進程;BluetoothDiscover 類為藍牙設備及服 務發(fā)現(xiàn)類;bluetoothConnection 類提供了藍牙保存功能;TetrisBlock 類對方塊生成與坐標起 到控制作用;TetrisCanvas 類中定義了游戲的邏輯控制及對 TetrisMap 類調(diào)用繪制的方法; TetrisMap 類實現(xiàn)了游戲地圖數(shù)據(jù)的存儲; MasterSlaveSelect 類引導玩家進入聯(lián)機游戲, 實現(xiàn) 了角色劃分;MasterThread 類及 SingleThread 類分別定義了本地玩家與遠端玩家藍牙連接方 法;Serialization 接口定義了傳輸數(shù)據(jù)時數(shù)據(jù)的序列化及反序列話的方法。 20 圖 3 游戲運行狀態(tài)圖 21 圖 3 為游戲運行狀態(tài)圖,從圖中可以看出游戲運行狀態(tài)的變化: 在啟動游戲后,首先進入角色(Master/Slave/Single)選擇畫面; 若選擇單機(Singer)模式則進行單機游戲; 游戲開始后,再按“開始”鍵,則進入暫停狀態(tài),再按次則恢復運行游戲,兩種狀 態(tài)可以相互切換; 若游戲結(jié)束,則返回到角色(Master/Slave/Single)選擇畫面; 若選擇主機(Slave)模式,則向周圍廣播自己的服務,然后等待;若選擇遠端玩家 (Master)模式,則搜索周圍服務。 系統(tǒng)軟件流程圖 系統(tǒng)的軟件流程如下圖 4 所示。 22 圖 4 系統(tǒng)軟件流程圖 主要算法 現(xiàn)對本軟件設計中的一些主要算法進行描述。 } END 判斷是否消行的算法 消行的判斷偽代碼 23 Public boolean check(Graphics g,int row) { IF map 中數(shù)據(jù)中已繪制方格數(shù)設定的游戲容器的一行方格數(shù) 不消行 ELSE map 數(shù)據(jù)中已繪制方格數(shù)=設定的游戲容器的一行方格數(shù) 消行 并且每次消行最多消去 4 行 } Public void repainMap(Graphics g) { IF 有空行//從容器底開始 IF 空行上方有磚塊 磚塊按次序向下移動 ELSE 不移動 } 判斷游戲狀態(tài)的算法 游戲狀態(tài)判斷偽代碼 IF 選擇 single setSingleCanvas(){} ELSE IF 選擇 Slave 建立主機、對周圍進行藍牙廣播 ELSE IF 選擇選擇 Master 查找周圍有無藍牙服務 進行游戲 Public boolean isCrashAtBegin(){} IF 游戲中方格超過容器部分 游戲結(jié)束 ELSE 繼續(xù)游戲 判斷方塊是否能夠進行下移的算法 判斷方塊是否能夠下移偽代碼 24 Public boolean checkDown() { IF 下墜塊下方有方塊 不能下移 ELSE IF 下墜塊下方無方塊 可以下移 } 判斷方塊是否能夠進行平移算法 判斷方塊是否能夠平移偽代碼 Public boolean checkDown() { IF 下墜塊平移方向有方塊或者平移方向為容器壁 不能平移 ELSE IF 下墜塊平移方向無方塊、平移方向不是容器壁 可以下移 } 判斷方塊是否能夠進行旋轉(zhuǎn)算法 判斷方塊是否能夠旋轉(zhuǎn)偽代碼 Public boolean checkRot() { IF 下墜塊旋轉(zhuǎn)范圍內(nèi)有方塊 不能旋轉(zhuǎn) ELSE IF 下墜塊旋轉(zhuǎn)范圍內(nèi)無方塊 可以旋轉(zhuǎn) } 模塊詳細分類及設計 按照設計的模塊的功能,可將系統(tǒng)劃分為: 游戲的主程序模塊; 邏輯控制模塊; 25 屏幕的繪制模塊; 方塊生成與坐標控制模塊; 游戲地圖存儲模塊; 數(shù)據(jù)傳輸序列化模塊; 藍牙設備與服務的發(fā)現(xiàn)模塊; 主從角色選擇模塊; 主從線程模塊; 藍牙連接的保存模塊。 主程序模塊 主程序模塊(MainMIDlet 類) ,MainMIDlet 類派生自 MIDlet,并實現(xiàn) CommanfListener 接口,是本軟件研究的系統(tǒng)的入口類。 Public void startApp() {……} Public void srartUI() {……} Public void pauseApp() {……} public void destroyApp( boolean unconditional ) {……} public void showAlertAndExit( String t, String s, AlertType type ) {……} public void Exit() {……} public void mandAction(Command c, Displayable s) {……} public Display getDisplay() {……} public BluetoothDiscovery getDisc() {……} public void setCanvas( TetrisCanvas _canvas) {……} public TetrisCanvas getCanvas() {……} 26 圖 5 MainMIDlet 類中主要成員方法 現(xiàn)對 MainMIDlet 類中主要成員方法進行介紹: (1) MainMIDlet()方法是本類的構(gòu)造函數(shù),實現(xiàn)如下功能: a、通過引用 display 得到 Display 類對象; b、使用 ErrorScreen 的靜態(tài)方法 init(Image img,Display disp)進行初始 c、構(gòu)造 BluetoothDiscover 類對象 disc; (2) startApp()方法實現(xiàn)如下功能: a、調(diào)用 name=().getFriendName()得到本 備名稱; b、設置 disc 的 UUID 值和 name; c、調(diào)用 startUI()方法進行角色選擇畫面; (3) startUI()方法引導玩家進行角色選擇畫面; (4) showAlertAndExit(String t,string s,AlertType type)方法構(gòu)造一個 Alert 對象,標題為 t,警告文本為 s,警告類型為 type
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1