Что нам стоит движок построить?
Автор: Евгений Шаров. Источник:
gcmsite.yaroslavl.ru.
Дата написания: 11.06.2001
Автор статьи рад выслушать Ваши комментарии, замечания и предложения.
Данная статья рассказывает о том, как создать простейший текстовый движок. Для
разработки используется среда Borland Pascal 7.0 (самодостаточная и компактная среда
разработки Dos-приложений).
Простейший движок состоит из главного цикла и трёх вспомогательных процедур:
while not Stop do
begin
InputStr;
Morfolog;
Work;
end.
- InputStr - Ввод строки управления с последующей обработкой (Перевод всех символов к заглавным
символам) и разбиение строки на слова
- Morfolog - Обработка слов с целью идентификации и сопоставления с зашитыми в движок командами
(Север, Юг, Открыть и т.д.). Получение кода команды и вспомогательных кодов.
- Work - Интерпретатор кодов команд
Самой большой процедурой является процедура интерпретации, а самой критической
(с точки зрения распознавания) является вторая процедура (получение кодов команд).
Сейчас я представлю текст программы, в которой реализован простейший текстовый движок,
понимающий команды QUIT, HELP, NORTH, SOUTH.
{=**= Демонстрационная программа текстового движка =**=}
var
y1 : integer; {код команды}
s1,s2 : String; {для обработки строк}
stop : boolean; {завершить программу???}
Procedure InputStr;
var
i : byte;
begin
Write('>>');
i:=1;
Readln(s1);
s2:='';
While (s1[i]=' ') and (i<=length(s1)) do inc(i);
While (s1[i]<>' ') and (i<=length(s1)) do
begin
s2:=s2+upcase(s1[i]);
inc(i)
end;
if length(s2)>3 then delete(s2,4,100);
end;
Procedure Morfolog;
begin
y1:=0;
{ Команды : }
if (s2='N') or (s2='NOR') or (s2='NO') or (s2='NORT') then y1:=1;
if (s2='S') or (s2='SOU') or (s2='SO') or (s2='SOUT') then y1:=2;
if (s2='HEL') or (s2='H') or (s2='HE') or (s2='HELP') then y1:=3;
if (s2='QUI') or (s2='QU') or (s2='QUIT') or (s2='Q') then y1:=255;
end;
Procedure Work;
begin
Case y1 of
1: begin
{идем на север}
writeln('Идем на север...');
end;
2: begin
{идем на юг}
writeln('Идем на юг...');
end;
3: begin
{помощь}
writeln('Помощь...');
end;
255: begin
writeln('Как Вам будет угодно...');
Stop:=true;
end;
end;
end;
begin
Stop := false;
While not stop do
begin
InputStr;
Morfolog;
Work;
end;
end.
| |
Как видите, ничего в этом сложного нет. Но не стоит расслабляться.
|