2012-04-03 50 views
0

我正在研究一個遊戲機器人。我想在那裏放置一些像腳本的東西,我的程序正在從遊戲的內存中讀取所有需要的東西,並且我擁有所有的遊戲對象。我想添加一些東西給我的程序,允許用戶製作自己的腳本。有沒有辦法將compilator放在程序中?

例如。

foreach (character ch in characters_on_screen) 
{ 
if (ch.burning()) {game_say("burning!");} 
} 

我真的不知道,如果這是很難做,這就是爲什麼我在這裏寫:P,我在C#和編劇語言犯規的工作真的很重要,我認爲,怎麼把所有的遊戲腳本不會很難我想 那麼最簡單的方法是什麼? (如果有的話) 謝謝:)

p.s. 我也想知道是否有一種方法來禁用幾個功能,如創建文件等。

回答

1

您還可以在運行時上獲得C#編譯器編譯C#代碼。查看Microsoft.CSharp命名空間中的運行時編譯類。

還有一個教程here

這樣你可以嘗試對輸入進行調整,如果你願意的話;它只需要字符串。以及施加諸如實現接口的限制。

+0

謝謝,你的答案似乎是最簡單的,這就是我一直在尋找的,即時新手:P :) – Patryk 2012-04-03 06:51:28

1

我會用JavaScript去的。它更安全(例如沒有文件系統訪問)並且易於編寫。 JavaScript .NET是V8引擎的一個很好的包裝。

還有可用於託管實現的IActiveScript任何基於COM的腳本語言的IActiveScript COM接口(例如VBScript中,JScript的[兩舊5.x和較新的9.x {脈輪}])

+0

可以給我任何鏈接? :F:P是免費的商業用途? – Patryk 2012-04-03 06:28:12

+1

很容易問谷歌它,我敢肯定項目頁面將列出其許可要求。 – 2012-04-03 14:21:09

2

你可以選擇幾種選擇。

  1. 如果你想創建一個真正專用的腳本語言,你基本上必須實現一個。這將需要創建語義,詞法,語法分析器,將您的字符串輸入轉換爲委託鏈。
  2. 你想創建一個真正專業的語言沒有大驚小怪,你可以搜索現有的框架。您可以使用現有的編程語言來描述操作,如C#(並使用Roslyn編譯器),FreePascal,JS,Python/Ruby(並使用DLR腳本引擎來執行ruby/python代碼)。

我會親自去用python/ruby​​實現。它們是動態語言,具有足夠的功能和能力來定製成特定的語言。

你可能也想看看下面的SO帖子:thisthis

相關問題