Wingraph, отображается черный экран - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Хочу сделать в програме так, чтоб шарик улетал, но чтобы не было мерцания, решила использовать wingraph. Но при запуске программы открывается просто чорное окно. Подскажите, где у меня ошибки и как их исправить. Процедуры mouse i sharuk я написала отдельно, вот код главной части программы:
Листинг программы
  1. Uses Crt, Graph, wingraph;
  2. Var Gd, Gm, x, y, i : Integer;
  3. clip:boolean;
  4. //здесь идут процедуры
  5. Begin
  6. clrscr;
  7. InitGraph(Gd, Gm, ' ');
  8. If GraphResult <> grOk Then Halt(1);
  9. mouse(300,200);
  10. sharuk(300,200);
  11. x:=300;
  12. y:=200;
  13. for i:=1 to 100 do begin
  14. UpdateGraph(UpdateOff);
  15. setviewport(x+134,y+174, x+345,y-12,clip);
  16. setfillstyle(1, 3);
  17. bar(x+134,y+174, x+345,y-12);
  18. x:=x+1;
  19. y:=y-1;
  20. setviewport(x+134, y+174, x+345, y-12,clip);
  21. sharuk(x,y);
  22. UpdateGraph(UpdateNow);
  23. end;
  24. repeat until keypressed;
  25. closegraph
  26. end.

Решение задачи: «Wingraph, отображается черный экран»

textual
Листинг программы
  1. begin
  2.   gd := d8bit; gm := m800x600;
  3.   InitGraph(Gd, Gm, '');
  4.   if GraphResult <> grOk Then Halt(1);
  5.   mouse(300, 200);
  6.   sharuk(300, 200);
  7.   x := 300;
  8.   y := 200;
  9.  
  10.   repeat
  11.     UpdateGraph(UpdateOff);
  12.     cleardevice;
  13.     mouse(300, 200);
  14.     x := x + 1;
  15.     y := y - 1;
  16.    
  17.     if (x > getmaxx) or (y < 0) then
  18.     begin
  19.       x := 300;
  20.       y := 200;
  21.     end;
  22.     sharuk(x, y);
  23.     UpdateGraph(UpdateNow);
  24.     delay(10);
  25.   until keypressed;
  26.   closegraph
  27. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы