該程序是基於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方法的時候不是很方便,這個卡魯瓦貌似沒能解決調用多個方法的問題,害得我只好自己增加了個方法標識
- --J2ME方法ID
- METHOD_ID_drawLine = 10,
- METHOD_ID_drawString= 11,
- METHOD_ID_fillRect = 12,
- METHOD_ID_drawRect = 13,
- METHOD_ID_translate = 14,
--後面的drawLine,drawString,就對應 J2ME工程裏的Tool.java類的方法了!
這個方塊程序 現在沒有全部移植完,我就沒時間搞了,實現了方塊的繪製,方塊變形,等
如果你有時間可以參考我的http://blog.csdn.net/kome2000/article/details/4183199
工程代碼 把這個LUA程序移植玩吧!:)