原文見:http://today.java.net/pub/a/today/2005/07/07/j2me3.html

          J2ME是一個很流行的用于移動設備游戲開發的平臺。J2ME中的MIDP 2.0引入了一個新的API包,它提供了一些定義好的游戲結構,這在以前的1.0版中要通過很多累贅代碼來實現。在這部分tutorial中,我們會學習這個API包,然后用它開發一個小游戲(為了學習需要,我們會用到包中所有的類)。這個包是javax.microedition.lcdui.game. 它的建立基于我們前兩次學的J2ME概念。

          J2ME游戲API:摘要
          javax.microedition.lcdui.game包只有5個類:GameCanvas, Layer, Sprite, TiledLayer和LayerManager. 這5個類提供了開發各種游戲應用的平臺。

          LayerSpriteTiledLayer的父類。這個類封裝了游戲中可視化元素的行為。可視化元素可以是小精靈(sprite),代表一個可以在屏幕上來回移動的獨立圖形(或組成動畫的一組圖形),
          或是一個背景層:通過很少的圖片,就可以生成龐大游戲中的背景。我們可以用Layer來布置圖形和進行可視化操作。Layer的子類通過重寫paint(Graphics g)方法將元素繪制到屏幕上。

          LayerManager類可以控制各層的繪制及繪制順序,因此我們可以更方便地管理游戲中的可視化元素(包括小精靈和背景層)。

          GameCanvas類擴展了上兩節我們講過的Canvas類(畫布),提供一個在屏幕后端運行(off-screen)的緩沖區,所有繪制操作都先在這個緩沖區上進行,然后再顯示到屏幕。它還提供了得到用戶按鍵信息的快捷方法。

          最好的學習方法應該是寫一個完整的小游戲,通過這個小游戲我們可以了解游戲制作的方方面面。我們在介紹完這個小游戲的構造后(針對目前還沒有游戲開發經驗的),會在開發游戲的過程中具體介紹包中的每個類。

          構建游戲的簡短入門

          游戲和動畫是建立在重復執行某段代碼的機制上的。這段代碼跟蹤實例變量的值,然后更新相應狀態。基于當前游戲狀態,代碼將游戲元素繪制到屏幕上。實例變量值是隨著用戶交互和游戲內部行為而改變的。

          代碼的重復執行是通過將這段代碼放入循環中實現的。在進入循環前,先檢查一下實例變量,看是否要繼續游戲,否則退出循環。為了控制實例變量的更新頻率(其實是屏幕刷新的頻率),循環體中的代碼應該每次休眠一段時間(毫秒計)。

          游戲的結構如下列代碼所示:

          // 主類
          public class MainClass 
          {
            
          private GameCanvas canvas = new MyGameCanvas();


            
          public MainClass() 
            
          {
              
          // 開始一個線程
              canvas.start();
            }

            
            
          // 其他代碼
          }



          // 實際進行繪制的類
          public class MyGameCanvas extends GameCanvas implements Runnable 
          {
            
          public MyGameCanvas() 
            
          {
              
          // 初始化
            }

            
            
          public void start() 
            
          {
              
          // 初始化
              
              
          // 執行繪制線程
              Thread runner = new Thread(this);
              runner.start();
            }

            
            
          private void run() 
            
          {
            
              
          // 或者使用(keeprunning = true) 
              
          // keeprunning是一個控制游戲狀態的實例變量

              
          while(true
              



                
          // 檢查游戲是否達到 
                
          // 某個邊界值或特殊條件
                
                verifyGameState(); 


                
          // 從用戶那里得到輸入,然后更新描述游戲元素狀態的變量值 
                
                  checkUserInput(); 


                
          // 使用Graphics對象將當前游戲狀態繪制到屏幕上

                updateGameScreen(getGraphics());


                
          // 控制屏幕更新的頻率 

                Thread.sleep(milliseconds); 
              }

            }

          }

           

          我們將在以下幾節中使用這個結構來開發一個游戲。



          版權所有 羅明
          posted on 2005-12-07 20:40 羅明 閱讀(1870) 評論(0)  編輯  收藏 所屬分類: JavaJ2ME
           
          主站蜘蛛池模板: 廉江市| 安福县| 新巴尔虎左旗| 江永县| 丰城市| 福贡县| 苏州市| 曲麻莱县| 莱芜市| 温州市| 廊坊市| 合川市| 罗田县| 湘潭县| 宜君县| 滨海县| 揭东县| 象州县| 沅陵县| 横峰县| 永安市| 松溪县| 贵德县| 亳州市| 寿阳县| 金坛市| 元阳县| 西林县| 寻乌县| 江津市| 阿克陶县| 深圳市| 都兰县| 朝阳区| 时尚| 双鸭山市| 柞水县| 观塘区| 车险| 华亭县| 秀山|