Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория ответы.doc
Скачиваний:
45
Добавлен:
24.12.2018
Размер:
1.61 Mб
Скачать

Управление курсором в текстовом режиме

В текстовом режиме на мониторе виден курсор – это мигающая черточка. Он указывает текущую позицию на экране монитора, в которой вводится и выводится информация командами ввода-вывода, рассмотренными в разделе 1.5. При выводе информации в эту позицию, курсор автоматически перемещается на соседнюю позицию. Если достигнута правая граница строки экрана монитора, то курсор переходит к началу следующей строки к левой границе экрана монитора. Часто требуется вывести информацию не в текущей позиции, а в необходимой. Для этого нужно сначала переместить курсор в необходимую позицию, а потом осуществить вывод командами вывода. Перемещение курсора в точку с координатами (x, y) осуществляется командой

gotoxy (x, y);

Координаты x, y считаются относительными, если вывод осуществляется в активном окне. Координаты могут быть только целыми числами и принимать значения в границах активного окна. Если координаты задать константами, то курсор будет выводить информацию только в этой позиции. Меняя в цикле только значение координаты x, а координату y оставляя постоянной, можно заставить курсор перемещаться по строке с номером y. Меняя в цикле координату y, оставляя координату x постоянной – перемещаться по столбцу x. Меняя обе координаты, можно перемещаться по диагоналям или другим позициям экрана монитора.

Пример: В центре синего экрана изобразить зеленое окно, в центре этого окна вывести строку «ПРИВЕТ» красного цвета. Демонстрацию задания можно увидеть на рисунке 6.

window(1,1,80,25); //окно – весь экран

textbackground(BLUE); //выбор цвета фона экрана

clrscr(); //залить экран выбранным цветом

window(20,10,60,20); //построить окно в центре экрана

textbackground(GREEN);//выбрать зеленый цвет фона

clrscr(); //залить этим цветом построенное окно

textcolor(RED); //выбрать красный цвет символов

gotoxy(17, 5); //курсор в середину построенного окна

cputs(“ПРИВЕТ”); //вывести сообщение ПРИВЕТ

getch(); //остановить окно результатов для просмотра

x=wherex();

y=wherey();

Эти команды позволяют получить x и y - координаты текущего положения курсора в активном окне. Например:

cprintf(“Курсор находится в столбце %d”, wherex());

cprintf(“Курсор находится в строке %d”, wherey());

clreol();

Команда стирает все символы в строке, начиная от текущей позиции курсора до конца строки.

delline();

Команда полностью стирает содержимое строки, в которой расположен курсор в активном окне. Все нижестоящие строки перемещаются на одну строку вверх.

insline();

Команда вставляет в активном окне в текущей позиции пустую строку с заданным цветом фона. Все нижележащие строки сдвигаются вниз. Самая нижняя строка окна исчезает.

Перемещение изображения

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

1. изобразить объект;

2. сделать объект невидимым в старой позиции;

3. изобразить объект в новой позиции.

Сделать объект невидимым (стереть) можно двумя способами:

1. командой очистки экрана clrscr(). При этом очистится весь экран (окно) вместе с объектом. Этот способ имеет недостатки:

- вместе с перемещаемым изображением сотрется и все изображения на экране, что бывает нежелательно;

- вызывает заметное мелькание экрана;

2. закраска объекта цветом фона. С помощью команды textcolor() устанавливается цвет изображения, совпадающий с цветом фона, а потом командой вывода объект отображается в старой позиции. Данный способ более сложный, но лишен недостатков первого способа.

Пример: Перемещать 100 раз символ «*» в случайные позиции экрана.

  1. Фрагмент программы с помощью команды очистки clrscr().

window (1, 1, 80, 25); //синее окно во весь экран

textbackground(BLUE);

clrscr();

for ( i= 1; i<=100; i++)

{ c=1+random(15); //случайный число из [1;15] для цвета

x=1+random(80); //случайная Х координата

y=1+random(24); //случайная Y координата

gotoxy (x, y); //курсор перемещается в случайную позицию

textcolor(c); //установить цвет для «*»

putch('*'); //вывести «*»

delay(500); //удержать «*» на экране

clrscr(); //очистить весь экран

delay(5000); //задержать очищенный экран

}

2. Фрагмент программы перемещения символа «*» с помощью закраски ее цветом фона. Вместо команды clrscr(), расположенной в теле цикла, необходимо выписать следующие три команды:

gotoxy (x, y); //вернуться в старую позицию

textcolor(BLUE); //цвет «*» совпадает с цветом фона окна

putch(‘*’); //вывести символ цветом фона (стереть его)