程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 控制台游戲引擎CGE——貪吃蛇

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

編輯:C#入門知識

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

 

緣起

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

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

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

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

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

 

動手

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

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

游戲引擎:

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

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

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

 渲染

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

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

實現了如下函數:

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

響應用戶輸入

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

           keypress((lua==) = lua.GetFunction((func != 

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

 

Lua部分

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

lua.DoFile("entry.lua");

重點有以下幾個函數

function gameInit()	

function gameLoop()

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

 

感悟

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

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

 

 

下載

代碼以及可執行文件

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved