前言
我的上一篇也是第一篇文章《J2ME-MIDP1.0小游戲入門-五子棋》貼出以后,有好多的朋友發郵件、加QQ、加MSN和我聊有關J2ME的內容,我很開心也很感慨,開心并不是因為自己文章寫得如何如何而有很多人聯系我,而是有這么多的朋友在學J2ME,我原來以為現在已經沒有人再會聯系文章的作者,看來我錯了;感慨是因為,我知道我的第一篇文章其實很差的,從大家的反應,我能感覺出網上的原創資料的缺乏,官方或者書籍雖然權威且,但總感覺學的時候和實際的情況有點距離,我在看這些資料的時候,也經常會想,實際游戲開發公司里為怎么處理、會怎么寫這個代碼、程序的結構流程會怎么樣等等。原創文章的最大有點就是它包含了作者的經驗,實際開發中的經驗。介于大家對我的支持并且網上原創文章有限,我非常樂意繼續寫一些自己的經驗和技術,充實我們的中文資源。所以我接著寫了這篇文檔,文檔內容即程序的開發過程都是真實的,不是為寫文章而寫文章,完全是近一段時間里先完成的程序,現在再把它寫成教學文章。
愿大家學J順利,多多交流(MSN:yinowl@163.com QQ:47599318 E-mail:yinowl@163.com
注重
平臺:這個游戲我是在 Nokia 的平臺上設計的,也就是說使用了 FullCanvas 類以及針對Nokia-60系列(7650)的屏幕設計的,稍作修改就能運行在其他型號的手機上(我已經制作了 Siemens-C65 ,Nokia-7210 ,以及所有支持標準midp1.0/2.0、屏幕128 x 128的手機的幾個移植版本,有需要可以和我聯系)
代碼:同我的前一篇文章《J2ME-MIDP1.0小游戲入門-五子棋》一樣,代碼列出解釋的形式仿照《J2ME Game PRogramming》一書,按照程序功能思路給出相關代碼,一個文件的代碼會根據功能在不同的小節給出,文章結束了,代碼也就完整了。這不同于通常書中的代碼以文件為單位一次全部給出,我認為這樣更有助于讓大家了解一個程序從設計到最后完成的思路。
游戲介紹
掃雷這個游戲大家一定再熟悉不過了,但這個雙人掃雷游戲的掃雷新玩法大家可能就沒見過了,其實這就是MSN軟件中的一個網絡聯機小游戲,大家天天在使用MSN,但都很少注重或玩MSN中的游戲吧,可以說我就是把MSN上的聯機雙人掃雷移植到的手機上,一模一樣。假如你現在不方便上網或者沒有人和你聯機看一下這個游戲的界面和玩法,沒關系,我現在就來介紹一下,游戲區(雷區)中一共有 16 x 16 共256個格子,其中有52顆雷,操作除了上下左右鍵(當然電腦上是用鼠標點的)只需要一個挖雷鍵,你要做的是挖出雷,而不是用另一個鍵去標示雷。兩個玩家,一方開始挖雷,假如挖到(點到)雷,則加一分,沒挖到,就和經典的掃雷一樣,顯示這個位置四周一圈有幾個雷,假如一個雷都沒有,和經典的掃雷一樣,會把和這一格相連的所有四周沒有雷的格子和再外面一圈格子打開,然后另一位玩家挖雷,誰先挖到半數以上(大于26顆)的雷誰就獲勝,其實很簡單吧,游戲的界面如下:
游戲邏輯設計
數據結構:這個游戲屬于二維棋類游戲,所以我們自然而然想到設計一個 Bomb 類表示每一顆雷位,用一個Bomb類型的二維數組表示整個雷區的所有雷位,每一個雷位(即每一個Bomb實例)包含一個表示該雷位是否是雷的boolean類型的變量,一個表示該雷位是否已被挖的boolean類型的變量,一個表示是否是被玩家一挖的boolean類型的變量(否表示是被玩家二挖),一個表示該雷位四周八個雷位共有幾顆雷的int類型變量。這樣整個雷區的狀態就完全被描述出來了,然后就根據這個二維表來繪制游戲界面
游戲流程:整個游戲只使用唯一一個 FullCanvas 類,用唯一一個表示狀態的變量來控制整個游戲的狀態,整個游戲也只使用本身的唯一線程
玩家切換:用一個boolean類型的變量來表示當前執行的玩家,用游戲的外框顏色及右下角的旗子顏色來表示出來
接下來就開始具體介紹并列出游戲程序的各部分代碼,文章的結束,整個游戲也就完成了
新聞熱點
疑難解答