JAVA遊戲編程之三----j2me 手機遊戲入門開發--俄羅斯方塊_5_使用LUA腳本寫遊戲

 該程序是基於07年底寫的一個J2ME小遊戲 俄羅斯方塊,將全部邏輯繪製都放到LUA腳本里來做,J2ME方面僅作一個繪製庫來使用!

建立J2ME程序這裏就不說了,

詳見我的BLOG

http://blog.csdn.net/kome2000/article/details/4183199

 

由於J2ME代碼比較少就全貼出來了!

midlet類就不貼了,這個BLog字符限制,可以參考別的代碼

比如

http://kome2000.blog.51cto.com/969562/578555

他們的MIDlet是一樣的!

主遊戲控制類

汗!這個BLOG有字符限制,不能貼代碼了

詳見

http://blog.csdn.net/kome2000/article/details/7728959

或者到工程包裏找 cGame.java吧!

 

這個類裏使用的LUA接口稍後再說,先把代碼貼完

還有一個 工具類,主要是提供了一些LUA使用的繪圖函數庫,就是包裝一下GRAPHICS類的某些方法,僅自己使用到的,如果你喜歡可以封裝更多:)

汗!這個BLOG有字符限制,不能貼代碼了

詳見

http://blog.csdn.net/kome2000/article/details/7728959

或者到工程包裏找 Tool.java吧!

 

 

看了工程包裏的代碼及資源目錄,你一定看到了

org.luaj.kahluafork.compiler

se.krka.kahlua

這2個包,沒錯這就是 kahlua 卡魯瓦,一個J2ME上LUA的實現!遺憾的是,最新版本也是09年06月的!*_*!

 

什麼是Kahlua(卡魯瓦)?

中文名字念着還是比較順口的,簡單的說,kahlua是一款基於CLDC1.1且非常小巧的Lua解釋器,它很容易擴展。只需要配合一個Lua編譯器,就可以執行編譯後的Lua源代碼。目前新版本已經帶了編譯器。

J2me平臺的lua解釋器主要有mochalua和Kahlua,mochalua在08年中期後就沒有人在維護和更新了,Kahlua最新版本是2009年6月11日的,本次示例就以該版本爲基礎。

 

Kahlua和Mochalua的區別?

Mochalua是一個目標儘可能完整實現Lua C功能的解釋器,而Kahlua目標是實現LUA JVM最小功能集合的解釋器,並且Kahlua在不增加額外開銷的情況下,儘可能的模擬實現更多的Lua原版的庫函數。所以兩者的目標是不同的,一個是儘可能完整,一個是儘可能精簡到夠用。 畢竟Mochalua原先是給一個GPS項目移植平臺使用的,是由一個公司開發的。

Kahlua的目標是jar儘可能的小,只包含核心功能的jar文件爲56KB,Mochalua則有200多KB,對於java遊戲而言,當然Jar越小越好。Kahlua的代碼也非常輕量級,原先的版本只有4605行代碼,而Mochalua有16951行代碼。所以對比後,哪個更適合你,你可以根據情況決定了!!

 

下載Kahlua

最新版的源代碼下載地址: http://kahlua.googlecode.com/files/kahlua-release-20090611.zip

二進制庫地址: http://kahlua.googlecode.com/files/kahlua.jar

 

 

下載好後要解壓kahlua-release-20090611.zip,使用src裏的代碼全部COPY 到你的SRC目錄下

就有

org.luaj.kahluafork.compiler

se.krka.kahlua

這2個包了!

kahlua-release-20090611.zip\resources\stdlib.lua 這個文件也是我們需要的!但遺憾的是這個是源碼放到工程裏J2ME不認啊!:(

需要使用LUAC將這個 stdlib.lua 編譯成 stdlib.lbc文件

編譯方法很簡單,如圖

什麼?你的LUAC是 非內部命令?那是你沒LUA環境,

命令是luac -o stdlib.lbc d:\stdlib.lua

路徑我就不詳細說了!你懂得 羨慕

 

OK,現在說一下我的 game.lua吧!

這個就是全部的遊戲邏輯及繪製了,還有鍵盤事件偶!

 

汗!這個BLOG有字符限制,不能貼LUA的代碼了

詳見

http://blog.csdn.net/kome2000/article/details/7728959

或者到工程包裏找 game.lua吧!

 

工程裏其他文件可以忽略了!有些是測試用的垃圾代碼

本來想用require "constDB" 導入其他LUA文件,但沒成功!你試試吧!

另外lua調用J2ME方法的時候不是很方便,這個卡魯瓦貌似沒能解決調用多個方法的問題,害得我只好自己增加了個方法標識

  1. --J2ME方法ID  
  2. METHOD_ID_drawLine  = 10,  
  3. METHOD_ID_drawString= 11,  
  4. METHOD_ID_fillRect  = 12,  
  5. METHOD_ID_drawRect  = 13,  
  6. METHOD_ID_translate = 14,  
    --後面的drawLine,drawString,就對應 J2ME工程裏的Tool.java類的方法了!

這個方塊程序 現在沒有全部移植完,我就沒時間搞了,實現了方塊的繪製,方塊變形,等

如果你有時間可以參考我的http://blog.csdn.net/kome2000/article/details/4183199

工程代碼 把這個LUA程序移植玩吧!:)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章