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

J2ME游戲開發實例講解

編輯:JAVA編程入門知識

  一、序言
  
  昨天在網上閒逛,發現一篇講解用Delphi實現華容道游戲的文章,頗受啟發.於是,產生了將華容道游戲移植到手機中去的沖動.現在手機游戲琳琅滿目,不一而足,華容道的實現版本也很多.正巧不久前筆者對J2ME下了一番功夫,正想借這個機會小試牛刀。選用J2ME的原因還有一個就是目前Java開發大行其到,無線增殖業務迅猛發展,J2ME的應用日漸活躍起來,也希望我的這篇文章能夠為J2ME知識的普及和開發團隊的壯大推波助瀾。由於長期受ISO規范的影響,這次小試牛刀我也打算遵照軟件工程的要求,並采取瀑布式的開發模式來規劃項目,也希望借此機會向各位沒有機會參與正式項目開發的讀者介紹一下軟件開發的流程。
  
  這裡我們先定義項目組的人員體制(其實只有我一個人):技術調研、需求分析、概要設計、具體設計、編碼、測試均有筆者一人擔任;美工這裡我找了個捷徑,盜用網上現成的圖片,然後用ACDSee把它由BMP轉換成PNG格式(我出於講座的目的,未做商業應用,應該不算侵權吧);至於發布工作,由於缺少OTA服務器,此項工作不做(但是我會介紹這步如何做)。
  
  接下來,我們規劃一下項目實現的時間表,以我個人經驗,設想如下:技術調研用2天(這部分解決項目的可行性和重大技術問題,時間會長一些),需求分析用半天(究竟有現成的東東可以參照,只要理清思路就行了,況且還有很多以前用過的設計模式和寫好的代碼),概要設計再用半天(有了需求,概要只不夠是照方抓藥),具體設計要用2天(這一步要把所有的問題想清楚,還要盡可能的准確描述出來),編碼用2天(其實1天就夠了,技術已經不是問題,多計劃出一天來應付突發事件),測試用2天(測試應該至少占全部項目的四分之一,不過這個項目只是一個Demo,也太簡單了),發布也要用上半天(盡管我們不去實際發布它,但是還要花點時間搞清楚應該如何做),最後就是項目總結和開慶功會(時間待定)。
  
  二.利其器
  
  “公欲善其事,必先利其器”,做項目之前第一步是前期調研.我們要做的華容道這個東東隨處可見,我們要調研的是兩個方面:
  
  1、游戲的內容:游戲本身很簡單,就是有幾個格子,曹操占據其中一個較大的格子,然後被幾個格子包圍,這些格子外形不一定相同,但是擋住了曹操移動的方向.游戲者需要挪動這些格子最終把曹操移動到一個指定的位置才算是過關.更具體的分析我們放在後面需求分析和概要設計中討論。
  
  2、技術儲備:談到技術,這裡簡單介紹一下J2ME.Java有三個版本,分別是J2ME(微型版).J2SE(標准版).J2EE(企業版).J2ME是一個標准,采用3層結構設計.最低層是配置層(Configuration)也就是設備層,其上是簡表層(Profile),再上是應用層(Application).MIDP就是移動信息設備簡表,目前主流手機支持MIDP1.0,最新的是MIDP2.0,它比前一個版本增加了對游戲的支持,在javax.microedition.lcdui.game包中提供了一些類來處理游戲中的技術,比如我們後面會用到的Sprite類,它是用來翻轉圖片的.權衡再三,筆者決定使用MIDP2.0來做開發.首先需要安裝一個J2ME的模擬器,我們就用Sun公司的WTK2.0,我覺得Sun的東西最權威.當然你也可以使用Nokia.Siemens或是Motolora等其他模擬器,但是他們的JDK不盡相同,寫出來的程序移植是比較麻煩的.Sun公司的WTK2.0可以到<A href="http://here/下">http://here/下</A>載,當然要想成功下載的前提是你要先注冊成為Sun的會員(其實這樣對你是有好處的).當下來之後就是按照提示一步一步的安裝.安裝好了之後,我們用一個"Hello World"程序開始你的J2ME之旅.我們啟動WTK2.0工具集中的KToolBar,然後點擊New Project按鈕,在彈出的輸入框中輸入Project Name為HelloWorld,MIDlet Class Name為Hello,然後點擊Create Project,開始生成項目,工具會彈出MIDP配置簡表,這裡接受生成的默認值(以後還可以修改)點擊OK,工具提示我們把寫好的Java源程序放到[WTK_HOME]appsHelloWorldsrc目錄之下.我們編輯如下代碼,並保存在上述目錄之下,文件名為Hello.java。
  
   import javax.microedition.midlet.*;
  import javax.microedition.lcdui.*;
  public class Hello extends MIDlet
  {
  private Display display;
  public Hello(){
  display =Display.getDisplay(this);
  }
  public void startApp(){
  TextBox t = new TextBox("Hello","Hello",256,0);
  display.setCurrent(t);
  }
  public void pauseApp(){
  }
  public void destroyApp(boolean unconditional){
  }
  }
  保存好了之後,點擊Build按鈕,工具會為你編譯程序,如無意外再點擊Run按鈕,會彈出一個手機界面,剩下的就不用我教了吧(用鼠標對手機按鍵一頓狂點)。呵呵,你的第一個J2ME程序已經OK了.什麼?你還一點都沒懂呢(真是厲害,不懂都能寫出J2ME程序來,果然是高手).我這裡主要是介紹WTK2.0工具的使用,程序並不是目的,不懂的話後面還會有具體的解說,這裡只是帶你上路.什麼?你不懂Java!那也沒有關系,後面我再講得細一點。
  跳過J2ME,我們先來講點游戲的理論.具體到華容道這個游戲,主要有三個方面,貼圖.游戲操作.邏輯判定.這裡講講貼圖,其他兩方面放在概要設計和具體設計裡講.所謂的貼圖,其實就是畫圖,就是在要顯示圖形的位置上輸出一副圖片,(要是牽扯到動畫就要麻煩一些,可以使用TimerTask.Thread或Rannable之類的技術),這副圖片可以是事先預備好的也可以是臨時處理的.在J2ME中有一個Image類,專門用於治理圖片,它有createImage()方法,可以直接讀取圖片文件(J2ME只支持PNG格式的圖片),也可以截取已有的圖片的一部分(這樣我們可以把很多圖片放在一起,然後一張一張的截下來,好處是節省存儲空間和文件讀取時間,對於手機這兩者都是性能的瓶頸).J2ME還有一個Graphics類,專門用於繪圖,它有drawImage()方法,可以把一副圖片在指定的位置上顯示出來,它還有drawRect()方法和setColor()方法,這兩個方法在後面我們進行游戲操作時就會用到,這裡先交代一下.有了圖片和繪圖的方法,還需要知道把圖畫到誰身上,J2ME提供了一個Canvas類,字面意思就是畫布,它有一個paint()方法用於刷新頁面,還有一個repaint()方法用於調用paint()方法.聽著有些糊塗是吧,不要緊,我來結合具體程序講解一下.為了今後編程的方便,我們創建兩個類Images和Draw,Images用於保存一些常量值和圖片,Draw主要是用於畫圖,這兩個類的源代碼如下。
  
  Images類的源代碼如下:
  
   package huarongroad;

  
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved