2010-10-21 76 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

相关问题