2010-10-21 39 views
22

我的基本目標是編寫一個.NET Kroz王國的翻拍版本。對於那些不熟悉遊戲:是否有任何用於.Net的控制檯「圖形」庫?

http://www.indiefaqs.com/index.php/Kingdom_of_Kroz

http://www.youtube.com/watch?v=cHwlNAFXpIw

本來就應該是一個快速分心項目給我所有的通用企業WCF休息/ WF/LINQ2SQL /等工作最近佔據我大部分時間的項目。雖然我的努力的結果是可玩的,但它看起來像絕對的屁股(即使是基於控制檯的遊戲),因爲我重繪了每一幀中的所有內容。

我知道一些替代方法,但在我做的簡短測試中,他們仍然沒有提供顯着的性能或美學效益。如果我可以幫忙的話,我不想訴諸「仿效」控制檯的圖書館。我更喜歡在正確的Win32控制檯API下工作,但如果可以幫忙的話,不要直接使用它。請記住,這是一個明顯的小生境用例,對此,最常見的「一般」方法是什麼?是否有任何特別優化的控制檯「繪圖」技術應該注意?我不介意在PInvoke和編組海洋中游泳,只要它仍然以快速,響應和高效的控制檯UI結束。

+4

請儘量避免評論或「答案」沿着「只使用適當的圖形模擬DOS顯示」或「爲什麼要麻煩」。這個項目的主要學習點是熟悉控制檯。 – nathanchere 2010-10-21 05:17:27

+1

我喜歡這個問題,我的直覺告訴我你必須使用Console.SetCursorPosition等自己編寫代碼:( – 2010-10-21 05:35:12

回答

6

http://msdn.microsoft.com/en-us/library/ms682073(v=VS.85).aspx

一些/許多這些功能,你可能需要使用的P/Invoke的,但他們應該做您的需要。你可以在緩衝區的任意位置寫入並獲得基於密鑰的非緩衝輸入。通常,您首先使用GetStdHandle()獲取控制檯輸入和輸出「流」的句柄,然後從上面的列表中調用其中一個適當的函數來執行某些操作,如WriteConsoleOutputCharacter()或PeekConsoleInput()。

我曾經寫過一個庫來創建一個使用Windows控制檯和C. Fun項目上的普通Win32的進程內窗口系統,但我不知道它現在在哪裏。

+0

這並不完全是我之後的事,但足以讓我開始爲自己編寫自己的包裝,沒有太多辛苦的工作,所以謝謝! – nathanchere 2010-10-31 03:27:58

+0

不幸的是,這就是你必須在Windows上使用控制檯「圖形」。 – siride 2010-10-31 16:53:12

12

你可以嘗試詛咒 - 夏普http://sourceforge.net/projects/curses-sharp/或libtcod https://bitbucket.org/libtcod/libtcod

詛咒銳是「一個全功能的,面向對象的,多平臺的C#包裝的詛咒終端控制庫。」

和libtcod是「...一款免費,快速,便攜和簡單的API,適用於roguelike開發人員,提供先進的真彩控制檯,輸入和大量常用於roguelikes的其他實用程序。」

+1

據我所知,前者不能與標準控制檯一起工作,後者不能甚至.Net在所有。 – nathanchere 2010-10-24 23:09:40

+1

你真的檢查出來嗎?http://doryen.eptalys。net/2010/08/libtcod-1-5-1b1-released /您可以在下載部分 – Vili 2010-10-25 05:42:38

+0

中獲得Windows/Linux32/OSX C#版本,但據我所知,它只是一個使用SDL/OpenGL模擬一個控制檯,C#部分只是一個包裝。我最好想使用(和/或擴展)標準的.Net控制檯。 – nathanchere 2010-10-25 21:17:21

-6

Brah,請查看pdcurses或ncurses庫。我在Visual C++中使用它,當您指定c#時,它可能對您有用。它用於控制檯遊戲,我在幾個項目中使用它。它將消除使用刷新屏幕的回調的需要,因爲您可以在不刷新屏幕的情況下移動字符(表示爲ASCII字符)。

+15

「Brah」?真? – Thomas 2014-02-08 22:24:34

相關問題