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
закрывает графическую библиотеку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д