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

正文內容

基于j2me的俄羅斯方塊手機游戲58521-資料下載頁

2025-06-22 00:25本頁面
  

【正文】 atePN()方法 在游戲運行時,得到當前下墜方塊和下一個下墜方塊的 ID 后,要將對應的方塊數據讀 出,便于在屏幕上繪制。在該模塊中 readPattern()方法讀取對應 ID 值的 4 種數據, readNextPattern()方法僅需讀取第一種旋轉變化即可,參數 nowblock 為 blockpattern1~7 中的 一種。 一個方塊繪制需要首先調用 paint()方法清楚上次繪制的舊圖像, 然后調用繪制下墜方塊 的繪制方法 drawBlock()重新繪制,同時在使用 drawBlock()繪制方塊的方法時又需要調用 drawBrick()方法繪制方塊中的每一個方格,所以在進行方塊的繪制需要用到: public void paint(Graphics g); public void drawBlock(Graphics g); public void drawBrick(int px,int py,Graphics g,int colorIndex)。 Paint()方法首先判斷需繪制方塊是否有狀態(tài)上的改變,是否平移、旋轉、加速下墜。如 果是則首先清楚下落方塊所在的范圍背景顏色,然后利用新的坐標或旋轉值進行繪制。 drawBlock()方法根據參數 gamearea_x、gamearea_y 和 brick_Width 來決定需要繪制的坐標, 調用 drawBrick()方法來實際繪制圖形。F 方塊中方格的實際繪制方法定義于 drawBrick()方 法中。 isCrashAtBegin()方法用來判斷下落塊是不是和 map 中已有的磚塊重疊,設置返回值為 true 或者是 false,決定方塊下落的起始位置,即 y 值若為負,則說明方塊的起始位置已經超 出初始定義的游戲屏幕范圍,此時游戲狀態(tài)結束顯示 GAME_OVER。 游戲邏輯控制模塊 游戲邏輯控制模塊(TetrisCanvas 類) 。俄羅斯方塊游戲的邏輯控制和對 TetrisMap 類調 用 方 塊 繪 制 方 法 均 是 在 TeteisCanvas 類 中 實 現 的 , 它 繼 承 自 Canvas 類 , 實 現 了 CommandListener 和 Runnable 接口。 TetrisCanvas 類中首先定義看如下幾個成員變量來對本地玩家進行設置: 30 (1) static int mainWidth 本地玩家屏幕寬度; (2) static int mainHeight 本地玩家屏幕高度; (3) static int BRICK_WIDTH 本地玩家磚塊的邊長; (4) static int GAMEAREA_X 本地玩家游戲區(qū)域左上角 x 坐標; (5) static int GAMEAREA_Y 本地玩家游戲區(qū)域左上角 y 坐標; (6) int gameState 本地玩家的游戲狀態(tài)。 若連接游戲, 則在屏幕上還需繪制遠端玩家的游戲信息, 故需要設定遠端玩家的參數值, 他們的命令方法和代表本地玩家的成員變量類似,簡單的增加一個_Remote 后綴即可。對這 些成員變量的設置為: static int mainWidth_Remote 遠端玩家屏幕寬度; static int mainHeight_Remote 遠端玩家屏幕高度; static int BRICK_WIDTH_Remote 遠端玩家磚塊的邊長; static int GAMEAREA_X_Remote 遠端玩家游戲區(qū)域左上角 x 坐標; static int GAMEAREA_Y_Remote 遠端玩家游戲區(qū)域左上角 y 坐標; int gameState_Remote 遠端玩家的游戲狀態(tài)。 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 類的構造方法是將一個 Midlet 的實例并將 BluetoothConnection 數組傳入, 對其的定義如圖 13 所示。 32 public TetrisCanvas( MainMIDlet _midlet, BluetoothConnection[] btConns , String _role ) { midlet = _midlet。 btConnections = btConns。 role = _role。 (role)。 if( !( == role )) { setCanvas()。 setReceiveThread()。 }else { setSingleCanvas()。 } } 圖 13 TetrisCanvas 類的構造方法 由于游戲能夠實現 1 對 1 的游戲,所以 BluetoothConnection 數組長度為 1,_role 為本 地玩家所選擇的游戲方式,有 Master、Slave 和 Single 三種,它們由 包中的 Role 類定義,Role 類的定義如下圖 14 所示。 public class Role { public static final String ROLE_MASTER = Master 主機(互聯(lián)模式下)。 public static final String ROLE_SLAVE = Slave 遠端接入(互聯(lián)模式下)。 public static final String ROLE_SINGLE = Single 單人模式。 } 圖 14 游戲角色(Master、Slave 和 Single)選擇類定義 因為 TetrisCanvas 類實現了 Runnavle 接口,所以需定義 run()方法,用來調用 Canvas 的 paint()方法。Init()方法用來對代表本地玩家的游戲參數進行設定,initRemote()方法與它的功 能類似。由于玩家要對游戲進行控制,所以要對按鍵進行設置并控制其響應,按鍵響應在 TetrisCanvas 類實現父類的方法 keyPress()方法中實現。 若玩家進行聯(lián)網游戲時, 就需要進行數據的發(fā)送, 而本課題設定當在一定條件下才進行 數據發(fā)送,這幾種情況為: 按下命令按鈕引起游戲狀態(tài)的變化; 游戲過程中引起游戲狀態(tài)的變化; 游戲過程中失去連接時。 其中游戲過程中引起狀態(tài)的變化是指不論是否有行被消除, 只要有方塊落下固定在某個 位置,則本地玩家必須將地圖數據發(fā)送到遠端。mandAction()方法定義了響應命令引起 的狀態(tài)變化,需要將該信息發(fā)送給遠端玩家。在游戲中,響應玩家按鍵控制的信息,在屏幕 上的表現就是方塊的下降、旋轉、平移、消行等,這些狀態(tài)通過 paint()方法進行處理實現。 TetrisCanvas 類中的 serialize()方法用來將繼承了 Serialization 接口的 TetrisMap 對象序列 33 化數據傳輸到遠端用戶。 在 聯(lián) 機 游 戲 狀 態(tài) 下 , 不僅 要 發(fā) 送 本 地 游 戲 數 據, 還 要 接 受 遠 端 玩 家 游戲 數 據 , SetReceiveThread()方法是生成接受線程,接受遠端用戶的的命令信息及數據。 updataRemoteGameState()方法用來設置遠端用戶的 game_State_Remote 值。receivePN() 方 法 用 來 繪 制 附 屏 上 所 需 繪 制 方 塊 的 ID 值 , 在 TetrisCanvas 類 中 聲 明 一 個 布 爾 值 b_receivedPN(),用它來判斷是否收到新的 PN 值(判斷是否收到新的當前方塊和下一個方 塊的 ID 值,即遠端玩家的剛才控制的方塊位置已經固定,產生新的方塊) ,這個布爾值在 調用 paint_Remote 方法時要用到。PN 值用來設置 block_Remote 對象中的 pattern 和 next 方 塊的 ID 值。 receiveMapdata()用來接收遠端用戶發(fā)來的對方游戲過程中的地圖數據, 設置附屏上所需 要繪制的地圖數據,在 TetrisCanvas 類中聲明一個布爾值 b_receivedMapdata,用它來判斷是 否收到新的 Map 值(在 paint_Remote()方法中需要使用) ,Map 值在 map_Remote 中需要使 用,用它來設置其中的 mapdata 二維數組。 游戲地圖存儲模塊 游戲地圖存儲模塊(TetrisMap 類)提供了如下功能: (1) 通過 mapdata[][]和 mapBlockExist[]兩個數組提供了對游戲地圖在數組上的邏輯表 示; (2) 提供了對游戲地圖中對應方塊的消除和調整的算法; (3) 提供了對方塊的繪制方法 paint(),給 TetrisCanvas 類調用,把方塊繪制到屏幕上。 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[]兩個數組,mapdata 代表的 34 是地圖數據,而 mapBlockExist 中保存的是布爾值,如果 mapBlockExist[i]=true,則表示第 i+1 行有磚塊。 TetrisMap 類的構造方法如圖 16 所示。 public TetrisMap( TetrisCanvas canvas , boolean _isMaster) { = canvas。 //游戲地圖為一個高 1寬 12 的數組,mapBlockExist 代表一行 mapdata = new int[16][12]。 mapBlockExist = new boolean[16]。 setParameters(_isMaster)。 } 圖 16 TetrisMap 類的構造方法 在 TetrisMap 類的構造方法中可以看到,構造方法中指定 TetrisCanvas 對象和一個布爾 值_isMaster,判斷自身代表的是主屏還是附屏。TetrisMap 對象根據主、附屏的不同,在 SetParameters()方法中為 TetrisCanvas 對象賦值,賦予不同的參數。 Init()方法用來初始化 TetrisMap 實例中的 mapdata 和 mapBlockExist 數據。地圖數據的 提取與設置在 get()和 set()方法中定義。Paint()方法首先清屏(根據 TetrisMap 代表的是主屏 還是附屏來確定清除的區(qū)域) ,然后繪制非運動磚塊。Check()方法用來判斷是否需要消行, 若需要消行返回值為 true,若不需要消行則返回 fal
點擊復制文檔內容
黨政相關相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1