Есть ответ 👍

Составить графический алгоритм по коду:
unit unit1;
interface
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs, extctrls;
type
tform1 = class(tform)
timer1: ttimer;
image1: timage;
procedure timer1timer(sender: tobject);
procedure formcreate(sender: tobject);
private
{ private declarations }
public
{ public declarations }
cnt, oblakopos: integer;
raina: array [0..9] of integer; // массив дляд ождя
procedure drawsky(canvas: tcanvas; width, height, x, y: integer);
procedure drawrain(canvas: tcanvas; width, height, w, h, x, y: integer);
end;
var
form1: tform1;
implementation
{$r *.dfm}
procedure tform1.drawsky(canvas: tcanvas; width, height, x, y: integer);
begin
// рисуем небо
canvas.brush.color : = rgb( 0, 224, 255); //clblue;
canvas.rectangle(0, 0, width, height*3 div 5);
//рисуем землю
canvas.brush.color : = clgreen;
canvas.rectangle(0, height*3 div 5, width, height);
//рисуемо блако
canvas.pen.color : = clwhite;
canvas.brush.color : = clwhite;
canvas.ellipse(x , y-15, x+50, y+15);
canvas.ellipse(x-25, y-35, x+25, y+ 5);
canvas.ellipse(x-50, y-25, x, y+ 5);
end;
procedure tform1.drawrain(canvas: tcanvas; width, height, w, h, x, y: integer);
var
i: integer;
begin
for i : = low(raina) to high(raina) do begin
if raina[i] > 0 then begin // если больше 0 то рисуем каплю дождя
// в массиве содержится текущая высота капли. она смещается на x и y
canvas.moveto(x + i*w, y + h - raina[i]);
canvas.lineto(x + i*w, y + h - raina[i] + 20);
raina[i] : = raina[i] - 5;
end else begin // если 0, то случайным образом присваиваем высоту
if random(1000) < 100 then
raina[i] : = h;
end;
end;
end;
procedure tform1.timer1timer(sender: tobject);
begin
if (cnt < 300) or (cnt > 600) then
oblakopos : = oblakopos + 1;
drawsky(image1.canvas, image1.width , image1.height, oblakopos, 100);
if (cnt > 300) and (cnt < 600) then
drawrain(image1.canvas, image1.width , image1.height, 10, 200, oblakopos-50, 100);
cnt : = cnt + 1;
if cnt > 950 then //timer1.enabled : = false;
begin
cnt : = 0;
oblakopos : = cnt; // либо повтор цикла
end;
end;

procedure tform1.formcreate(sender: tobject);
begin
randomize;
cnt : = 0;
oblakopos : = cnt;
timer1.interval : = 20;
image1.width : = 660;
image1.height : = 500;
image1.picture.bitmap.width : = 640;
image1.picture.bitmap.height : = 480;
clientwidth : = 660;
clientheight : = 500;
fillchar(raina, sizeof(integer)*(high(raina)-low(raina)+1), 0);
form1.doublebuffered : = true;
end;
end.

133
287
Посмотреть ответы 1

Ответы на вопрос:

Stafia
4,6(1 оценок)

15 стаканчиков и 49 эскимо

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS