Программа пишет, что выполняется, но ничего не выводит - PascalABC.NET

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

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

Нашёл код в интернете, решил полюбоваться. Данная программа должна выводить изображение сердца, но когда я её запускаю, пишет, что программа выполняется, хотя никакого вывода изображения нет. Может, код с двумя подключенными модулями как-то по особенному запускать надо? Подскажите пожалуйста, в чём проблема.

Решение задачи: «Программа пишет, что выполняется, но ничего не выводит»

textual
Листинг программы
uses graphABC;
 
var theEnd : Boolean := False;
 
procedure KeyPress(Key : Char);
begin
  theEnd := True;
end;
 
procedure MouseUp(x,y,mb: integer);
begin
  theEnd := True;
end;
 
procedure BlackPoint;
begin
  var dy := random(WindowHeight);
  var dx := random(WindowWidth);
  
  var c := GetPixel(dx, dy);
  if GetGreen(c) < 128 then
    SetPixel(dx, dy, clblack)
  else
    SetPixel(dx, dy, clblue);
end;
 
begin
  setpencolor(clblue);
  setpenwidth(6);
  {1}line(300, 300, 150, 150);
  {2}line(150, 150, 150, 100);
  {3}line(150, 100, 180, 80);
  {4}line(180, 80, 210, 80);
  {5}line(210, 80, 300, 130);
  {6}line(300, 130, 390, 80);
  {7}line(390, 80, 420, 80);
  {8}line(420, 80, 450, 100);
  {9}line(450, 100, 450, 150);
  {0}line(450, 150, 300, 300);
  floodfill(190, 130, clred);
  
  OnKeyPress := KeyPress;
  OnMouseUp := MouseUp;
  
  var dt := System.DateTime.Now;
  repeat
    BlackPoint;
    
    if (system.datetime.Now-dt).TotalMilliseconds > 100 then
      begin
        dt := System.Datetime.Now;
        Redraw;
      end;
  until theEnd;
  
  Window.Close;
end.

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

  1. Объявлена переменная theEnd типа Boolean, которая инициализируется значением False.
  2. Создана процедура KeyPress, которая принимает в качестве параметра символ Key. В этой процедуре значение переменной theEnd устанавливается в True.
  3. Создана процедура MouseUp, которая принимает в качестве параметров координаты x, y и mb. В этой процедуре значение переменной theEnd устанавливается в True.
  4. Создана процедура BlackPoint, которая выбирает случайные координаты на экране и, если значение зелёного канала цвета пикселя меньше 128, закрашивает этот пиксель чёрным цветом, иначе закрашивает синим.
  5. Начальные координаты для линий и прямоугольника задаются с помощью функций line и floodfill соответственно. Значение переменной theEnd устанавливается в True.
  6. Задаются функции обратного вызова для обработчиков нажатия клавиш и отпускания кнопки мыши.
  7. Задаётся начальное время в миллисекундах с помощью функции System.DateTime.Now.
  8. В цикле repeat, который выполняется до тех пор, пока не будет выполнено условие, указанное в операторе until, вызывается функция BlackPoint. Если прошло больше 100 миллисекунд с момента последнего обновления экрана, то выполняется функция Redraw, которая обновляет экран. Значение переменной theEnd устанавливается в True.
  9. Закрывается окно программы с помощью функции Window.Close.

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


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

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

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