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.

Объяснение кода листинга программы

  1. gd := d8bit; — Здесь переменной gd присваивается значение d8bit. Это значение используется в дальнейшем для определения режима графики.
  2. gm := m800x600; — Здесь переменной gm присваивается значение m800x600. Это значение используется в дальнейшем для определения режима графики.
  3. InitGraph(Gd, Gm, '') — Здесь функция InitGraph инициализирует графическую библиотеку с использованием переменной gd и gm. Пустая строка '' передается в качестве сообщения об ошибке.
  4. if GraphResult <> grOk Then Halt(1); — Здесь проверяется, успешно ли инициализирована графическая библиотека. Если нет, программа завершается с ошибкой.
  5. mouse(300, 200); — Здесь функция mouse устанавливает начальную позицию курсора в 300,200.
  6. sharuk(300, 200); — Здесь функция sharuk рисует точку в текущей позиции курсора.
  7. x := 300; — Здесь переменной x присваивается значение 300.
  8. y := 200; — Здесь переменной y присваивается значение 200.
  9. repeat — Здесь начинается цикл.
  10. UpdateGraph(UpdateOff); — Здесь функция UpdateGraph обновляет графическую библиотеку с использованием параметра UpdateOff, который указывает, что изменения графики не будут немедленно отображаться.
  11. cleardevice; — Здесь функция cleardevice очищает текущее графическое окно.
  12. mouse(300, 200); — Здесь функция mouse перемещает курсор в позицию 300,200.
  13. x := x + 1; — Здесь переменной x присваивается новое значение, равное текущему значению x плюс 1.
  14. y := y — 1; — Здесь переменной y присваивается новое значение, равное текущему значению y минус 1.
  15. if (x > getmaxx) or (y < 0) then — Здесь начинается условная конструкция. Если текущее значение x больше getmaxx (ширина экрана) или если текущее значение y меньше 0 (вверхняя граница экрана), то выполняется блок кода внутри конструкции.
  16. x := 300; — Здесь переменной x присваивается значение 300, чтобы вернуться к начальной позиции курсора.
  17. y := 200; — Здесь переменной y присваивается значение 200, чтобы вернуться к начальной позиции курсора.
  18. sharuk(x, y); — Здесь функция sharuk рисует точку в текущей позиции курсора.
  19. UpdateGraph(UpdateNow); — Здесь функция UpdateGraph обновляет графическую библиотеку с использованием параметра UpdateNow, который указывает, что изменения графики будут немедленно отображаться.
  20. delay(10); — Здесь функция delay задерживает выполнение программы на 10 миллисекунд.
  21. until keypressed; — Здесь начинается цикл, который продолжается до тех пор, пока не будет нажата клавиша.
  22. closegraph — Здесь функция closegraph закрывает графическую библиотеку.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы