国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

控制臺游戲引擎CGE——貪吃蛇

2019-11-17 03:23:34
字體:
來源:轉載
供稿:網友

控制臺游戲引擎CGE——貪吃蛇

今天我也來發一個控制臺游戲。先看圖:

緣起

LZ是一個有嚴重拖延癥的人,表現的形式就是隔一段時間就要刷一刷博客園。

這不前幾天,看到了魏大師《使用Lua腳本語言開發出高擴展性的系統...》。

LZ對不了解的東西有強迫癥,Lua是什么東西,自然是不能放過,要了解一番的。

一番了解下來,好東西啊。最近又比較閑,做個什么東西來練練手吧。

于是又在博客園中,翻到這么一篇《一個控制臺小游戲(求點評)》,于是又勾起了我對那個控制臺游戲的回憶。點擊這里看前輩的作品。

動手

說做就做,總體框架很簡單:

用 C#做游戲引擎,用lua開發游戲,C#與Lua之間的交互,則用LuaInterface。

游戲引擎:

  解決渲染問題(在控制臺上畫點、畫線、畫框等)

  響應用戶的鍵盤輸入(用戶要按鍵控制游戲)

也是Lua的一個宿主(Lua只是一種語言,不能生成exe一樣的宿主)

渲染

通過導出lua函數,使得lua可以調用C#中的函數

lua.RegisterFunction(m.Name, null, m);

實現了如下函數:

可以在控制臺指定的位置、使用指定的顏色,進行畫點、畫矩形、畫文字、填充矩形

響應用戶輸入

用戶輸入,主要響應了按鍵輸入,鼠標輸入暫時不支持

        public static void keyPRess(string key){            if(lua==null) return;                        LuaFunction func = lua.GetFunction("keypress");            if(func != null)            {                func.Call(key);            }                        }

需要在lua中定義一個"keypress"的函數,當捕獲到用戶有按鍵輸入之后,回調該函數

Lua部分

就是實現貪吃蛇,見entry.lua,因為在Program.cs中是調用entry.lua作為入口

lua.DoFile("entry.lua");

重點有以下幾個函數

function gameInit()

gameInit 游戲開始后,C#回調這個函數

function gameLoop()

gameLoop 這是一個定時刷新界面的游戲,所以當時間到了之后,C#回調gameLoop,實現重新繪制等操作

感悟

大概花了2天時間寫的,lua是入門,C#的控制臺部分則主要參考了《控制臺小游戲》的實現。

主要目的是學習了C#和lua交互,將來也可以這樣,把靈活多變的地方放到lua腳本里來實現。

下載

代碼以及可執行文件


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嵊泗县| 万全县| 博乐市| 承德市| 门头沟区| 三台县| 通山县| 巴楚县| 九龙坡区| 红安县| 阜南县| 株洲市| 株洲县| 石城县| 萝北县| 秦皇岛市| 呼伦贝尔市| 玉门市| 九寨沟县| 金川县| 武安市| 建水县| 沧源| 太康县| 斗六市| 尖扎县| 牡丹江市| 巴林右旗| 泌阳县| 孙吴县| 中牟县| 绩溪县| 博兴县| 滨海县| 江川县| 曲周县| 棋牌| 大悟县| 武冈市| 安康市| 叶城县|