程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 用NetBeans平台開發J2ME游戲實例講解1

用NetBeans平台開發J2ME游戲實例講解1

編輯:JAVA編程入門知識
  1. 必須先安裝 NetBeans IDE 4.0 和 NetBeans Mobility Pack 4.0,然後才能開始進行 J2ME MIDP 開發。有關下載和安裝完整環境的說明,請參見 J2ME MIDP 開發下載頁面http://www.netbeans.org/kb/articles/mobility_zh_CN.Html。 2. 創建 MIDP 應用程序 創建新的 J2ME MIDP 項目
  
  2. 創建新的移動應用程序:
  
  (1).選擇“文件”>“新建項目”(Ctrl-Shift-N)。在“類別”下選擇“移動”。在“項目”下選擇“移動應用程序”,然後單擊“ 下一步”。
  
  (2). 在“項目名稱”下輸入 HuaRongDao。將項目主目錄更改為您系統上的任何目錄。從現在起,我們將該目錄稱為 $PROJECTHOME。
  
  (3). 不要選中“創建 HelloMIDlet”復選框。單擊“下一步”。  選CLDC1.0 MIDP1.0,
  
  (4). 將 J2ME Wireless Toolkit 作為選定的目標平台。
  
  (5). 單擊“完成”。IDE 將創建 $PROJECTHOME./HuaRongDao 項目文件夾。該項目文件夾包含所有的源和項目元數據,如項目 Ant 腳本。此時將在“項目”窗口中打開 HuaRongDao 項目。
  
  (6). 現在,我們來添加一個MIDlet, 右鍵單擊項目,選新建MIDlet,名字為HuaRongDao,不要寫package.點確定生成, 然後在生成後的 代碼裡加入CommandListener支持,代碼框架如下:
  
  /* * HuaRongDaoMidlet.Java *
  * Created on 2005年7月1日, 下午8:18
  */
  
  import javax.microedition.midlet.*;
  
  import javax.microedition.lcdui.*;
  
  /**
  
  *
  
  * @author lin
  
  * @version
  
  */
  
  public class HuaRongDaoMidlet extends MIDlet implements CommandListener{
  
  public void startApp() {
  
  }
  
  public void pauseApp() {
  
  }
  
  public void destroyApp(boolean unconditional) {
  
  }
  
  public void commandAction(Command c, Displayable d) {
  
  }
  
  3. 開始編碼
  
  (1)加入退出按鈕,這裡,我們用TextBox這種高級UI來做例子:
  
  public class HuaRongDaoMidlet extends MIDlet implements CommandListener{
  
  private Display display;
  
  private final static Command CMD_EXIT = new Command("退出", Command.EXIT, 1);
  
  public HuaRongDaoMidlet(){
  
  display = Display.getDisplay(this);
  
  }
  
  public void startApp() {
  
  TextBox t = new TextBox("TextBox的第一個參數","TextBox的第二個參數",256,0);
  
  t.addCommand(CMD_EXIT);
  
  t.setCommandListener(this);
  
  display.setCurrent(mainList);
  
  }
  
  ......
  
  public void commandAction(Command c, Displayable d) {
  
  if (c == CMD_EXIT) {
  
  destroyApp(false);
  
  notifyDestroyed();
  
  }
  
  }
  
  }
  
  注重:A.關於j2me的api函數,可以在WTK的docs目錄當中查到。
  
  B.我們使用的是MIDP1.0的函數,2.0支持游戲函數,但是大部分原先的手機都不支持。
  
  C.TextBox是可輸入框,有標題,缺省內容和內容長度等參數。
  
  (2)創建一個處理圖片的類Images, 處理圖片的方式在2.0當中有了很大的改進,可以直接從一張圖片中按照坐標取一部分,但是1.0
  
  還沒有這個功能,所以我們使用Image數組來實現。
  
  首先,我們先來顯示一個圖片,來熟悉一下有關image的操作。首先,加入一個Image和包含它的ImageItem,因為Image本身不能顯示,
  
  必須包在ImageItem中,然後創建一個Form,把ImageItem加到Form中,最後在屏幕上顯示這個Form。
  
  public void startApp() {
  
  Image a;
  
  ImageItem i;
  
  Form props = new Form("測試頁");
  
  try
  
  {
  
  a = Image.createImage("/Duke.png");
  
  i = new ImageItem("java吉祥物",a,ImageItem.LAYOUT_DEFAULT,"圖片無法顯示");
  
  props.append(i);
  
  }
  
  catch (IOException e)
  
  {
  
  a = null;
  
  }
  
  props.addCommand(CMD_EXIT);
  
  props.setCommandListener(this);
  
  display.setCurrent(props);
  
  }
  
  編譯運行一下,發現沒有圖片,說明或者是指定的圖片位置不對或者是系統沒有找到,其中,createImage()中的文件路徑是關於項目
  
  根目錄/res/的,沒有錯,因此是系統沒有找到res目錄。 File"HuaRongDao"property,選擇Libraries and Resources,把res的完
  
  全路徑加進去,再編譯就可以了。
  
  好了,測試成功了,現在可以開始編寫Images類,如下:
  
  import javax.microedition.lcdui.*;
  
  import javax.microedition.midlet.*;
  
  /**
  
  *
  
  * @author lin
  
  */
  
  public class Images {//保存常量
  
  //繪圖位置常量
  
  public static final int UNIT = 20;//方塊的單位長度
  
  public static final int LEFT = 20;//畫圖的左邊界頂點
  
  public static final int TOP = 22;//畫圖的上邊界頂點
  
  //地圖位置常量
  
  public static final int WIDTH = 4;//地圖的寬度
  
  public static final int HEIGHT = 5;//地圖的高度
  
  //地圖標記常量
  
  public static final byte CAOCAO = (byte) 'a'; //曹操的地圖標記
  
  public static final byte MACHAO = (byte) 'b';//馬超的地圖標記
  
  public static final byte HUANGZHONG = (byte) 'c';//黃忠的地圖標記
  
  public static final byte GUANYU = (byte) 'd';//關羽的地圖標記
  
  public static final byte ZHANGFEI = (byte) 'e';//張飛的地圖標記
  
  public static final byte ZHAOYUN = (byte) 'f';//趙雲的地圖標記
  
  public static final byte ZU = (byte) 'g';//卒的地圖標記
  
  public static final byte BLANK = (byte) 'h';//空白的地圖標記
  
  public static final byte CURSOR = (byte) 'i';//光標的地圖標記
  
  //地圖組合標記常量
  
  public static final byte DLEFT = (byte) '1'; //組合圖形左邊標記
  
  public static final byte DUP = (byte) '2'; //組合圖形上邊標記
  
  public static final byte DLEFTUP = (byte) '3'; //組合圖形左上標記
  
  //圖片常量
  
  //public static Image image_base;//基本圖片
  
  public static Image image_Zhaoyun;//趙雲的圖片
  
  public static Image image_Caocao;//曹操的圖片
  
  public static Image image_Huangzhong;//黃忠的圖片
  
  public static Image image_Machao;//馬超的圖片
  
  public static Image image_Guanyu;//關羽的圖片
  
  public static Image image_Zhangfei;//張飛的圖片
  
  public static Image image_Zu;//卒的圖片
  
  public static Image image_Blank;//空白的圖片
  
  public static Image image_Frame;//游戲框架的圖片
  
  public Images() {//構造函數
  
  }
  
  public static boolean init() {//初始化游戲中用到的圖片
  
  try {
  
  /*   以下的實現都是基於MIDP2.0的,我們在程序中采用的是基於MIDP1.0的實現
  
  image_base = Image.createImage("/huarongroad/BITBACK.png");
  
  image_Frame = Image.createImage(image_base, 126, 0, 145, 177,Sprite.TRANS_NONE);
  
  //Sprite類是用來翻轉圖片的,是MIDP2.0新新增加的支持游戲的特性
  
  image_Zhaoyun = Image.createImage(image_base, 0, 0, UNIT, 2 * UNIT,Sprite.TRANS_NONE);
  
  image_Caocao = Image.createImage(image_base, UNIT, 0, 2 * UNIT,2 * UNIT, Sprite.TRANS_NONE);
  
  image_Huangzhong = Image.createImage(image_base, 3 * UNIT, 0, UNIT,2 * UNIT,Sprite.TRANS_NONE);
  
  image_Machao = Image.createImage(image_base, 0, 2 * UNIT, UNIT,2 * UNIT,Sprite.TRANS_NONE);
  
  image_Guanyu = Image.createImage(image_base, UNIT, 2 * UNIT,2 * UNIT, UNIT,Sprite.TRANS_NONE);
  
  image_Zhangfei = Image.createImage(image_base, 3 * UNIT, 2 * UNIT,UNIT, 2 * UNIT,Sprite.TRANS_NONE);
  
  image_Zu = Image.createImage(image_base, 0, 4 * UNIT, UNIT, UNIT,Sprite.TRANS_NONE);
  
  image_Blank = Image.createImage(image_base, 1 * UNIT, 4 * UNIT,UNIT,UNIT,Sprite.TRANS_NONE);
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved