Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Metka: GotoXY(i, j); Write('Д'); delay(10)



until keypressed;

END.

Практическое задание N 1. 37

Задать движение " десантника" только вдоль осей X и Y, либо по диагоналям.

Работа с символьными переменными

 

Следующие операторы позволяют выводить на экран символы, набираемые на клавиатуре, до нажатия клавиши Enter (код #13):

 

Repeat c: = readKey; Write(c) until c=#13;

 

здесь " с" - переменная типа Char, #13 - код клавиши Enter.

Часто используются клавиши с кодами: #32 - SpaceBar, #27 - Esc.

 

Для запоминания вводимых символов можно использовать операторы:

 

i: =0; repeat i: =i+1; ch[i]: =readKey; write(ch[i]) until ch[i]=#13;

 

Здесь ch[i] - элемент массива ch типа Char.

 

 

Практическое задание N 1. 38

 
 


1. Разделить экран на четыре равные части. 1 2

Создать в первой части окно и ввести с клавиатуры надпись:

Программу разработал " Фамилия". 3 4

Создать окно 4 и скопировать эту надпись в окно 4.

 

2. Аналогично п. 1 создать окно 2, ввести с клавиатуры надпись и скопировать ее в окно 3.

Примечание: копирование заключается в выводе массива символов.

 

3. Создать четыре окна в порядке 1, 2, 3, 4. В центре первого окна ввести с клавиатуры свою фамилию, в других - любые надписи, введенные с клавиатуры в позициях, определяемых функцией Random (без использования массивов).

 

4. Аналогично п. 3 создать четыре окна в порядке 4, 3, 2, 1. Выводить мерцающие символы.

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

 

 

Процедуры DelLine;, InsLine; позволяют прокручивать надписи в окне по аналогии с прокруткой текста, не вмещающегося на экране. Процедура Delay(M); - задерживает выполнение программы на M миллисекунд ( N и M - тип Word).

Приведем пример операторов, прокручивающих текст в окне:

 

Window(5, 5, 30, 9); TextBackGround(1); Clrscr; TextColor(14);

repeat delay(500); GotoXY(1, 5);

write('Всем большой привет! ');

gotoXY(1, 1);

for k: =1 to 5 do begin { прокрутка вверх }

Delay(300); delLine end

until keyPressed;

Практическое задание N 1. 39

 

1. В режиме ТextMode(1); создать в центре экрана окно размером 6 строк и 30 колонок. Вывести в нижней строке окна надпись и сделать прокрутку надписи вверх, меняя яркость символов (нормальная, повышенная, пониженная) и цвет фона (без оператора ClrScr; ) после каждой прокрутки.

 

2. Аналогично п. 1 вывести в верхней строке окна надпись, сделать прокрутку надписи вниз.

 

 

Для вывода на экран символа по номеру его кода можно использовать операторы:

C: = chr(N); write(C); где N - номер кода символа (тип Byte), chr - функция преобразования целого типа в символьный. Напомним, что символы, используемые в MS-DOS, имеют коды с номерами от 0 до 255. Некоторые управляющие символы при выводе производят определенные действия, например: #7 - звуковой сигнал, #13 - перевод курсора на новую строку.

 

В рекламных надписях применяется прием " бегающих" символов. Заставить бегать символ по строке можно с помощью следующих операторов:

 

y: =5; Xm: =lo(WindMax)+1;

с: =readKey; { ввод символа с клавиатуры }

Repeat

for i: =1 to Xm-1 do begin { i - номер позиции в строке }

gotoXY(i, y); write(c); { вывести на экран символ }

delay(100); gotoXY(i, y); write('_') end { вывести на экран пробел }

until keyPressed;

 

 

Практическое задание N 1. 40

 

1. Разделить экран по горизонтали на две части. В первой части создать окно и вывести все символы от 0 до 255 с указанием номеров, во втором окне в двух строчках вывести два символа, бегающих в противоположные стороны.

 

2. Разделить экран по вертикали на две части. В первой части создать окно и вывести все символы от 0 до 255 с указанием номеров, во втором окне в двух колонках вывести два символа, бегающих в противоположных направлениях.

 

Примечание: номера символов выбрать из первого окна.

 

 

При выводе " бегающих" символов изображение курсора портит картинку. Избавиться от курсора можно, поместив его в " дальний угол" перед задержкой программы, например: GotoXY(1, 1); delay(100); Можно также изменить размер курсора до нуля с помощью следующих операторов:

 

В разделе описания программы: Uses DOS; Var r: registers;

B разделе выполнения программы: r.ah: =1; r.ch: =$20; intr(16, r);

Приведем пример программы " падающие символы" для цифр от 0 до 9, имеющих кода

 

c номерами от 48 до 57. При нажатии на клавишу с “падающей цифрой”, генерируется другая “падающая цифра” и т. д. до нажатия клавиши ESC.

 

PROGRAM PULL_CH;

Uses CRT, DOS;

var r: registers;

x, y, i, xm, ym: byte;

c: array [41..57] of char; cha: char;

BEGIN

randomize; textMode(3);

xm: =lo(WindMax)+1; ym: =hi(WindMax)+1;

textBackGround(blue); ClrScr; TextColor(14);

r.ah: =1; r.ch: =$20; intr(16, r);

for i: =48 to 57 do begin

c[i]: =chr(i); write(c[i]) end; { вывод символов с позиции (1, 1) }

 

repeat gotoXY(10, 10); Write('ПРИГОТОВЬТЕСЬ -нажмите ENTER'); cha: = readKey

until cha=#13; { вывод надписи }

delay(500); gotoxy(10, 10); clreol; { стирание надписи }

GOTOXY(1, YM); Write('НАЖМИТЕ КЛАВИШУ С ПАДАЮЩИМ СИМВОЛОМ');

Write(' ДЛЯ ОКОНЧАНИЯ -нажмите ESC');

Repeat

i: = random(10)+48; c[i]: =chr(i); { выбор случайной цифры }

x: = i-48+1; for y: = 2 to ym-1 do begin

gotoXY(x, y); write(c[i]); delay(200); { вывод цифры }

gotoXY(x, y); write('_'); { стирание цифры }

if keypressed then cha: =readkey; { при нажатии клавиши - считать цифру }

if cha=#27 then Break;

if cha=c[i] then Break end { досрочный выход из цикла " for... " }

until cha=#27; { выход при нажатии ESC }

TextMode(3) END.

 

Практическое задание N 1. 41

 

1. Создать " падающие символы" для прописных букв латинского алфавита с номерами кодов от 65 до 90.

2. Создать " падающие символы" для строчных букв латинского алфавита с номерами кодов от 97 до 122.

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

 

Рассмотрим последовательность операторов, позволяющих создать на экране " бегущую строку" символов. Введем с клавиатуры надпись с выводом на экран и запомним строку символов в массиве cha.

 

i: =0; repeat i: =i+1; read(cha[i]) until cha[i]=#13; n: =i-1;

 

Ввод надписи заканчивается нажатием клавиши SpaceBar (последним символом надписи должен быть пробел), затем Enter. Число символов в надписи запоминается в переменной " n", символ с кодом #13 не включается.

Принцип создания " бегущей строки " символов заключается в выводе групп симво

 

лов строки с позиции от 1 до " n" (первый символ, два первых символа строки и т. д. ) и смещением влево позиции вывода первого символа группы. Затем выводятся группы символов от " n-1" до 1 (строка без первого символа, строка без второго символа и т. д.) без изменения места вывода первого символа группы. После вывода каждой группы символов следует задержка программы, позволяющая " увидеть" группу символов. При выводе каждая новая группа символов затирает предыдущую, причем последний символ (SpaceBar) затирает символы при уменьшении группы выводимых символов. Приведем пример операторов для создания " бегущей строки" символов.

Здесь n1 - номер первого выводимого символа, n2 - номер последнего выводимого символа.

 

Repeat

for i: =1 to 2*n-1 do begin

if i< =n then begin n1: =1; n2: =i; gotoXY(n-i+1, 5) end

else begin n1: =i-n+1; n2: =n; gotoXY(1, 5) end;

for j: =n1 to n2 do write(cha[j]); { вывод группы символов }

Delay(200); end

until keyPressed;

 

Практическое задание N 1. 42

 

1. Создать " бегущую строку". Строку выводить в окне, размером n+1 (n - число символов).

2. Создать " бегущую строку". Выводить одновременно две надписи одинаковой длины в разных строках одного окна.

Примечание: цвет окна и символов изменять после каждого вывода строки. Режим монитора TextMode(1);

 


Поделиться:



Последнее изменение этой страницы: 2017-03-17; Просмотров: 377; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.027 с.)
Главная | Случайная страница | Обратная связь