2009-08-15 3 views
4

Я возился с игровыми циклами и собираюсь создать некоторые игры в качестве практики.Есть ли лучший способ сделать консольные игры, чем с Console.Clear()?

В настоящее время у меня есть устойчивая игра петля вверх, где игра обновляется как можно быстрее и рендеринг обновляются й раз в секунду (25 в настоящее время)

Метод rendinging в основном ничей + Console.Clear () и при очень высоких обновлениях дисплей становится очень нервным, так как он не заканчивается рисованием при ударе Console.Clear().

Есть ли лучший способ сделать что-то подобное?

Могу ли я записать любые данные на консоль, а затем заменить их другими данными?

ответ

4

Предполагая, что вы Написать полный экран из нижнего правого угла снова в каждом цикле можно просто заменить Clear() с:

Console.SetCursorPosition(0, 0); 

И перезаписать предыдущий экран.

+0

Ах, это может быть ключом к тому, что я испытываю. Благодаря :) –

3

Поскольку вы все еще в C#, вам может понадобиться посмотреть на XNA Framework.

Я предполагаю, что ваша проблема возникает из Console.Clear(), которая не оптимизирована для такого использования, поскольку XNA использует аналогичный метод (Clear() вызывается на GraphicsDevice).

Если вы не хотите использовать XNA, возможно, потребуется быстрее нарисовать прямоугольник (сплошной черный или серый или что-то еще), а не позвонить Clear(), чтобы «удалить» экран, а затем нарисовать его.

+0

Я начинаю с консоли, чтобы понять основы внутренней работы игрового цикла. Но быстрее, чем Console.Clear(), можно было бы сделать чистый лист над данными. –

1

Вы migth хотите проверить ConsoleLibrary

Я не использовал его, но из статьи/демо, кажется, что это позволит вам сделать кучу аккуратных вещей на консоли.

Смежные вопросы