.Net是否有任何控制台“图形”库?

时间:2010-10-21 05:15:59

标签: c# .net vb.net graphics console

我的基本目标是编写一个针对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结束。

3 个答案:

答案 0 :(得分:13)

你可以试试Curses-Sharp http://sourceforge.net/projects/curses-sharp/或libtcod https://bitbucket.org/libtcod/libtcod

curses-sharp是一个“功能全面,面向对象,多平台的C#封装器,用于curses终端控制库。”

和libtcod是“...一个免费的,快速的,可移植的,简单的roguelike开发人员API,提供先进的真彩色控制台,输入和roguelike中经常使用的许多其他工具。”

答案 1 :(得分:6)

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

您可能需要使用P / Invoke中的一些/许多功能,但它们应该满足您的需要。您可以在缓冲区中的任意位置写入并获取基于密钥的非缓冲输入。通常,您从GetStdHandle()开始获取控制台输入和输出“streams”的句柄,然后从上面的列表中调用其中一个相应的函数来执行某些操作,例如WriteConsoleOutputCharacter()或PeekConsoleInput()。

我曾经写过一个库,用于在C. Fun项目上使用Windows控制台和普通Win32创建进程内窗口系统,但我不知道它现在在哪里。

答案 2 :(得分:-6)

考虑查看pdcursesncurses库。我在Visual C ++中使用它,当您指定C#时,它可能对您有用。它是为控制台游戏而制作的,我在几个项目中使用它。它将消除使用回调刷新屏幕的需要,因为您可以移动角色(表示为ASCII字符)而无需刷新屏幕。