Логические операции And, Or, Not, Xor в Pascal.

Над переменными логического типа можно производить логические операции. В языке программирования Pascal существуют следующие логические операции : Andлогическое умножение, Orлогическое сложение, Notлогическое отрицание, Xor ...

GotoXY в Pascal.

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

Логические операции с целыми числами.

Логические операции применимы не только к логическому типу данных, но и к целочисленному типу данных. Для целых чисел операции выполняются поразрядно, отдельно с каждым битом.

Циклы и массивы

Сортировка простым включением и простым выбором.

Сортировка простым включением.
Пример 33. Методом простого включения упорядочить (отсортировать) в порядке возрастания массив из 8 целых чисел (44, 55,12,42, 94, 18, 06, 67).

Индексы одномерного массива.

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

Для перевода системы в графический режим можно написать отдельную процедуру, которую затем можно будет использовать для написания программ, так как не очень-то удобно каждый раз записывать в программе целый набор операторов инициализации.




Procedure Graphinterface;
Var gd, gm, error:Integer;
 s:String;
 Begin
 gd:=detect;
 s:=' ';
 Initgraph(gd,gm,s);
 error:=GraphResult;
 if error<>GrOk then
 begin
 writeln(GraphErrorMsg(Error));
 Halt(error)
 end
 end.



Для запуска графического режима в Паскаль необходимо:

  • Подключить к программе модуль Graph с помощью оператора использования Uses, который записывается сразу после заголовка программы. Например, можно записать так:

Program Graphika;
Uses Graph;

  • При переключении в графический режим программа должна определить тип видеоадаптера. Это можно сделать двумя способами. Либо указать в программе тип видеоадаптера, либо дать возможность программе самой определить тип видеоадаптера. Для этого в программе вводится переменная с каким-нибудь именем (идентификатором), например, «gd», «grdriver», «graphdriver» (в наших примерах мы будем использовать идентификатор «gd»). Для этой переменной указывается целый тип данных – Integer. Т.е. этой переменной мы можем присвоить какое-то целое число. Ниже приведена таблица зависимости значения переменной от типа установленного видеоадаптера.

Grafika v Pascal, zapusk graficheskogo rezhima

Например, если у Вас установлен адаптер VGA, то переменной «gd» необходимо присвоить значение «9» (gd:=9).
Если Вы не знаете какой видеоадаптер нужно указывать в программе, то нужно предоставить ей самой определить какой адаптер необходимо использовать. Для этого используется специальная процедура Detect. Она способствует автоматическому распознаванию типа видеоадаптера. Кроме того, вместо слова Detect можно использовать нулевое значение. Таким образом, в программе необходимо записать: gd:=detect, либо gd:=0. (в наших программах мы будем использовать автоматическое распознавание видеоадаптера с помощью процедуры Detect).

  • Помимо указания видеоадаптера, необходимо задать определенный графический режим. Как правило, видеоадаптеры могут работать в различных графических режимах. Эти режимы отличаются друг от друга разрешением и набором доступных цветов. Для указания в программе необходимого графического режима необходимо включить в текст программы еще одну переменную, например, gm или grmode, или GraphMod( в наших программах переменная будет называться gm). Эта переменная также имеет целый тип данных – Integer. Ниже приведена таблица зависимости значения переменной от типа установленного видеоадаптера и необходимого режима его работы.

Grafika v Pascal, zapusk graficheskogo rezhima.

Так как в наших программах тип видеоадаптера определяется автоматически, мы не будем указывать тип графического режима. По умолчанию, этой режим будет определен с самым высоким разрешением для данного адаптера.

  • Помимо перечисленных выше переменных для указания типа видеоадаптера (gd), и типа графического режима (gm) необходимо указать переменную, которая определяет путь доступа к каталогу (маршрут), в котором находятся графические драйверы. Для этого создаем переменную (в разделе Var), например «S» и указываем для нее тип данных String. Затем в программе в разделе операторов (между begin и end) этой переменной присваиваем значение «C:\FPC\2.2.2\units\i386-win32\graph». В этой директории находятся файлы graph.o и graph.ppu. Эти файлы отвечают за графический режим. Поэтому мы и указываем путь до этих файлов.

Для того чтобы не указывать этот путь, можно скопировать файлы graph.o и graph.ppu из директории C:\FPC\2.2.2\units\i386-win32\graph и вставить их в директорию C:\FPC\2.2.2\bin\i386-win32. После этого переменной «S» не надо присваивать значение C:\FPC\2.2.2\units\i386-win32\graph. Достаточно просто указать в программе: s:=’’. Т.е. переменной «S» присваивается значение пустой строки.

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

В наше случае процедура будет иметь вид: InitGraph (gd; gm; s). Кстати, переменную «s», которая используется для указания пути можно вообще не использовать. Можно напрямую указать в процедуре InitGraph параметры (gd; gm; ‘ ’).

  • Очень часто при включении графического режима могут возникнуть различные ошибки. Они могут быть связаны с отсутствием графического драйвера или неправильными значениями параметров. Для того чтобы определить тип ошибки используется функция GraphResult. Для этой функции нам необходимо создать еще одну переменную в разделе описания переменных Var. Назовем эту переменную «error». Эта переменная имеет целочисленный тип данных Integer. В программе после записи процедуры InitGraph необходимо записать такие строки:

error:=GraphResult;
if error<>GrOk then
begin
writeln(GraphErrorMsg(Error));
Halt(error)
end

Для функции GraphResult определены следующие коды ошибок:
- 1 графика не установлена (используйте процедуру InitGraph);
- 2 графическая аппаратура не найдена;
- 3 драйвер графического устройства не найден;
- 4 неверный файл драйвера графического устройства;
- 5 не хватает памяти для загрузки драйвера;
- 6 выход за границы при просмотре области закраски;
- 7 выход за границы памяти при закрашивании;
- 8 файл шрифта не найден;
- 9 не хватает памяти для загрузки шрифта;
- 10 недопустимый графический режим для выбранного драйвера.

Строка №1. Таким образом получается, что если в программе возникает ошибка, то переменной «error» присваивается значение функции GraphResult (от 1 до 10, в зависимости от типа ошибки).
Строка №2. GrOk означает отсутствие ошибки. Выражение if error<>GrOk означает, что ошибка есть (знак <> означает неравно). Таким образом, если есть ошибка, то выполняются операции в строке №4 и №5. Функция GraphErrorMsg возвращает строку сообщения об ошибке для заданного кода. И последняя процедура Halt – стандартная процедура, которая завершает выполнение программы и выполняет возврат в операционную систему.

  • Завершение работы в графическом режиме производится с помощью процедуры CloseGraph, которая выгружает драйвер из памяти и восстанавливает предыдущий видеорежим.

Предыдущая статья : Графика в Паскаль.

Оглавление : Уроки Паскаль. Графика.

Следующая статья : Процедуры Setcolor, Line.


Комментарии  

 
0 # Ольга 25.01.2013 04:57
вроде все правильно сделала, но ошибка "нет связи". Что делать????
При этом alt linux копировать файлы не дает.
Ответить
 
 
0 # компилятор тупит 06.05.2014 14:06
:sad:
Ответить
 
 
0 # Vlad 30.08.2016 19:13
при запуске игры монитор выдает на чёрном фоне "недопустимый графический режим". как исправить?? подскажите
Ответить
 

Добавить комментарий

Защитный код
Обновить

   ГлавнаяПаскальГрафика в ПаскальПроцедура SetUserCharSize.