2014-10-16 3 views
-5

Я создаю часть игры для защиты башни в строго консольной среде, и я застреваю при перемещении существа, скажем, «c», мне бы хотелось, чтобы буква «c» начала налево и двигаться пространство в то время, справа на той же линии, в основном:Прокрутка символьной буквы в C++

с (одна вторая позже)

c (one second later) 
c and so on.... 

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

+0

Использование [струнных потоков с заполнением] (http://stackoverflow.com/questions/667183/padding-stl-strings-in-c) должно делать трюк, если только это не считается «странными библиотеками и странными методами». – CoryKramer

+0

Обновление вывода терминала - это нетривиальная задача, которая зависит от используемого терминала. Я вполне уверен, что самый простой способ сделать это - использовать «странную» библиотеку, такую ​​как [curses] (https://en.wikipedia.org/wiki/Curses_%28programming_library%29) – clcto

+0

да, это сработает, но есть способ его циклически перемещать? что я имею в виду, например, у меня есть 10 существ, поэтому 10 "c" si нужно, чтобы они появлялись один за другим, а затем выходили с экрана – Zak

ответ

0

Один метод отображает все символы, затем возврат каретки ('\ r'), а затем перепечатывает строку.
Это позволяет вам «ходить» символами. Это будет работать только на видеотерминалах, которые не продвигают линию после получения CR.

Другим методом было бы напечатать 10 обратных символов, пробел, а затем ваш 10 'c'. Это может быть не так быстро, как метод возврата каретки выше, но стоит посмотреть.

Как уже говорилось, вы можете посмотреть в терминальную библиотеку, такую ​​как ncurses. Библиотека позволяет размещать курсор на экране в зависимости от типа терминала. Это может потребовать настройки консольного окна для эмуляции терминала.

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