Вывести сообщение в нужном месте экрана. Управление шириной вывода

У любого клиентского объекта имеется метод give_game_news . Он и выводит сообщения на экран. Экспериментом выяснил, что сообщение можно вывести совершенно от любого клиентского объекта, хоть от куска колбасы (хвала дизайнерскому гению GSC! Ну почему не сделать просто глобальную функцию?). Однако, следуя традиции и здравому смыслу, мы таки воспользуемся для этого объектом, соответствующим ГГ, т.е. актёром.

local sactor = alife() :actor() --получаем серверный объект актера local cactor = level.object_by_id(sactor.id) --по его ID получаем клиентский объект актера cactor:give_game_news( "Свободу тушканам!\\ nТушканчики всех стран, объединяйтесь!" , -- строка сообщение, может быть многострочной "ui\\ ui_npc_monster" , --текстура, из которой берется аватара "отправителя" Frect() :set(0 ,215 ,163 ,105 ) , --координаты и размеры вырезаемого из текстуры изображения math .random (1000 , 3000 ) , --начало показа сообщения с текущего момента (в миллисекундах) 5000 --длительность показа сообщения (в миллисекундах) )

Доп. комментарии к аргументам give_game_news

Имя текстуры - это имя dds-файла без расширения, адресуемого относительно папки \gamedata\textures\ в этом выражении:

Frect() :set(0 ,215 ,163 ,105 )

0,215 - это координаты верхнего левого угла нужного изображения;
163,105 - его размеры.
Размеры и координаты могут быть любыми, но полученное изображение будет увеличено или уменьшено до размеров 83х47. В данном случае изображение тушкана из файла ui_npc_monster.dds было уменьшено. Параметр времени начала показа нужен, очевидно, для внесения некоторой живости в игру. Дело в том, что код Lua получает управление только в определённые моменты, по определённым событиям. В такой момент можно сгенерить пачку сообщений и раскидать их по времени с помощью этого параметра, создав таким образом некоторую имитацию жизнедеятельности на ближайшее время. Думаю, таким же образом можно имитировать диалоги. Просто генерится пачка сообщений и им задаётся вывод с небольшим интервалом.

Инструкция

Чтобы вывести на экран сообщение , в операционной системе Windows достаточно написать маленький скрипт на языке Visual Basic. Создайте текстовый файл script.txt. Название и местоположение файла значения не имеют. Откройте файл в любом текстовом редакторе. Введите строку: «MsgBox "текст сообщения"» (без «елочек», но с кавычками "штрихами"). Сохраните файл и закройте текстовый редактор. Смените расширение файла на *.vbs. Иконка должна измениться. Теперь операционная система воспринимает этот файл не как текстовый, а как набор команд, который выполняется встроенным в Windows интерпретатором Visual Basic. Этот компонент присутствует во всех операционных системах этого семейства, начиная с XP, что позволяет запустить скрипт на любом компьютере. При запуске этот скрипт выведет сообщение в окне. Текст в кавычках может быть любым.

Альтернативой VBS скрипту является написание Java Script. Язык Java сложнее, но написанный на нем скрипт можно запустить не только на операционных системах Windows, но и на многих других. Создайте текстовый файл, откройте его в редакторе и введите строку "WScript.Echo("текст сообщения");". Внешние кавычки вводить не нужно, а вот если не ввести внутренние (те, в которые заключен текст) скрипт работать не будет. Смените расширение файла на *.js. Запустите файл на выполнение. В результате будет выведено окно, точно же, как при написании программы на Visual Basic.

Существует еще один способ вывода сообщений - с помощью команды net send. Плюсом и отличительной особенность данного метода является то, что сообщение можно отправить на любой компьютер в локальной сети. На клавиатуре нажмите одновременно клавиши win+r, в открывшемся окне введите строку cmd и нажмите Enter. Откроется окно ввода команд. В нем напишите "net send имя компьютера сообщение " (без кавычек) и нажмите Enter. Указанный компьютер выведет сообщение практически так же, как если бы оно было с помощью скрипта на локальной машине. Учтите, что в нем будет указан обратный адрес. Вместо имени компьютера-получателя сообщения можно указать IP адрес.

Самая простая программа – это программа вывода текста на экран. В основном у большинства студентов знакомство с языками программирования происходит именно с нее. Написать ее самому достаточно просто, главное - понимать интерфейс компилятора и основы языка программирования.

Вам понадобится

  • - Qt-SDK.

Инструкция

Скачайте любую программу-компилятор на ваш компьютер. Лучше всего использовать известные программы, такие как,например, Nokia Qt SDK, поскольку она обладает наиболее понятным интерфейсом и будет более удобна для использования начинающим пользователям. Скачайте ее с официального сайта и ни в коем случае не спутайте ее с Qt-Creator"ом. Установите компилятор на ваш компьютер и запустите его.

Выберите создание проекта под названием Hello World. Для этого нажмите в правом нижнем углу Create Project и выберите в появившемся новом окне тип приложения. В языках программирования выберите С++. В появившемся далее окне введите название helloworld. Далее выберите устройство, если программа разрабатывается не для использования на персональном компьютере.

Дважды нажмите кнопку «Далее»/Next, выберите нужную конфигурацию в последнем окне и нажмите ОК. У вас появится рабочее поле, откройте редактор, в левой части экрана выберите main, введите под строкой #endif слова QLabel label (Hello Everyboby). Можете использовать любую понравившуюся вам фразу. В конце строки поставьте /.

Все программы на C++, созданные вами в уроках 1 и 2, использовали выходной поток cout для вывода сообщений на экран. В этом уроке вы будете использовать cout для вывода символов, целых чисел, например 1001, и чисел с плавающей точкой, например 0.12345. К концу данного урока вы освоите следующие основные концепции:

  • Для вывода символов и чисел на экран вы можете использовать выходной поток cout.
  • В C++ можно использовать с cout специальные символы для вывода табуляции или новой строки и даже для воспроизведения звука на вашем компьютере.
  • В C++ можно легко отображать числа в десятичном, восьмеричном (по основанию 8) или шестнадцатеричном (по основанию 16) формате.
  • Используя в командной строке операционной системы операторы переназначения, вы можете перенаправить выходные сообщения своей программы, посылаемые в cout, с экрана в файл или на принтер.
  • Используя выходной поток cerr, ваши программы могут посылать сообщения на стандартное устройство ошибок, избавляя пользователей от необходимости переназначения сообщений.
  • Вы можете форматировать вывод вашей программы, используя модификатор setw внутри выходного потока.

Почти все создаваемые вами программы на C++ используют cout для вывода сообщений на экран. Из этого урока вы узнаете, как лучше использовать сом/.

ИСПОЛЬЗОВАНИЕ cout ДЛЯ ВЫВОДА ЧИСЕЛ

До сих пор созданные вами программы использовали сом/ для вывода символьных строк (букв и чисел, взятых в кавычки). Теперь вы узнаете, что сом/ можно также использовать для вывода чисел. Следующая программа 1001.СРР выводит число 1001 на ваш экран:

#include

Void main(void)

{
cout << 1001;
}

Откомпилируйте и запустите эту программу. На вашем экране будет отображено число 1001, как показано ниже:

С:\> 1001

1001

Cout << 2002;

Кроме отображения целых чисел (чисел без десятичной точки), сом/также позволяет вашим программам отображать числа с плавающей точкой, например 1.2345. Следующая программа FLOATING.CPP использует сом/для вывода числа 0.12345 на экран:

#include

Void main(void)

{
cout << 0.12345;
}

Как и ранее, откомпилируйте и запустите эту программу. На вашем экране появится следующий вывод:

С:\> FLOATING

0.12345

ВЫВОД НЕСКОЛЬКИХ ЗНАЧЕНИЙ ОДНОВРЕМЕННО

Как вы уже знаете, двойной знак "меньше" является операцией вставки (эта операция вставляет символы в выходной поток для отображения). С помощью cout вы можете использовать несколько операций вставки в пределах одного оператора. Например, следующая программа 1001ТОО.СРР использует эту операцию четыре раза для отображения числа 1001 на вашем экране:

#include

Void main(void)

(
cout << 1 << 0 << 0 << 1;
}

Когда вы откомпилируете и запустите эту программу, на вашем экране появится следующее:

С:\> 1001TOO

1001

Каждый раз, когда в C++ встречается операция вставки, число или символы просто добавляются к тем, что находятся в настоящее время в выходном потоке. Следующая программа SHOW1001.CPP с помощью cout выводит символьную строку и число:

#include

Void main(void)

{
cout << "Мое любимое число равно " << 1001;
}

Обратите внимание, что пробел, следующий за словом равно (внутри кавычек), служит для отделения числа 1001 от этого слова. Без пробела число сливается со следующим словом (равно 1001). Подобным образом следующая программа 1001MID.CPP отображает число 1001 в середине символьной строки:

#include

Void main(void)

{
cout << "Число " << 1001 << " мне очень нравится";
}

Как и ранее, обратите внимание на расстановку пробелов до и после числа 1001.

Наконец, следующая программа MIXMATCH.CPP комбинирует строки, символы, целые числа и числа с плавающей точкой внутри одного и того же выходного потока:

#include

Void main(void)

{
cout << "B " << 20 << " лет мой оклад был " << 493.34 << endl;
}

Когда вы откомпилируете и запустите эту программу, на вашем экране появится следующий вывод:

С:\> MIXMATCH

В 20 лет мой оклад был 493.34

ИСПОЛЬЗОВАНИЕ СПЕЦИАЛЬНЫХ СИМВОЛОВ ВЫВОДА

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

Если необходимо переместить курсор в начало следующей строки, можно поместить символ новой строки (\n) в выходной поток. В C++ вам предоставляется два разных способа генерации новой строки. Во-первых, вы можете поместить символы \n внутри символьной строки. Например, следующая программа TWOLINES.CPP отображает свой вывод в виде двух строк, используя символ новой строки:

#include

Void main(void)
{
cout << "Это строка один\nЭто строка два";
}

Когда вы откомпилируете и запустите эту программу, символ новой строки обеспечит вывод двух строк, как показано ниже:

С:\> TWOLINES

Это строка один

Это строка два

Если вы не выводите символьную строку, можете поместить символ новой строки внутри одинарных кавычек. Например, следующая программа NEWLINES.CPP выводит числа 1, 0, 0 и 1, каждое на своей собственной строке:

#include

Void main(void)
{
cout << 1 << "\n" << 0 << "\n" << 0 << "\n" << 1;
}

В дополнение к использованию символа новой строки для продвижения курсора в начало следующей строки ваши программы могут использовать символ endl (конец строки). Следующая программа ENDL.CPP иллюстрирует использование endl для продвижения курсора в начало новой строки:

#include

Void main(void)

{
cout << "А теперь..." << endl
<< "Учимся программировать на языке C++";
}

Как и ранее, когда вы откомпилируете и запустите эту программу, на экране будет отображен вывод программы в виде двух строк:

C:\> ENDL

А теперь

Учимся программировать на языке C++

Наконец, следующая программа ADDRESS.CPP выводит адрес издательства "Jamsa Press" в несколько строк:

#include

Void main(void)

{
cout << "Jamsa Press" << endl;
cout << "2975 South Rainbow, Suite I" << endl;
cout << "Las Vegas, NV 89102" << endl;
}

Другие специальные символы

В дополнение к символу новой строки, позволяющему вашим программам продвигать курсор в начало новой строки, вы можете использовать специальные символы, перечисленные в табл. 3.1.

Таблица 3.1. Специальные символы для использования с cout.

Символ

Назначение

Сигнальный (или звонок) символ

Символ возврата

Символ перевода страницы

Символ новой строки

Возврат каретки (не перевод строки)

Символ горизонтальной табуляции

Символ вертикальной табуляции

Символ обратный слеш

Знак вопроса

Одинарные кавычки

Двойные кавычки

Нулевой символ

\000

Восьмеричное значение, например \007

\xhhhh

Шестнадцатеричное значение, например \xFFFF

Замечание: При использовании специальных символов, перечисленных в табл. 3.1, вам следует располагать их внутри одинарных кавычек, если вы используете данные символы сами по себе, например "\n", или внутри двойных кавычек, если вы используете их внутри строки, например "Привem\nMup!".

Следующая программа SPECIAL.CPP использует специальные символы сигнала (\а) и табуляции (\t) для выдачи звука на встроенный динамик компьютера и затем выводит слова Звонок Звонок Звонок, разделенные табуляцией:

#include

Void main(void)

{
cout << "3вонок\a\tЗвонок\a\tЗвонок\a";
}

ВЫВОД ВОСЬМЕРИЧНЫХ И ШЕСТНАДЦАТЕРИЧНЫХ ЗНАЧЕНИЙ

Программы, представленные в этом уроке до сих пор, выводили числа в десятичном виде. В зависимости от назначения ваших программ вам, возможно, потребуется выводить числа в восьмеричном или шестнадцатеричном виде. Для этого можно разместить модификаторы dec, oct и hex внутри выходного потока. Следующая программа ОСТНЕХ.СРР использует эти модификаторы для вывода значений в десятичном, восьмеричном и шестнадцатеричном виде:

#include

Void main(void)

{
cout << "Восьмеричный: " << oct << 10 << " " << 20 << endl;
cout << "Шестнадцатеричный: " << hex << 10 << " " << 20 << endl;
cout << "Десятичный: " << dec << 10 << " " << 20 << endl;
}

Когда вы откомпилируете и запустите эту программу, на экране появится следующий результат:

С:\> OCTEX

Восьмеричный: 12 24

Шестнадцатеричный: а 14

Десятичный: 10 20

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

ВЫВОД НА СТАНДАРТНОЕ УСТРОЙСТВО ОШИБОК

Как вы уже знаете, используя cout, вы можете перенаправить вывод программы на устройство или файл с помощью операторов переназначения вывода операционной системы. Однако, если ваши программы сталкиваются с ошибкой, вы, вероятно, не захотите, чтобы сообщение об ошибке было перенаправлено с экрана. Перенаправление сообщений об ошибках в файл может скрыть от пользователя факт появления ошибки.

Если вашей программе нужно вывести сообщение об ошибке, вы должны использовать выходной поток cerr. C++ связывает cerr со стандартным устройством ошибок операционной системы. Следующая программа CERR.CPP использует выходной поток cerr для вывода на экран сообщения "Это сообщение появляется всегда ":

#include

Void main(void)

{
cerr << "Это сообщение появляется всегда";
}

Откомпилируйте и запустите эту программу. Далее попытайтесь перенаправить вывод программы в файл, используя оператор переназначения вывода:

С:\> CERR > FILENAME.EXT

Так как операционная система не позволит вашим программам перенаправить вывод, записываемый на стандартное устройство ошибок, сообщение появится на вашем экране.

УПРАВЛЕНИЕ ШИРИНОЙ ВЫВОДА

Несколько предыдущих программ выводили числа на экран. Чтобы гарантировать правильное отображение этих чисел (с правильной расстановкой пробелов), программы включали пробелы до и после чисел. При выводе на cout или cerr ваши программы могут указать ширину вывода каждого числа, используя модификатор setw (установка ширины). С помощью setw программы указывают минимальное количество символов, занимаемое числом. Например, следующая программа SETW.CPP использует модификатор setw для выбора ширины 3, 4, 5 и 6 для числа 1001. Чтобы использовать модификатор setw, ваша программа должна включать заголовочный файл iomanip.h:

#include

#include

Void main (void)

{
cout << "Мое любимое число равно" << setw(3) << 1001 << endl;
cout << "Мое любимое число равно" << setw(4) << 1001 << endl;
cout << "Мое любимое число равно" << setw(5) << 1001 << endl;
cout << "Мое любимое число равно" << setw(6) << 1001 << endl;
}

Когда вы откомпилируете и запустите эту программу, на экране появится следующий вывод:

С:\> SETW

Мое любимое число равно1001

Мое любимое число равно 1001

Если вы указываете ширину с помощью setw, вы указываете минимальное количество символьных позиций, занимаемых числом. В предыдущей программе модификатор setw(3) указывал минимум три символа. Однако, так как число 1001 потребовало больше трех символов, cout использовал реально требуемое количество, которое в данном случае равнялось четырем. Следует отметить, что при использовании setw для выбора ширины, указанная ширина действительна для вывода только одного числа. Если вам необходимо указать ширину для нескольких чисел, вы должны использовать setw несколько раз.

Замечание: Предыдущая программа использует заголовочный файл IOMANIP.H. Вам, возможно, понадобится сейчас напечатать и исследовать содержимое этого файла. Как и в случае с заголовочным файлом IOSTREAM.H вы найдете данный файл внутри подкаталога INCLUDE, который находится в каталоге с файлами вашего компилятора.

ЧТО ВАМ НЕОБХОДИМО ЗНАТЬ

Из этого урока вы узнали несколько способов использования cout для отображения вывода на экран. Все программы, которые вы создадите в процессе изучения оставшейся части книги, будут использовать cout для отображения вывода. Из урока 4 вы узнаете, как использовать переменные внутри своих программ для хранения значений, которые могут изменяться в процессе выполнения программы. Однако до изучения урока 4 убедитесь, что вы освоили следующие основные концепции:

    1. Выходной поток cout позволяет вам выводить символы и числа.
    2. Используя специальные символы внутри выходного потока, ваша программа может указать новую строку, табуляцию и другие специальные возможности.
    3. Для продвижения курсора в начало следующей строки программы могут создать новую строку, используя символ \n или модификатор endl.
    4. Модификаторы dec, oct и hex позволяют программам выводить значения в десятичном, восьмеричном и шестнадцатеричном виде.
    5. Используя выходной поток cerr, программы могут записать сообщения в стандартное устройство ошибок операционной системы.
    6. С помощью модификатора setw ваши программы могут управлять шириной вывода чисел.