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

正文內(nèi)容

基于j2me的俄羅斯方塊手機(jī)游戲-wenkub.com

2025-06-19 01:04 本頁面
   

【正文】 Paint()方法首先清屏(根據(jù) TetrisMap 代表的是主屏 還是附屏來確定清除的區(qū)域) ,然后繪制非運(yùn)動(dòng)磚塊。 } 圖 16 TetrisMap 類的構(gòu)造方法 在 TetrisMap 類的構(gòu)造方法中可以看到,構(gòu)造方法中指定 TetrisCanvas 對象和一個(gè)布爾 值_isMaster,判斷自身代表的是主屏還是附屏。 public TetrisMap( TetrisCanvas canvas , boolean _isMaster) { = canvas。 receiveMapdata()用來接收遠(yuǎn)端用戶發(fā)來的對方游戲過程中的地圖數(shù)據(jù), 設(shè)置附屏上所需 要繪制的地圖數(shù)據(jù),在 TetrisCanvas 類中聲明一個(gè)布爾值 b_receivedMapdata,用它來判斷是 否收到新的 Map 值(在 paint_Remote()方法中需要使用) ,Map 值在 map_Remote 中需要使 用,用它來設(shè)置其中的 mapdata 二維數(shù)組。 在 聯(lián) 機(jī) 游 戲 狀 態(tài) 下 , 不僅 要 發(fā) 送 本 地 游 戲 數(shù) 據(jù), 還 要 接 受 遠(yuǎn) 端 玩 家 游戲 數(shù) 據(jù) , SetReceiveThread()方法是生成接受線程,接受遠(yuǎn)端用戶的的命令信息及數(shù)據(jù)。 其中游戲過程中引起狀態(tài)的變化是指不論是否有行被消除, 只要有方塊落下固定在某個(gè) 位置,則本地玩家必須將地圖數(shù)據(jù)發(fā)送到遠(yuǎn)端。 } 圖 14 游戲角色(Master、Slave 和 Single)選擇類定義 因?yàn)?TetrisCanvas 類實(shí)現(xiàn)了 Runnavle 接口,所以需定義 run()方法,用來調(diào)用 Canvas 的 paint()方法。 } } 圖 13 TetrisCanvas 類的構(gòu)造方法 由于游戲能夠?qū)崿F(xiàn) 1 對 1 的游戲,所以 BluetoothConnection 數(shù)組長度為 1,_role 為本 地玩家所選擇的游戲方式,有 Master、Slave 和 Single 三種,它們由 包中的 Role 類定義,Role 類的定義如下圖 14 所示。 (role)。 public TetrisCanvas(MainMIDlet _midlet, BluetoothConnection[] btConns , String _role ){……} public void setSingleCanvas() public void setCanvas( ){……} private void addCommand(){……} protected void init() {……} public void initRemote(){……} public void outputParameters(){……} public void setReceiveThread(){……} public void run() {……} protected synchronized void keyPressed(int keyCode){……} public void paint(Graphics g){……} public void paint_Remote( Graphics g ){……} public static void clear(Graphics g){……} public static void clear_Remote(Graphics g){……} public void sendPN(){……} public void sendMapdata(){……} public void run(){……} public synchronized boolean receivePN( InputStream inputStream, int inp_Action){……} public void recevieMapdata(){……} 31 圖 12 TetrisCanvas 類中主要成員方法 TetrisCanvas 類的構(gòu)造方法是將一個(gè) Midlet 的實(shí)例并將 BluetoothConnection 數(shù)組傳入, 對其的定義如圖 13 所示。俄羅斯方塊游戲的邏輯控制和對 TetrisMap 類調(diào) 用 方 塊 繪 制 方 法 均 是 在 TeteisCanvas 類 中 實(shí) 現(xiàn) 的 , 它 繼 承 自 Canvas 類 , 實(shí) 現(xiàn) 了 CommandListener 和 Runnable 接口。 drawBlock()方法根據(jù)參數(shù) gamearea_x、gamearea_y 和 brick_Width 來決定需要繪制的坐標(biāo), 調(diào)用 drawBrick()方法來實(shí)際繪制圖形。在該模塊中 readPattern()方法讀取對應(yīng) ID 值的 4 種數(shù)據(jù), readNextPattern()方法僅需讀取第一種旋轉(zhuǎn)變化即可,參數(shù) nowblock 為 blockpattern1~7 中的 一種。 next = UNDEFINED。 //隨機(jī)生成的 pattern 和 next 在 1~7 之間,8 為墻 29 next =(()) % 7 + 1。本機(jī)主屏上隨機(jī)數(shù)的產(chǎn)生方式為: 對象構(gòu)造時(shí)生成一組隨機(jī)數(shù),在 TetrisBlock(TetrisMap map,boolean isMaster)中實(shí)現(xiàn);當(dāng) 方塊落下后,需要生成新的方塊,調(diào)用 generatePN()方法。 } 圖 9 setParameter()方法 以上程序中 map 是指向 TetrisMap 類的一個(gè)實(shí)例的引用,用來保存地圖數(shù)據(jù),在 TetrisBlock 類的構(gòu)造函數(shù)中被傳入。 28 public TetrisBlock(TetrisMap map , boolean isMaster) {……} public void setPN(int pattern_2, int next_2) {……} public void setParameter() {……} protected void init() {……} private void readPattern(int[][][] nowblock) {……} private void readNextPattern(int[][][] nowblock) {……} protected void rotBlock() {……} public void paint(Graphics g) {……} public void drawBlock(Graphics g) {……} public void eraseBlock(Graphics g) {……} public boolean isCrashAtBegin() {……} public void drawBrick(int px, int py, Graphics g, int colorIndex) {……} public void drawNextBlock(Graphics g) {……} public void move(int direct) {……} public int getPattern() {……} public int getNext() {……} public void generatePN() {……} 圖 8 TetrisBlock 類中主要成員方法 因?yàn)槊總€(gè)方塊均是一個(gè)個(gè)的小方格組成,所以不論主屏還是附屏對應(yīng)的 TeteisBlock 對 象,均需設(shè)置參數(shù) gamearea_x、gamearea_y、brick_Width。 { {{0,0,0,0},{1,1,1,0},{0,1,0,0},{0,0,0,0}}, {{0,1,0,0},{1,1,0,0},{0,1,0,0},{0,0,0,0}}, {{0,1,0,0},{1,1,1,0},{0,0,0,0},{0,0,0,0}}, {{0,1,0,0},{0,1,1,0},{0,1,0,0},{0,0,0,0}} }。 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 類中主要成員方法進(jìn)行介紹: (1) MainMIDlet()方法是本類的構(gòu)造函數(shù),實(shí)現(xiàn)如下功能: a、通過引用 display 得到 Display 類對象; b、使用 ErrorScreen 的靜態(tài)方法 init(Image img,Display disp)進(jìn)行初始 c、構(gòu)造 BluetoothDiscover 類對象 disc; (2) startApp()方法實(shí)現(xiàn)如下功能: a、調(diào)用 name=().getFriendName()得到本 備名稱; b、設(shè)置 disc 的 UUID 值和 name; c、調(diào)用 startUI()方法進(jìn)行角色選擇畫面; (3) startUI()方法引導(dǎo)玩家進(jìn)行角色選擇畫面; (4) showAlertAndExit(String t,string s,AlertType type)方法構(gòu)造一個(gè) Alert 對象,標(biāo)題為 t,警告文本為 s,警告類型為 type; (5) Exit()方法調(diào)用 destroyApp(Boolean unconditional)和 notfyDestroyed()方法退出程 序; (6) mandAction(Command c, Displayable s)方法為 mandListener 接口定義的方 法,進(jìn)行按鍵響應(yīng),如 c 的命令類型為 則退出; (7) getDisplay()方法返回 Display 類對象的引用 display; (8) getDisc()方法返回 BluetoothDiscovery 類對象的引用 disc; (9) setCanvas( TetrisCanvas _canvas)方法設(shè)置 canvas 為 TetrisCanvas 的引用; (10) getCanvas()方法返回 TetrisCanvas 類型的引用。 } END 判斷是否消行的算法 消行的判斷偽代碼 23 Public boolean check(Graphics g,int row) { IF map 中數(shù)據(jù)中已繪制方格數(shù)設(shè)定的游戲容器的一行方格數(shù) 不消行 ELSE map 數(shù)據(jù)中已繪制方格數(shù)=設(shè)定的游戲容器的一行方格數(shù) 消行 并且每次消行最多消去 4 行 } Public void repainMap(Graphics g) { IF 有空行//從容器底開始 IF 空行上方有磚塊 磚塊按次序向下移動(dòng) ELSE 不移動(dòng) } 判斷游戲狀態(tài)的算法 游戲狀態(tài)判斷偽代碼 IF 選擇 single setSingleCanvas(){} ELSE IF 選擇 Slave 建立主機(jī)、對周圍進(jìn)行藍(lán)牙廣播 ELSE IF 選擇選擇 Master 查找周圍有無藍(lán)牙服務(wù) 進(jìn)行游戲 Public boolean isCrashAtBegin(){} IF 游戲中方格超過容器部分 游戲結(jié)束 ELSE 繼續(xù)游戲 判斷方塊是否能夠進(jìn)行下移的算法 判斷方塊是否能夠下移偽代碼 24 Public boolean checkDown() { IF 下墜塊下方有方塊 不能下移 ELSE IF 下墜塊下方無方塊 可以下移 } 判斷方塊是否能夠進(jìn)行平移算法 判斷方塊是否能夠平移偽代碼 Public boolean checkDown() { IF 下墜塊平移方向有方塊或者平移方向?yàn)槿萜鞅?不能平移 ELSE IF 下墜塊平移方向無方塊、平移方向不是容器壁 可以下移 } 判斷方塊是否能夠進(jìn)行旋轉(zhuǎn)算法 判斷方塊是否能夠旋轉(zhuǎn)偽代碼 Public boolean checkRot() { IF 下墜塊旋轉(zhuǎn)范圍內(nèi)有方塊 不能旋轉(zhuǎn) ELSE IF 下墜塊旋轉(zhuǎn)范圍內(nèi)無方塊 可以旋轉(zhuǎn) } 模塊詳細(xì)分類及設(shè)計(jì) 按照設(shè)計(jì)的模塊的功能,可將系統(tǒng)劃分為: 游戲的主程序模塊; 邏輯控制模塊; 25 屏幕的繪制模塊; 方塊生成與坐標(biāo)控制模塊; 游戲地圖存儲模塊; 數(shù)據(jù)傳輸序列化模塊; 藍(lán)牙設(shè)備與服務(wù)的發(fā)現(xiàn)模塊; 主從角色選擇模塊; 主從線程模塊; 藍(lán)牙連接的保存模塊。 系統(tǒng)軟件流程圖 系統(tǒng)的軟件流程如下圖 4 所示。 19 圖 2 系統(tǒng)中類的關(guān)系圖 MainMIDlet 類為主程序類,主要控制游戲進(jìn)程;BluetoothDiscover 類為藍(lán)牙設(shè)備及服 務(wù)發(fā)現(xiàn)類;bluetoothConnection 類提供了藍(lán)牙保存功能;TetrisBlock 類對方塊生成與坐標(biāo)起 到控制作用;TetrisCanvas 類中定義了游戲的邏輯控制及對 TetrisMap 類調(diào)用繪制的方法; TetrisMap 類實(shí)現(xiàn)了游戲地圖數(shù)據(jù)的存儲; MasterSlaveSelect 類引導(dǎo)玩家進(jìn)入聯(lián)機(jī)游戲, 實(shí)現(xiàn) 了角色劃分;MasterThread 類及 SingleThread 類分別定義了本地玩家與遠(yuǎn)端玩家藍(lán)牙連接方 法;Serialization 接口定義了傳輸數(shù)據(jù)時(shí)數(shù)據(jù)的序列化及反序列話的方法。 系統(tǒng)詳細(xì)構(gòu)成如圖 1
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1