|
Программируем по-русски
|
Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку. Издатель Глагола
|
(*~\Глагол\Отделы\Поле~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*) (**) ОТДЕЛ Точка; (*============================================================================* * НАЗНАЧЕНИЕ: Точка *============================================================================*) ИСПОЛЬЗУЕТ Надел, Поле, Цепь ИЗ "..\Иное\", Окно ИЗ "..\Обмен\", Ввод ИЗ "..\Обмен\"; ВИД Доступ-=ДОСТУП К Вид; Вид-=НАБОР(Надел.Вид) строчек :ЦЕЛ; надписи :ДОСТУП К РЯД ИЗ Надел.Надпись; буквицы :ДОСТУП К РЯД ИЗ ЦЕЛ; указка :ЦЕЛ; (* строка указки *) текущая+:ЦЕЛ; (* строка точки *) КОН; Посылка-=НАБОР(Ввод.Посылка) точка:Доступ КОН; (******************************************************************************) ЗАДАЧА Отрисовка(точка:Доступ); ПЕР строка:ЦЕЛ; надпись:Надел.Надпись; УКАЗ ОТ строка:=0 ДО точка.строчек-1 ВЫП надпись:="( )"; ЕСЛИ строка = точка.текущая ТО надпись[1]:=0B7X ИНАЧЕ надпись[1]:=" " КОН; Цепь.Добавить(надпись,точка.надписи[строка]); Надел.ВыводНадписи(точка,надпись,строка) КОН; ЕСЛИ точка.состояние = Надел.сВыбран ТО Окно.ПереместитьУказку(точка.вс+точка.указка,точка.лк+1); Окно.РазмерУказки(15) КОН КОН Отрисовка; (******************************************************************************) ЗАДАЧА Работа(точка:Доступ); ПЕР посылка:Посылка; поле:Поле.Доступ; УКАЗ Отрисовка(точка); (* обратная связь *) поле:=точка.поле(Поле.Доступ); посылка.точка:=точка; поле.Приём(поле,посылка) КОН Работа; (******************************************************************************) ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка); ПЕР строка:ЦЕЛ; точка:Доступ; УКАЗ точка:=надел(Доступ); ДЛЯ посылка ВИДА | Поле.Отрисовка: Отрисовка(точка) | Ввод.ОтМышки: ЕСЛИ посылка.события = {} ТО (* просто нажали мышку *) точка.текущая:=посылка.с; точка.указка:=посылка.с; Работа(точка) КОН | Ввод.ОтКлавиш: ВЫБРАТЬ посылка.код ИЗ (* <- ^*) | 25H,26H: ЕСЛИ точка.указка > 0 ТО УМЕНЬШИТЬ(точка.указка); Отрисовка(точка); посылка.код:=0 КОН (* -> V*) | 27H,28H: ЕСЛИ точка.указка < точка.строчек-1 ТО УВЕЛИЧИТЬ(точка.указка); Отрисовка(точка); посылка.код:=0 КОН (* " " *) | 20H: точка.текущая:=точка.указка; Работа(точка); посылка.код:=0 ИНАЧЕ КОН | Поле.Буквица: ОТ строка:=0 ДО точка.строчек-1 ВЫП ЕСЛИ посылка.буквица = точка.буквицы[строка] ТО посылка.буквица:=0; точка.текущая:=строка; точка.указка:=строка; Работа(точка); ВОЗВРАТ КОН КОН ИНАЧЕ КОН КОН Приём; (******************************************************************************) ЗАДАЧА Создать-(верх,лево:ЦЕЛ; надписи-:РЯД ИЗ Надел.Надпись):Доступ; ПЕР точка:Доступ; строчек,строка:ЦЕЛ; длина,колонок:ЦЕЛ; УКАЗ СОЗДАТЬ(точка); строчек:=РАЗМЕР(надписи); СОЗДАТЬ(точка.надписи,строчек); СОЗДАТЬ(точка.буквицы,строчек); точка.строчек:=строчек; колонок:=0; ОТ строка:=0 ДО строчек-1 ВЫП Надел.СчитатьНадпись(надписи[строка],точка.надписи[строка], длина,точка.буквицы[строка]); ЕСЛИ длина > колонок ТО колонок:=длина КОН КОН; Надел.Подготовить(точка,верх,лево,строчек,колонок+4,{Надел.прВыбираемый},Приём); ВОЗВРАТ точка КОН Создать; КОН Точка. |
▲ Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com
|
|