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