Подтвердить что ты не робот

Есть ли консольная "графическая" библиотека для .Net?

Моя основная цель здесь - написать римейк .NET Королевства Кроз. Для тех, кто не знаком с игрой:

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

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

Первоначально предполагалось, что это будет проект для быстрого отвлечения внимания, чтобы дать мне перерыв от всех общих рабочих проектов WCF/WF/LINQ2SQL/etc, которые занимают большую часть моего времени в последнее время. Хотя результат моих усилий является воспроизводимым, он выглядит как абсолютная задница (даже для консольной игры) из-за того, как я перерисовываю все в каждом кадре.

Я знаю некоторые альтернативные подходы, но в кратких тестах, которые я сделал, они все еще не предлагают значительных результатов или эстетических преимуществ. Я не хочу прибегать к библиотеке, которая "эмулирует" консоль, если я могу ей помочь. Я бы предпочел работать с соответствующим консольным API Win32 под капотом, но не работать с ним напрямую, если я могу ему помочь. Имея в виду, что это четко определенный вариант использования, какой был бы "общепринятый наилучший подход для этого? Есть ли особенно оптимальные методы" рисования" консоли, о которых нужно знать? Я не против плавать в море PInvoke и сортировать, пока он все же заканчивается быстрым, отзывчивым и эффективным консольным интерфейсом.

4b9b3361

Ответ 1

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

Некоторые/многие из этих функций, которые вам могут понадобиться для использования P/Invoke, но они должны делать то, что вам нужно. Вы можете писать в произвольных местах в буфере и получать входные данные, не содержащие буферов, на основе клавиш. Обычно вы начинаете с GetStdHandle(), чтобы получить ручки на вход консоли и вывести "потоки", а затем вы вызываете одну из соответствующих функций из приведенного выше списка, чтобы сделать что-то вроде WriteConsoleOutputCharacter() или PeekConsoleInput().

Я как-то написал библиотеку для создания системы обработки окон в процессе работы с помощью консоли Windows и простого Win32 на проекте C. Fun, но я не знаю, где он сейчас.

Ответ 2

Вы можете попробовать Curses-Sharp http://sourceforge.net/projects/curses-sharp/ или libtcod https://bitbucket.org/libtcod/libtcod

curses-sharp - это полнофункциональная, объектно-ориентированная многоплатформенная оболочка С# для библиотеки управления терминалами curses.

и libtcod - это "... бесплатный, быстрый, переносимый и несложный API для рогейлейных разработчиков, обеспечивающий расширенную истинную цветовую консоль, вход и множество других утилит, часто используемых в roguelikes".

Ответ 3

Брах, проверьте библиотеку pdcurses или ncurses. Я использую его в Visual С++, и, пока вы указываете С#, он может быть вам полезен. Он создан для консольных игр, и я использую его в нескольких проектах. Это устранит необходимость использования обратного вызова, обновляющего экран, так как вы сможете перемещать символ (представленный как символ ASCII) без обновления экрана.