【正文】
o m m a n d L i s t e n e rj a v a . i oI O E x c e p t i o n 紅河學(xué)院本科畢業(yè)論文 (設(shè)計 ) 15 private About about。 //游戲幫助表單 private Display display。 //表單 private Image imgSplash。 //退出游戲軟件 private Command CMD_GO。 //游戲設(shè)置軟件 private Command CMD_ABOUT。 //游戲關(guān)于軟件 public GobangMIDlet() { display = (this)。 try { imgSplash = (/主屏 .png)。 } (imgSplash)。 CMD_GO = new Command(開局 , 1, 2)。 CMD_ABOUT = new Command(關(guān)于 , 3, 5)。 (CMD_GO)。 //添加游戲設(shè)置軟件到主表單 (CMD_ABOUT)。 //添加游戲幫助軟件到主表單 (CMD_EXIT)。 //監(jiān)聽鍵盤事件 第四章 詳細(xì)設(shè)計與實現(xiàn) 16 gameCanvas = new GobangCanvas(this)。 //創(chuàng)建游戲設(shè)置表單 about = new About(this)。 //創(chuàng)建游戲幫助表單 } 鍵盤事件 處理 mandAction()方法處理各種 鍵盤 事件 ,包括開局、顯示設(shè)置等。 notifyDestroyed()。 //顯示游戲畫布 ((), (), ())。 //新開局 } else if(c == CMD_SETTING) //顯示 游戲設(shè)置表單 (())。 else if(c == CMD_HELP) //顯示游戲幫助表單 (())。具體代碼如下: public void eBack() //從其他界面切換到主表單 { (form)。 } public void pauseApp() { } public void destroyApp(boolean arg0) { } 游戲幫助和 介紹 表單類的實現(xiàn) 游戲幫助和關(guān)于表單是將游戲的幫助信息、關(guān)于信息傳遞給玩家。 圖 42 Help 類的構(gòu)造函數(shù)圖 圖 43 About 類的構(gòu)造函數(shù)圖 游戲幫助表單 的實現(xiàn)比較簡單,代碼如下: import .*。 import 。 j a v a x . m i c r o e d i t i o n . l c d u iD i s p l a y a b l e+ c o m m a n d A c t i o n ( )+ g e t F o r m ( ) C M D _ O K f o r m m i d l e tH e l p D e f a u l t P a c k a g e j a v a x . m i c r o e d i t i o n . l c d u iC o m m a n dF o r mj a v a . m i c r o e d i t i o n . l c d u iC o m m a n d L i s t e n e rj a v a . l a n gS t r i n g D e f a u l t P a c k a g e G o b a n g M I D l e tj a v a . l a n gO b j e c t + c o m m a n d A c t i o n ( )+ g e t F o r m ( ) C M D _ O K f o r m m i d l e tA b o u t D e f a u l t P a c k a g e j a v a x . m i c r o e d i t i o n . l c d u iD i s p l a y a b l ej a v a . m i c r o e d i t i o n . l c d u iC o m m a n d L i s t e n e rj a v a . l a n gS t r i n gj a v a . l a n gO b j e c tj a v a x . m i c r o e d i t i o n . l c d u iC o m m a n d F o r m D e f a u l t P a c k a g e G o b a n g M I D l e t 第四章 詳細(xì)設(shè)計與實現(xiàn) 18 public class Help implements CommandListener { private GobangMIDlet midlet。 //游戲介紹表單 private Command CMD_OK。 form = new Form(游戲幫助 )。 +五子棋在日本叫“連珠棋”。 \n\n +五子棋的棋盤 :\n\n—— 棋盤正中一點為“天元”。棋盤左右最外邊的兩條縱線稱邊線。天元和星應(yīng)在棋盤上用小圓點標(biāo)出。橫行線從遠(yuǎn)到近用阿拉伯?dāng)?shù)字 115 標(biāo)記。 \n\n +比賽規(guī)則如下: \n\n +〖 1〗黑先、白后,從天元開始相互順序落子; \n +〖 2〗最先在棋盤橫向、縱向或斜向形成連續(xù)的同色五個棋子的一方為勝 。黑棋禁手有“三、三”、“四、四”和“長連” ,包括“四、三 、三”和“四、四、三”。若白方未發(fā)現(xiàn)或發(fā)現(xiàn)后不立即指出,反而繼續(xù)落子,則禁手失效,不再判黑方負(fù)。 //添加游戲常識介紹和基本教程 CMD_OK = new Command(確定 , 4, 2)。 //在表單中添加確認(rèn)軟件 (this)。 } } public Form getForm() //返回表單對象 { return form。 游戲設(shè)置類的實現(xiàn) 游戲設(shè)置表單用來對游戲參數(shù)進(jìn)行設(shè)置,包括棋盤大小、先手選擇、智能級別。 Setting 類的 UML 圖如圖 44所示。棋盤的最小值為 10,而 Gauge 組件的最小值為 0,所以當(dāng)前的 Gauge 值需要加上 10 才是當(dāng)前棋盤大小。 //創(chuàng)建參數(shù)設(shè)置表單并添加標(biāo) gaugeSize = new Gauge(棋盤規(guī)格 : + boardSize + X + boardSize, true, 10, boardSize 10)。 在 Gauge 交互模式下可以為 Gauge 對象所在的表單對象綁定一個ItemStateListener 事件監(jiān)聽器,并在監(jiān)聽器上捕捉 Gauge 對象的事件,當(dāng) Gauge的值發(fā)生變化時就會觸發(fā)事件。其代碼如下: public void itemStateChanged(Item item) { if(item == gaugeSize) //當(dāng) Gauge 組件發(fā)生變化時 { int bs = () + 10。 //改變 Gauge 組件的標(biāo)簽 } } 先手選擇 選擇先手和難度等級用 ChoiceGroup 組件來實現(xiàn)。創(chuàng)建好選擇組件后,逐條添加選項元素。 紅河學(xué)院本科畢業(yè)論文 (設(shè)計 ) 21 對于多選類型的 ChoiceGroup,還可以設(shè)置個別選項的選擇狀態(tài)。 //在默認(rèn)情況下為計算機先行 choiceFirst = new ChoiceGroup(null, 2)。 //添加選項元素 (0, ComputerFirst)。 //將多選框添加到主表單中 難度選擇 游戲的難易程度根據(jù)計算機的智能級別來控制,創(chuàng)建及添加選項的方法和復(fù)選框一樣,所不同的是在創(chuàng)建 ChoiceGroup 對象時,類型設(shè)置為 1(單選)。 游戲共有 3個難度級別,分別是:拜師學(xué)藝、棋行天下、誰與爭鋒(此游戲中并未作出區(qū)分),初始情況下為拜師學(xué)藝,該選項的索引值為 0。 //默認(rèn)情況下的難度級別 choicelevel = new ChoiceGroup(電腦智能級別 :, 1)。 //難度 1 (棋行天下 , null)。 //難度 3 (level1 , true)。 //將選項組添加到主表單中 游戲設(shè)置選項表單還有兩個 Command 對象,分別用于玩家卻熱和取消, 所以表單需要監(jiān)聽 鍵盤事件 和組件事件: 第四章 詳細(xì)設(shè)計與實現(xiàn) 22 public class Setting implements CommandListener, ItemStateListener 創(chuàng)建設(shè)置表單 整個創(chuàng)建游戲設(shè)置表單的代碼如下: private GobangMIDlet midlet。 //游戲設(shè)置表單對象 private Command CMD_OK。 //取消軟件 private Gauge gaugeSize。 //電腦先行復(fù)選框 private ChoiceGroup choiceMusic。 //難度選擇單選框 private int boardSize。 //是否電腦先行 private boolean MusicOn。 //難度級別 public Setting(GobangMIDlet m) { boardSize = 15。 //在默認(rèn)情況下為計算機先行 MusicOn = false。 //默認(rèn)情況下的難度級別 midlet = m。 //加載 rms 存儲文件 form = new Form(游戲設(shè)置 )。 //棋盤規(guī)格 (gaugeSize)。 //創(chuàng)建復(fù)選框 (電腦先手 , null)。 //設(shè)置多選框的默認(rèn)狀態(tài) 紅河學(xué)院本科畢業(yè)論文 (設(shè)計 ) 23 (choiceFirst)。 //創(chuàng)建復(fù)選框 (背景音樂 , n