FreePascal/EgaVgaBGI
Материал из ALT Linux Wiki
< FreePascal(Различия между версиями)
(Новая страница: «В Сизифе (в p5 — начиная с 5.0.3) есть модуль для FreePascal, позволяющий использовать графические ...») |
|||
(2 промежуточные версии не показаны) | |||
Строка 1: | Строка 1: | ||
- | В Сизифе (в p5 — начиная с 5.0. | + | В Сизифе (в p5 — начиная с 5.0.2) есть модуль для FreePascal, позволяющий использовать графические примитивы в стиле Turbo Pascal BGI. Пакет с модулями называется <tt>fpc-units-ptcpas</tt>, соответствующий модуль — <tt>PTCGraph</tt>. |
== Адаптация BGI-графики для FreePascal == | == Адаптация BGI-графики для FreePascal == | ||
Строка 10: | Строка 10: | ||
=== Примеры (Turbo Pascal 7.1) === | === Примеры (Turbo Pascal 7.1) === | ||
- | В файле <tt>EXAMPLES/BGI/BGIDEMO.PAS</tt> | + | ==== В файле <tt>EXAMPLES/BGI/BGIDEMO.PAS</tt> ==== |
+ | Достаточно заменить <source lang="pascal">uses | ||
Crt, Dos, Graph;</source> на <source lang="pascal">uses | Crt, Dos, Graph;</source> на <source lang="pascal">uses | ||
PTCCrt, Dos, PTCGraph;</source> | PTCCrt, Dos, PTCGraph;</source> | ||
- | В файле <tt>EXAMPLES/BGI/ARTY.PAS</tt> | + | ==== В файле <tt>EXAMPLES/BGI/ARTY.PAS</tt> ==== |
+ | Сверх того надо заменить <source lang="pascal">Graph.Line(x1,y1,x2,y2);</source> на <source lang="pascal">PTCGraph.Line(x1,y1,x2,y2);</source> и в оператор <source lang="pascal">case GraphDriver of</source> добавить перед закрывающим его '''<tt>end;</tt>''' задание по умолчанию переменной <tt>MaxDelta</tt>: <source lang="pascal">else MaxDelta := 16;</source> | ||
- | В примерах из помощи (например, по процедуре <tt>Circle</tt>) | + | ==== В примерах из помощи (например, по процедуре <tt>Circle</tt>) ==== |
+ | По умолчанию графика рисуется синим, а не белым цветом, причём в левом верхнем углу (см. замечание 4), а окончание ввода по <tt>ReadLn;</tt> ожидается в терминале (см. замечание 3). Рекомендуется вместо автоопределения драйвера <source lang="pascal">Gd:=Detect; | ||
InitGraph(Gd, Gm, ' ');</source> использовать явное задание VGA-совместимого оконного режима <source lang="pascal">Gd:=VGA; | InitGraph(Gd, Gm, ' ');</source> использовать явное задание VGA-совместимого оконного режима <source lang="pascal">Gd:=VGA; | ||
InitGraph(Gd, Gm, ' ');</source> а вместо использования <source lang="pascal">. . . | InitGraph(Gd, Gm, ' ');</source> а вместо использования <source lang="pascal">. . . | ||
Строка 22: | Строка 25: | ||
. . . | . . . | ||
ReadKey;</source> | ReadKey;</source> | ||
- | + | {{Category navigation|title=FreePascal|category=FreePascal|sortkey={{SUBPAGENAME}}}} | |
- | + |
Текущая версия на 15:50, 2 июля 2015
В Сизифе (в p5 — начиная с 5.0.2) есть модуль для FreePascal, позволяющий использовать графические примитивы в стиле Turbo Pascal BGI. Пакет с модулями называется fpc-units-ptcpas, соответствующий модуль — PTCGraph.
Содержание |
Адаптация BGI-графики для FreePascal
- Установить пакет fpc-units-ptcpas-demos. Он должен вытянуть все нужные зависимости; кроме того, примеры оттуда можно запустить и/или пересобрать путём копирования всего каталога и запуска в нём команд make clean и make.
- Поменять в исходном тексте программы названия модулей Graph и Crt на PTCGraph и PTCCrt соответственно. Не стоит забывать, что названия модулей могут применяться не только в операторе
Uses
, но и при обращении к содержимому модуля. Использование модуля Crt или стандартного ввода (например, ReadLn;) приведёт к тому, что ввод и вывод будет происходить из окна терминала (или вообще неизвестно откуда, если запускать программу не из терминала), а не из окна с графикой. - Модифицировать исходные тексты так, чтобы в них не использовались определённые значения переменных GraphDriver и GraphMode. Привязка к BGI-каталогу или BGI-файлу PTCGraph-ом игнорируется.
- Проверить, насколько приемлемо используются в исходниках цвета и размеры экрана.
Примеры (Turbo Pascal 7.1)
В файле EXAMPLES/BGI/BGIDEMO.PAS
Достаточно заменитьuses
Crt, Dos, Graph;
uses
PTCCrt, Dos, PTCGraph;
В файле EXAMPLES/BGI/ARTY.PAS
Сверх того надо заменитьGraph.Line(x1,y1,x2,y2);
PTCGraph.Line(x1,y1,x2,y2);
case GraphDriver of
else MaxDelta := 16;
В примерах из помощи (например, по процедуре Circle)
По умолчанию графика рисуется синим, а не белым цветом, причём в левом верхнем углу (см. замечание 4), а окончание ввода по ReadLn; ожидается в терминале (см. замечание 3). Рекомендуется вместо автоопределения драйвераGd:=Detect; InitGraph(Gd, Gm, ' ');
Gd:=VGA; InitGraph(Gd, Gm, ' ');
. . .
ReadLn;
Uses PTCCrt. . .
ReadKey;