Wingraph, отображается черный экран - Free Pascal
Формулировка задачи:
Хочу сделать в програме так, чтоб шарик улетал, но чтобы не было мерцания, решила использовать wingraph. Но при запуске программы открывается просто чорное окно. Подскажите, где у меня ошибки и как их исправить. Процедуры mouse i sharuk я написала отдельно, вот код главной части программы:
Uses Crt, Graph, wingraph; Var Gd, Gm, x, y, i : Integer; clip:boolean; //здесь идут процедуры Begin clrscr; InitGraph(Gd, Gm, ' '); If GraphResult <> grOk Then Halt(1); mouse(300,200); sharuk(300,200); x:=300; y:=200; for i:=1 to 100 do begin UpdateGraph(UpdateOff); setviewport(x+134,y+174, x+345,y-12,clip); setfillstyle(1, 3); bar(x+134,y+174, x+345,y-12); x:=x+1; y:=y-1; setviewport(x+134, y+174, x+345, y-12,clip); sharuk(x,y); UpdateGraph(UpdateNow); end; repeat until keypressed; closegraph end.
Решение задачи: «Wingraph, отображается черный экран»
textual
Листинг программы
begin gd := d8bit; gm := m800x600; InitGraph(Gd, Gm, ''); if GraphResult <> grOk Then Halt(1); mouse(300, 200); sharuk(300, 200); x := 300; y := 200; repeat UpdateGraph(UpdateOff); cleardevice; mouse(300, 200); x := x + 1; y := y - 1; if (x > getmaxx) or (y < 0) then begin x := 300; y := 200; end; sharuk(x, y); UpdateGraph(UpdateNow); delay(10); until keypressed; closegraph end.
Объяснение кода листинга программы
gd := d8bit;
— Здесь переменнойgd
присваивается значениеd8bit
. Это значение используется в дальнейшем для определения режима графики.gm := m800x600;
— Здесь переменнойgm
присваивается значениеm800x600
. Это значение используется в дальнейшем для определения режима графики.InitGraph(Gd, Gm, '')
— Здесь функцияInitGraph
инициализирует графическую библиотеку с использованием переменнойgd
иgm
. Пустая строка''
передается в качестве сообщения об ошибке.if GraphResult <> grOk Then Halt(1);
— Здесь проверяется, успешно ли инициализирована графическая библиотека. Если нет, программа завершается с ошибкой.mouse(300, 200);
— Здесь функцияmouse
устанавливает начальную позицию курсора в 300,200.sharuk(300, 200);
— Здесь функцияsharuk
рисует точку в текущей позиции курсора.x := 300;
— Здесь переменнойx
присваивается значение 300.y := 200;
— Здесь переменнойy
присваивается значение 200.repeat
— Здесь начинается цикл.UpdateGraph(UpdateOff);
— Здесь функцияUpdateGraph
обновляет графическую библиотеку с использованием параметраUpdateOff
, который указывает, что изменения графики не будут немедленно отображаться.cleardevice;
— Здесь функцияcleardevice
очищает текущее графическое окно.mouse(300, 200);
— Здесь функцияmouse
перемещает курсор в позицию 300,200.x := x + 1;
— Здесь переменнойx
присваивается новое значение, равное текущему значениюx
плюс 1.y := y — 1;
— Здесь переменнойy
присваивается новое значение, равное текущему значениюy
минус 1.if (x > getmaxx) or (y < 0) then
— Здесь начинается условная конструкция. Если текущее значениеx
большеgetmaxx
(ширина экрана) или если текущее значениеy
меньше 0 (вверхняя граница экрана), то выполняется блок кода внутри конструкции.x := 300;
— Здесь переменнойx
присваивается значение 300, чтобы вернуться к начальной позиции курсора.y := 200;
— Здесь переменнойy
присваивается значение 200, чтобы вернуться к начальной позиции курсора.sharuk(x, y);
— Здесь функцияsharuk
рисует точку в текущей позиции курсора.UpdateGraph(UpdateNow);
— Здесь функцияUpdateGraph
обновляет графическую библиотеку с использованием параметраUpdateNow
, который указывает, что изменения графики будут немедленно отображаться.delay(10);
— Здесь функцияdelay
задерживает выполнение программы на 10 миллисекунд.until keypressed;
— Здесь начинается цикл, который продолжается до тех пор, пока не будет нажата клавиша.closegraph
— Здесь функцияclosegraph
закрывает графическую библиотеку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д