作者:yinowl
2005年1月
介紹
這是我學習j2me入門后的第一個作品,當然這也是一個極其簡單的作品(沒有電腦AI,只能是兩個人對戰),現在我把當時的設計思路寫成這篇文檔,希望對想入門j2me的朋友在j2me的流程,按鍵響應,繪圖等方面有所幫助,同時也希望大家指出錯誤和改進程序。
注重
代碼列出解釋的形式仿照《J2ME Game PRogramming》一書,按照程序功能思路給出相關代碼,一個文件的代碼會根據功能在不同的小節給出,文章結束了,代碼也就完整了。這不同于通常書中的代碼以文件為單位一次全部給出,我認為這樣更有助于讓大家了解一個程序從設計到最后完成的思路。
設計
數據結構:由于五子棋是一個二維棋類游戲,所有首先想到的是定義一個Chesses類來表示棋子,Chesses有一個boolean型的變量isPlayer1來區分該棋子是哪玩家下的,然后用一個Chess類型的二維數組來包含棋盤上的所有棋子。考慮到移動設備的資源有限,盡可能減少系統資源占用,我考慮不在數組建立后直接生成數組的每一個對象,而是把每一個棋子對象(Chesses)放在游戲的進行中生成,也就是說在游戲進行時,玩家每下一步棋,在數組相應位置生成該棋子的對象,這樣可以避免還沒有下的棋子在一開始就占用了系統內存
流程:游戲按照棋子的二維數組進行繪制棋子,玩家下棋后,程序修改數組相應位置,設置isPlayer1值,然后重新繪制(repaint),就更新了棋盤界面。由于游戲的功能簡單,也為了使游戲的操作盡可能的簡便,我不在游戲進入時設計菜單,而是直接開始對戰,在對戰界面,設置了重新開始和退出的按鈕。即運行即玩,一鍵開始,一鍵重來,一鍵退出。
玩家切換:棋類游戲有一個問題需要注重,就是提示當前由哪方下棋,為了節省界面空間,簡化游戲界面,我在棋盤外圍加了一個3個像素寬的框,框的顏色就是當前下棋方的顏色,如圖:

應用程序類:Gobang.java
接下來就開始完成游戲中的每一個類,首先就是一個MIDlet類。Gobang類繼續自MIDlet類,用于連接設備的應用程序治理器(application Manager),通過方法startApp,pauseApp,destroyApp來通知游戲的開始,暫停和銷毀結束。源代碼如下:
package com.occo.j2me.game.gobang;
import javax.microedition.lcdui.Display;import javax.microedition.midlet.MIDlet;
public class Gobang extends MIDlet {GobangCanvas gobang;//定義游戲界面的Canvas類GobangCanvas的對象gobang
public Gobang() { super(); gobang=new GobangCanvas(this);//生成GobangCanvas類的對象gobang } protected void startApp(){ Display.getDisplay(this).setCurrent(gobang); //在屏幕上繪出游戲見面gobang } protected void pauseApp(){
新聞熱點
疑難解答