Как сделать консоль в c

Добавил пользователь Евгений Кузнецов
Обновлено: 28.09.2024

От переводчика

Введение

Эта статья построена как учебник с множеством примеров, что должно дать вам все необходимое для создания игры в текстовом режиме. Вот, что я вам расскажу:

Немного истории

Я думаю, что люблю текстовые игры, потому что вырос на них. Когда я был ребенком, я играл в Star Trek и Adventure на VAX 11/780, которую я набрал на родительском VT-180 Robin. (В конечном итоге он был заменен на Rainbow 100, а в какой-то момент был даже Tektronix 4052 вместе с парой TRS-80s – Model 100 и CoCo2). Наконец, в середине 80-х, мы сделали это на клонах IBM PC. В серии персональных компьютеров был AT&T PC-6300 с огромным 20 мегабайтным жестким диском, который я полностью заполнил играми. В то время игры все чаще использовали разрешение 320 на 200 и 16-ти цветную графику. Среди них было много таких, которые рисовали графику текстовыми символами.

Позиционирование текста

Первым шагов в создании игры в текстовом режиме – отображение текста в любом месте экрана. Для этого, вы будете перемещать курсор в позицию, которая будет измеряться в колонках от левой границы экрана, и строках, от верхней границы экрана, используя несколько методов и свойств класса Console:

  • Console.SetCursorPosition() устанавливает курсор в выбранную позицию консольного окна;
  • свойство Console.CursorLeft возвращает или устанавливает курсор в заданную колонку:
  • свойство Console.CursorTop возвращает или устанавливает курсор в заданную строку.

Эти два свойства используются, когда необходимо сохранить текущую позицию при записи текста в другую позицию экрана, чтобы снова вернуться в начальную позицию. Просто сохраните значения свойств CursorLeft и CursorTop, выполните некоторые действия, а затем установите их обратно (или используйте SetCursorPosition(), которая делает то же самое, что установка этих свойств), чтобы сбросить позицию.

Вот простая программа, которая делает именно это. Я прошу вас создать новое консольное приложение в Visual Studio и вставить код в свой Main() метод. Но поскольку мы говорим о консольных приложениях, я думаю, что полезно, чтобы вы фактически создали файл с нуля без Visual Studio, потому что это дает больше понимания о консольных приложениях. Вот что нужно сделать:

или если вы хотите, чтобы пользователь нажал любую клавишу, его:

Как вы это делаете на C++? Единственная причина, по которой я задаю этот простой вопрос, заключается в том, что я не смог найти хороший и ясный ответ в интернете.

как о std::cin.get(); ?

кроме того, если вы используете Visual Studio, вы можете работать без отладки (CTRL-F5 по умолчанию), и он не закроет консоль в конце. Если вы запустите его с отладкой, вы всегда можете поставить точку останова на закрывающей скобке main() .

правильно

cin.get() является C++ совместимым и портативным. Он извлекает следующий символ из стандартного ввода (stdin). Пользователь может нажать enter, и ваша программа продолжит выполнение или завершится в нашем случае.

Microsoft берет

Microsoft опубликовала статью базы знаний под названием предотвращение исчезновения окна консоли. Он описывает, как приостановить выполнение только при необходимости, т. е. только когда пользователь создал новое окно консоли, выполнив программу из проводника. Код на C, который я воспроизвел здесь:

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

неправильно

не используйте любое из следующего для того чтобы достигнуть это:

это не является частью стандартной библиотеки C / C++. Это просто расширение компилятора и некоторые компиляторы не поддерживают его.

Если ваша проблема заключается в сохранении окна консоли в Visual Studio без изменение приложения (c-код) и запускаем его с помощью Ctrl+F5 (при запуске Ctrl+F5), но окно все еще закрывается основной подсказкой является установка параметра компоновщика / SUBSYSTEM:CONSOLE в проекте Visual Studio.

1) Откройте проект и перейдите в Обозреватель решений. Если вы следуете вместе со мной в K&R, ваше "решение" будет "Привет" с 1 проектом под ним, а также "Привет" жирным шрифтом.

щелкните правой кнопкой мыши на" hello " (или как бы ни назывался ваш проект.)

выберите "Свойства"в контекстном меню.

Выберите Свойства Конфигурации>Компоновщик>Система.

для свойства" подсистема " в в правой области щелкните раскрывающийся список в правой колонке.

выберите " консоль (/SUBSYSTEM: CONSOLE)"

нажмите "Применить", дождитесь, пока он закончит делать все, что он делает, затем нажмите "ОК". (Если" применить "выделено серым цветом, выберите другой вариант подсистемы, нажмите "Применить", затем вернитесь и примените параметр консоли. Мой опыт показывает, что OK сам по себе не будет работать.)

теперь сделайте CTRL-F5 Бориса, подождите, пока ваша программа скомпилируйте и свяжите, найдите окно консоли под всем другим мусором на рабочем столе и прочитайте вывод вашей программы, а затем любимый "нажмите любую клавишу, чтобы продолжить. " проворный.

опять же, CTRL-F5 и подсказки подсистемы работают вместе; они не являются отдельными параметрами.

Библиотека iostream определяет три стандартных потока:

Для выполнения операций ввода-вывода переопределены две операции поразрядного сдвига:

Выведение данных - cout 30

cout
using namespace std;//Пространство имён

cout > tx;//Ввод

cout > t1 >> t2;//Ввод

Ошибки в тексте выделить и Ctrl+Enter

Расскажи о нас в соц.сетях

Пример рекурсивной функции в PHP

Рекурсия - это вызов функции внутри самой себя. Чтобы избавиться от бесполезного и бесконечного вызова функции самой себя, необходимо прописать условие при котором эта функция останавливалась - переставала себя вызывать.

PHP-код вывода массивов в HTML

Все программисты PHP (с любым уровнем подготовки), конечно знаю, как вывести массив PHP в HTML-код: ну, конечно же через цикл!

Я предлагаю это сделать при помощи функции, которая отобразит любой массив в любом виде c HTML оформлением. Данной функции мы передаём в качестве аргументов: массив и формат отображения его в виде другой функции.

Такой подход даёт универсальность данной функции отображения массива и значительно сокращает дублирование PHP кода.

День Победы со слезами на глазах.

День Победы со слезами на глазах.

Дорогие друзья, вот и прошёл пожалуй самый светлый праздник для нашей страны, для нашего народа - ДЕНЬ ПОБЕДЫ - 9 мая.

Но, как именно прошёл праздник 75-летия ПОБЕДЫ в этом году, я хочу напомнить сегодня, спустя 4 дня от празднования исторической даты.

У меня такое ощущение, как будто никто не заметил, что ПОЛИЦАИ по всей стране в этот день задерживали, арестовывали и штрафовали именно за память о Победе, за возложение цветов к памятникам нашим павшим героям.

При изучении языка C++ и программировании под Windows довольно часто возникают вопросы по поводу отображения русских букв в консоли. Вывод и ввод русских букв сопровождается выводом и вводом каких-то кракозябр или иероглифов. В интернете можно найти довольно много советов, но большая часть советов, которые мне попались, не помогали в решении проблемы.

Возникла проблема с отображением русских букв

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

После написания, компиляции и запуска такой программы:

Можно получить примерно такой результат

Вывод кракозябр в консоль

Вывод кракозябр в консоль

Сразу понятно, что на приветствие это совсем не похоже.

После прочтения кучи советов стало понятно, что большая часть советов предлагала решить проблему функцией setlocale(), которая находится в заголовочном файле .

Последовав совету и усовершенствовав программу таким образом:

На вывод я получил следующий результат

Привет, Мир!

Отлично, подумал я. Казалось бы, что проблема решена и программа здоровается на родном языке, но вот именно здесь оказались подводные камни.

О них я узнал из обсуждения. У человека была аналогичная проблема, решенная таким образом. Но решение удовлетворяло его недолго, он сообщил, что программа при вводе данных и последующем их выводе не выводит на руском, она говорит на непонятном языке.

Коль уж так, я решил вновь внести изменения в программу, пусть она поздоровается со мной по имени.

Но в результате я получил не приветствие

Оскорбление на древнеегипетском?

Оскорбление на древнеегипетском?

Как видно, она не смогла назвать моего имени.

Поискав информацию в сети, я узнал о том, что setlocale() не работает с потокоми ввода/вывода, а то есть с cin,cout,etc. Выходит, что нужно искать альтернативные способы решения данной проблемы, которые предлагались на других сайтах.

Решение проблемы с отображением русских букв в консоли

По-другому решить проблему можно было воспользовавшись функциями SetConsoleCP() и SetConsoleOutputCP() с аргуменом 1251 в обеих. Эти функции требуют подключения заголовка , практически в каждом компиляторе под Windows он имеется, проблем не будет.

Усовершенствовал программу таким образом

На вывод получил

Вновь кракозябры в консоли

Вновь кракозябры в консоли

Контекстное меню консоли

Контекстное меню консоли

Далее появится окно с настройками, там необходимо выбрать шрифт Lucida Console.

Свойства консоли Windows

Свойства консоли Windows

И нажать на кнопку ОК.

После такой процедуры я вновь запустил программу и…

Работа программы

Да! Она поздоровалась со мной по имени на русском языке.

Данный способ помог решить мне проблему с отображением русских символов в консоли Windows, надеюсь, что кому-нибудь еще он тоже поможет. Спасибо за внимание.

Для вас это может быть интересно:

Русские символы(буквы) при вводе/выводе в консоль на C++ : 28 комментариев

using namespace std;

В консоли 866 кодовая страница. Можно проще — Creator — Настройки — редактор — кодовая страница 866. Заработает самая первая программа.

Спасибо за 866 кодовую таблицу, все заработало.

Мучался 2 часа с выводом русских букв!
Перечитал кучу пустых советов.
Наконец-то.
Этот— самый толковый способ сделать так, чтобы все работало, и писало по русски!!
Благодарю Вас.

Я рад тому, что это помогло мне, Вам и другим людям.

Вижу, что не только в вебе проблема с отображением русских букв. PHP- программисты с вами!

Большое человеческое спасибо!
Очень помогли дельным советом. Всё работает как надо!

Спасибо!по полочкам и правильно всё разложено)

На мой взгляд, самый простой и действенный способ вывода русских букв в консоли Windows: писать исходники в ее родной кодировке, т. е. в OEM866 и проблем никаких не возникнет. Тем более, что почти все текстовые редакторы ее поддерживают. Для удобства можно установить эту кодировку по умолчанию в тот же Notepad++.
И не надо танцевать с бубном, подключать заголовки, использовать дополнительные функции, менять шрифты и т.д.

Спасибо, дай те бог здоровья!!

Благодарю за эти советы, они действующие, доходчивые. Ушла минута на то, что долго не мог сделать

6 часов искал ответ!Спасибо !

Имеется ввиду после фигурных скобок, т.е. в тело программы

Спасибо большое!Очень помогло.С начала про поток вывода узнал где то недели 2 назад, вчера заинтересовало почему поток ввода не работает. Менее минуты и вуаля. Надеюсь ругаться там не будет никто на счёт заголовочных файлов, но…ОС у всех разные, преобразователи (компиляторы) разные. Вот поэтому и советы для всех разные. Кому то кодировку сменить, а многим многим остальным дополнительные код надо писать. Может когда напишем собственную ОС(хотя кое что такое у нас было когда то давно) тогда ничего этого не надо будет. Автору статьи большое спасибо ещё раз. Русский язык стараюсь вписать куда угодно лишь бы было по русски. Надеюсь, это никого не задевает

Читайте также: