Remkomplekty.ru

IT Новости из мира ПК
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Loadpicture pascal abc ошибка

Тема урока Анимация в Pascal ABC. n:= LoadPicture (name) – загружает рисунок из файла с именем name в оперативную память и возвращает описатель рисунка. — презентация

Презентация была опубликована 5 лет назад пользователемНаталия Тимашова

Похожие презентации

Презентация на тему: » Тема урока Анимация в Pascal ABC. n:= LoadPicture (name) – загружает рисунок из файла с именем name в оперативную память и возвращает описатель рисунка.» — Транскрипт:

1 Тема урока Анимация в Pascal ABC

2 n:= LoadPicture (name) – загружает рисунок из файла с именем name в оперативную память и возвращает описатель рисунка в целую переменную n. Если файл не найден, то возникает ошибка времени выполнения. Загружать можно рисунки в формате.bmp,.jpg или.gif. DrawPicture (n, x, y) — выводит рисунок с описателем n в позицию (x,y) графического окна. DrawPicture (n, x, y, w, h) – устанавливает ширину (w) и высоту (h) рисунка SetPictureTransparent(n, true) — устанавливает (b = True) или отключает (b = False) режим прозрачности при рисовании рисунка с описателем n. Если b = True, то при его рисовании фон не отображается. Фоновым считается цвет левого нижнего пиксела рисунка. Sleep(ms) — осуществляет паузу в выполнении программы на ms миллисекунд Использование процедуры перерисовки Redraw позволяет избежать моргания экрана. Действия с рисунком

3 Практическая работа Пусть автомобиль перемещается на фоне здания и деревьев слева направо на расстояние 400 пикселей. Загрузим изображения фона и автомобиля из файлов gorod.gif и avto.jpg, поместив их описатели в переменные fon и avto. Установим прозрачность фона для изображения автомобиля SetPictureTransparent(avto,true). Зададим начальные координаты (х, у), ширину w и высоту h изображения автомобиля. Все переменные имеют тип integer. Процедуры рисования и стирания будем повторять в цикле с предусловием While до тех пор, пока автомобиль не переместится на 400 пикселей. На каждом шаге цикла координату х левого верхнего угла изображения увеличиваем на 10. Ширину уменьшаем на 2, а высоту на 1 пиксель для уменьшения изображения при удалении.

4 program Avto1; uses GraphABC; var fon, avto, x,y, w,h: integer; begin SetWindowSize (600, 300); fon:= LoadPicture (‘город.gif’); avto:= LoadPicture (‘автомобиль.jpg’); SetPictureTransparent (avto, true); x:= 10; y:= 170; w:= 240; h:= 100; while x

5 Практическая работа program babochka; uses Graphabc; var f, b, x, y : integer; begin setwindowsize (450, 550); b:= LoadPicture (‘цветы.jpg’); f:= LoadPicture (‘бабочка.gif’); x:= 10; y:= 350; while x

6 Практическая работа Загрузим изображение циферблата из файла таймер.jpg, поместив описатель в переменную fori. Зададим координаты центра вращения стрелок (хО.уО) и начальные значения секунд sec:=0 и минут min:=0. На каждом шаге цикла с постусловием repeat. until будем увеличивать значение секунд на 1 до тех пор. пока время не превысит 60 мин. или не нажата любая клавиша (keyPressed). Значения минут вычислим целочисленным делением секунд на 60: min:= secdiv60. Секундную стрелку будем рисовать линией длиной 120 и толщиной 3 пикселя, а минутную и 7 пикселей. Радианная мера угла поворота секундной стрелки равна Pi*sec/30. а минутной Pi»min/30. Координаты концов стрелок (х,у) вычисляем по формулам тригонометрии и округляем до целых Например, для секундной стрелки x:=x0+Round

7 Практическая работа Program Timer; uses crt, GraphABC; var fon, x0, y0, x, y, R, min, sec: integer; begin SetWindowSize (360, 480); HideCursor; x0 := 173; y0 := 300; min : =0; sec := 0; fon := LoadPicture (‘таймер.jpg’); repeat DrawPicture (fon, 0, 0); sec := sec + 1; min := sec div 60; x := x0 + Round (120 * sin (Pi * sec / 30)); y := y0 – Round (120 * cos (Pi * sec / 30)); SetPenWidth (3); Line (x0, y0, x, y); x := x0 + Round (100 * sin (Pi * min / 30)); y := y0 – Round (100 * cos (Pi * min / 30)); SetPenWidth (7); Line (x0, y0, x, y); sleep (1000); until (min >= 60) or keyPressed; end. = 60) or keyPressed; end.»>

Loadpicture pascal abc ошибка

Неописанная переменная

Все используемые переменные должны быть предварительно описаны с помощью ключевого слова var (внутри блока begin/end или, что обычно хуже, в разделе описаний вначале программы).

Отсутствующая ;

Очень частая ошибка у начинающих. Курсор, как правило, позиционируется в начале следующей строки.

Несовместимость типов при присваивании

Безболезненно можно присваивать только данные одного типа. Если данные — разных типов, то в редких случаях можно преобразовать данные одного типа в данные другого. Например, целое можно преобразовать в вещественное, а символ — в строку. Обратные преобразования не допускаются.

Чтобы не ошибаться в подобных простых случаях в Паскале есть следующая краткая форма объявления и инициализации переменной:

Читать еще:  Айфон 5s ошибка 3194

Отсутствие закрывающего апострофа литеральной строки

Закрыть апостроф надо на той же строке, где расположен открывающий апостроф

Ошибки расстановки запятых и апострофов при выводе строк и выражений

Слишком много запятых и апострофов рядом, потому начинающие часто путаются Надо уяснить правила:

  • запятые разделяют разные элементы вывода
  • все, что находится в апострофах, будет выведено на экран без изменений

Ошибка ввода

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

Аналогичный фрагмент в более современном и предпочтительном синтаксисе:

Ошибка неинициализированной переменной

Перед использованием любую переменную надо ввести или присвоить ей начальное значение. Это действие называется инициализацией переменной.

Деление на 0

Если во время выполнения программа выполнит деление на 0, то она завершится с ошибкой.

Презентация была опубликована 5 лет назад пользователемНаталия Тимашова

Похожие презентации

Презентация на тему: » Тема урока Анимация в Pascal ABC. n:= LoadPicture (name) – загружает рисунок из файла с именем name в оперативную память и возвращает описатель рисунка.» — Транскрипт:

1 Тема урока Анимация в Pascal ABC

2 n:= LoadPicture (name) – загружает рисунок из файла с именем name в оперативную память и возвращает описатель рисунка в целую переменную n. Если файл не найден, то возникает ошибка времени выполнения. Загружать можно рисунки в формате.bmp,.jpg или.gif. DrawPicture (n, x, y) — выводит рисунок с описателем n в позицию (x,y) графического окна. DrawPicture (n, x, y, w, h) – устанавливает ширину (w) и высоту (h) рисунка SetPictureTransparent(n, true) — устанавливает (b = True) или отключает (b = False) режим прозрачности при рисовании рисунка с описателем n. Если b = True, то при его рисовании фон не отображается. Фоновым считается цвет левого нижнего пиксела рисунка. Sleep(ms) — осуществляет паузу в выполнении программы на ms миллисекунд Использование процедуры перерисовки Redraw позволяет избежать моргания экрана. Действия с рисунком

3 Практическая работа Пусть автомобиль перемещается на фоне здания и деревьев слева направо на расстояние 400 пикселей. Загрузим изображения фона и автомобиля из файлов gorod.gif и avto.jpg, поместив их описатели в переменные fon и avto. Установим прозрачность фона для изображения автомобиля SetPictureTransparent(avto,true). Зададим начальные координаты (х, у), ширину w и высоту h изображения автомобиля. Все переменные имеют тип integer. Процедуры рисования и стирания будем повторять в цикле с предусловием While до тех пор, пока автомобиль не переместится на 400 пикселей. На каждом шаге цикла координату х левого верхнего угла изображения увеличиваем на 10. Ширину уменьшаем на 2, а высоту на 1 пиксель для уменьшения изображения при удалении.

4 program Avto1; uses GraphABC; var fon, avto, x,y, w,h: integer; begin SetWindowSize (600, 300); fon:= LoadPicture (‘город.gif’); avto:= LoadPicture (‘автомобиль.jpg’); SetPictureTransparent (avto, true); x:= 10; y:= 170; w:= 240; h:= 100; while x

5 Практическая работа program babochka; uses Graphabc; var f, b, x, y : integer; begin setwindowsize (450, 550); b:= LoadPicture (‘цветы.jpg’); f:= LoadPicture (‘бабочка.gif’); x:= 10; y:= 350; while x

6 Практическая работа Загрузим изображение циферблата из файла таймер.jpg, поместив описатель в переменную fori. Зададим координаты центра вращения стрелок (хО.уО) и начальные значения секунд sec:=0 и минут min:=0. На каждом шаге цикла с постусловием repeat. until будем увеличивать значение секунд на 1 до тех пор. пока время не превысит 60 мин. или не нажата любая клавиша (keyPressed). Значения минут вычислим целочисленным делением секунд на 60: min:= secdiv60. Секундную стрелку будем рисовать линией длиной 120 и толщиной 3 пикселя, а минутную и 7 пикселей. Радианная мера угла поворота секундной стрелки равна Pi*sec/30. а минутной Pi»min/30. Координаты концов стрелок (х,у) вычисляем по формулам тригонометрии и округляем до целых Например, для секундной стрелки x:=x0+Round

7 Практическая работа Program Timer; uses crt, GraphABC; var fon, x0, y0, x, y, R, min, sec: integer; begin SetWindowSize (360, 480); H ); repeat DrawPicture (fon, 0, 0); sec := sec + 1; min := sec div 60; x := x0 + Round (120 * sin (Pi * sec / 30)); y := y0 – Round (120 * cos (Pi * sec / 30)); SetPenW >= 60) or keyPressed; end. = 60) or keyPressed; end.»>

Материалы к урокам информатики, алгоритмики и программирования.
Чтобы просмотреть задание и материалы с урока, выберите ваш предмет!

Главная

понедельник, 20 апреля 2015 г.

Графический модуль PascalABC

SetPixel(x,y,color) – закрашивает один пиксел с координатами (x,y) цветом color ;
GetPixel(x,y) – возвращает текущее значение цвета для пиксела с координатами (x,y) ;
Line(x1,y1,x2,y2) – рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2) ;
Rectangle(x1,y1,x2,y2) – рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2) ;
Ellipse(x1,y1,x2,y2) – рисует эллипс, заданный своим описанным прямоугольником с координатами противоположных вершин (x1,y1) и (x2,y2) ;
RoundRect(x1,y1,x2,y2,w,h) – рисует прямоугольник со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев;
Circle(x,y,r) – рисует окружность с центром в точке (x,y) и радиусом r ;
Arc(x,y,r,a1,a2) – рисует дугу окружности с центром в точке (x,y) и радиусом r , заключенной между двумя лучами, образующими углы a1 и a2 с осью OX ( a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки);
Pie(x,y,r,a1,a2) – рисует сектор окружности, ограниченный дугой (параметры процедуры имеют тот же смысл, что и в процедуре Arc );
Chord(x,y,r,a1,a2) – рисует фигуру, ограниченную дугой окружности и отрезком, соединяющим ее концы (параметры процедуры имеют тот же смысл, что и в процедуре Arc );
MoveTo(x,y) – передвигает невидимое перо к точке с координатами (x,y) ; эта функция работает в паре с функцией LineTo(x,y) ;
LineTo(x,y) – рисует отрезок от текущего положения пера до точки (x,y) ; координаты пера при этом также становятся равными (x,y) ;
TextOut(x,y,s) – выводит строку s в позицию (x,y) (точка (x,y) задает верхний левый угол прямоугольника, который будет содержать текст из строки s );
FloodFill(x,y,c) – заливает область одного цвета цветом c , начиная с точки (x,y) ;
FillRect(x1,y1,x2,y2) – заливает прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2) , цветом текущей кисти;

Читать еще:  Ошибка невозможно считать данные

Polygon(a,n) – строит ломаную по n точкам, координаты которых заданы в массиве a элементов типа TPoint ;
Polyline(a,n) – строит замкнутую ломаную по n точкам, координаты которых заданы в массиве a элементов типа TPoint .

Работа с графикой в PascalABC

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

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

С их помощью можно создавать разнообразные графические изображения и сопровождать их текстовыми надписями.

Подключение осуществляется в разделе описаний.
Формат подключения модуля GraphABC:Uses GraphABC;

Графический экран PascalABC (по умолчанию) содержит 640 точек по горизонтали и 400 точек по вертикали. Начало отсчета – левый верхний угол экрана. Ось x направлена вправо, а ось y –вниз. Координаты исчисляются в пикселях.

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

Управление графическим окном

Процедуры рисования графических примитивов

Процедуры, используемые для работы с цветом

Процедуры для работы с текстом

Цвета в PascalABC

Пример графической программы, рисующей изображение дома:

Рисунок в PascalABC

Программа, рисующая фигурку:

Практическая работа за компьютером

Задание 1. Определите координаты и составьте программу, выводящую на экран рисунк дома и дерева.


Программа будет иметь вид:

Задание 2. Используя оператор цикла и введя переменную для пересчета координат по оси x, постройте «поселок», состоящий из 5 домов. Внесите соответствующие дополнения и изменения в предыдущую программу.

Весь наш «поселок» выстроился вдоль горизонтальной оси экрана — оси X. Построение рисунка начинается с левого верхнего угла стены первого дома — точки с координатами (100, 50). Координата Y не изменяется. Чтобы начать рисовать второй домик, нужно координату X увеличить на 150 (50 точек — ширина первого дома и 100 точек — расстояние между домиками).

Выберем в качестве параметра цикла целочисленную переменную X.
Для всех элементов нашего рисунка абсолютное значение координаты X заменим на относительное. Например, для стены дома процедура для рисования запишется следующим образом:

Сформулируем условие выполнения цыклических действий для нашей задачи.Какие координаты имеет левый верхний угол пятого дома? Конечное значение выбранного нами параметра цикла x = 700. Тогда условие выполнения цикла записывается так: x Да

Loadpicture pascal abc ошибка

Эта программа на подобие PAINT.

procedure keydown(key: integer);
begin

if key=Vk_up then S:=S+1;
if key=Vk_down then S:=S-1;

if key=Vk_left then A:=A-1;
if key=Vk_right then A:=A+1;

if A=0 then A:=A+1;
if A=11 then A:=A-1;

if S=0 then S:=S+1;
if S=10 then S:=S-1;

end;
procedure MouseDown(x,y,mb: integer);
begin
MoveTo(x,y);
end;
procedure MouseMove(x,y,mb: integer);
begin

if S=1 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clblack); setbrushcolor(clblack); circle(7,7,A); end;
if S=2 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clgreen); setbrushcolor(clgreen); circle(7,7,A); end;
if S=3 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clred); setbrushcolor(clred); circle(7,7,A); end;
if S=4 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clblue); setbrushcolor(clblue); circle(7,7,A); end;
if S=5 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clyellow); setbrushcolor(clyellow); circle(7,7,A); end;
if S=6 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clbrown); setbrushcolor(clbrown); circle(7,7,A); end;
if S=7 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clsilver); setbrushcolor(clsilver); circle(7,7,A); end;
if S=8 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clpurple); setbrushcolor(clpurple); circle(7,7,A); end;
if S=9 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(cllime); setbrushcolor(cllime); circle(7,7,A); end;

Читать еще:  Ошибка подключения к источнику потока

if mb=1 then circle(X,Y,A);
setbrushcolor(clwhite);
setpencolor(clwhite);
if mb=2 then circle(X,Y,A);
end;
begin
gotoxy(1,2);
write(‘меняйте цвет стрелками на клавиатуре вверх и вниз. стирать пкм, рисовать лкм.’);
gotoxy(5,1);
write(‘менять размер кисти стрелками влево и вправо.’);

Onkeydown:=keyDown;
OnMouseDown:=MouseDown;
OnMouseMove:=MouseMove
end.

Это оооочень сырая версия игры PAC MAN. но может-быть кому-то сойдёт за образец.

program pakman;
uses graphABC,events,ABCObjects,crt;

A,B,i:integer; // кординаты для перемещения

SPeed:integer; // скорость перемещения пакмана

AA:rectangleABC; //препятствия, стены и т.д.

L : integer; //жизни

K : integer; //ключи

procedure keydown(key: integer);
begin

if key=Vk_up then A:=A-speed;
if key=Vk_down then A:=A+speed;

if key=Vk_left then B:=B-speed;
if key=Vk_right then B:=B+speed;

if B>485 then B:=B-485; // X
if B 370 then A:=A-370; // Y
if A 100 then begin writeln(‘СЛИШКОМ БОЛЬШОЕ ЧИСЛО! ИНТЕРВАЛ: от 0 до 100’); T:=T+1; end;
if C C then writeln(‘нет, я загадала число побольше. ‘) else T:=T-1;
if B C then writeln(‘-1 жизнь’);
if B 280 then A:=A-SPEED;

if B 480 then B:=B-SPEED;

/////////////////////////////////////////
line(0,0,0,300);
line(20,0,20,300);
line(40,0,40,300);
line(60,0,60,300);
line(80,0,80,300);
line(100,0,100,300);
line(120,0,120,300);
line(140,0,140,300);
line(160,0,160,300);
line(180,0,180,300);
line(200,0,200,300);
line(220,0,220,300);
line(240,0,240,300);
line(260,0,260,300);
line(280,0,280,300);
line(300,0,300,300);
line(320,0,320,300);
line(340,0,340,300);
line(360,0,360,300);
line(380,0,380,300);
line(400,0,400,300);
line(420,0,420,300);
line(440,0,440,300);
line(460,0,460,300);
line(480,0,480,300);
line(0,20,500,20);
line(0,40,500,40);
line(0,60,500,60);
line(0,80,500,80);
line(0,100,500,100);
line(0,120,500,120);
line(0,140,500,140);
line(0,160,500,160);
line(0,180,500,180);
line(0,200,500,200);
line(0,220,500,220);
line(0,240,500,240);
line(0,260,500,260);
line(0,280,500,280);
line(0,300,500,300);
textout(480,283,’ F ‘);
setbrushcolor(clyellow);
textout(0,385,’кординаты: ‘);
gotoxy(11,25);
write(B,’ ‘,A);
/////////////////////////////////////////

Сообщения об ошибках периода выполнения Free Pascal

Invalid function number

Неправильный номер функции

Ошибка в задании пути

Too many open files

Слишком много открытых файлов

File access denied

Доступ к файлу запрещен

Invalid file handle

Файловая переменная повреждена

Invalid file access code

Ошибка в задании режима открытия файла

Invalid drive number

Ошибка в задании номера диска

Cannot remove current directory

Попытка удалить текущий каталог

Cannot rename across drives

Недопустимая попытка переименовать диски

Disk read error

Ошибка при чтении с диска (обычно при попытке чтения после EOF)

Disk write error

Ошибка при записи на диск

(обычно при переполнении диска)

File not assigned

Вы забыли выполнить оператор Assign

Обращение к файлу, который не был открыт

File not open for input

Обращение к файлу, который не был открыт для чтения

File not open for output

Обращение к файлу, который не был открыт для вывода

Invalid numeric format

Из текстового файла считано нечисловое значение

Disk is write-protected

Запись на диск запрещена

Bad drive request struct length

Ошибка в запросе к диску

Drive not ready

Устройство не готово

CRC error in data

Ошибка чтения (несовпадение контрольной суммы)

Disk seek error

Ошибка при поиске записи

Unknown media type

Неопознанный носитель информации

Sector Not Found

Сектор не найден

Printer out of paper

В принтере кончилась бумага

Device write fault

Техническая ошибка при записи

Device read fault

Техническая ошибка при чтении

Обращение к неподключенному устройству

Division by zero

Range check error

Индекс массива или значение переменной вне диапазона

Stack overflow error

Heap overflow error

Invalid pointer operation

Ошибочная операция с указателем (обычно при освобождении памяти с нулевым значением указателя)

Floating point overflow

Переполнение в операции с плавающей запятой

Floating point underflow

Исчезновение порядка в операции с плавающей запятой

Invalid floating point operation

Ошибка при выполнении операции с плавающей запятой (обычно при задании недопустимого аргумента стандартной функции)

Object not initialized

Попытка выполнить операцию над объектом, который не был инициализирован

Call to abstract method

Недопустимая попытка обращения к абстрактному методу

Stream registration error

При регистрации объекта в модуле встречен недопустимый тип данных

Collection index out of range

Индекс коллекции вне диапазона

Collection overflow error

Попытка добавить новый элемент к коллекции, заполненной до предельного размера

Arithmetic overflow error

Арифметическое переполнение (результат операции выходит за пределы допустимого диапазона)

General Protection fault

Попытка обращения к памяти, находящейся

за пределами ресурсов, выделенных приложению (в том числе и попытка обращения к данным по нулевому указателю)

Unhandled exception occurred

Возникновение непредусмотренного исключительного события

Ссылка на основную публикацию
Adblock
detector