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]/apps/HelloWorld/src目錄之下.我們編輯如下代碼,并保存在上述目錄之下,文件名為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主要是用于畫圖,這兩個類的源代碼如下。