Изобразить песочные часы с пересыпающимся песком внутри - Pascal ABC

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

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

Ребята кому не сложно сделайте вот что 1.изобразить песочные часы с пересыпающимся песком внутри 2.Дано предложение определить долю в % заданных букв 3.Дано слово определить является ли оно перевертышем 4.Одномерный массив F(N) заполнен случайным образом поменять местами первый и последний элементы и отсортировать массив по возрастанию методом выбора!Помогите я в паскале полный 0 Заранее благодарю!

Решение задачи: «Изобразить песочные часы с пересыпающимся песком внутри»

textual
Листинг программы
uses graphABC,crt;
var x,y,y0,ys,i,s: integer;
    k,q:real;
begin
setwindowsize(700,500);
write('Сколько секунд должны отсчитать часы? ');
readln(s);
setpencolor(clnavy);
arc(200,410,200,-8,61);    //это резервуары - арки
arc(400,410,200,119,-170);
arc(200,70,200,-60,7);
arc(400,70,200,173,-120);
setbrushcolor(clSilver);
setpencolor(clblack);
rectangle(170,50,430,30);     //это основания часов
rectangle(170,450,430,430);
floodfill(250,110,clSkyBlue);  // заливка стекла
floodfill(250,410,clSkyBlue);
k:=80; x:=300; q:=0;           //к - расстояние от х, q - коэффициент увеличения по х
for y:=130 to 230 do           //начинаем цикл для рисования полосочек (которыми нарисован песок)
    begin                         //это верхняя часть песка
    setpencolor(clNavy);
    line(round(x-k),y,round(x+k),y);      //рисуем линию песка с учетом расстояния от центра и коэффициента прироста
    k:=k-q; if y mod 25=0 then q:=q+0.45;   //в каждом цикле k уменьшается на q, а каждые 25 шагов по у  q увеличивается на 0,45
    end;
k:=80; x:=300; q:=0; y0:=430;
for y:=130 to 230 do                        //это нижняя часть песка и закрашивание верхней части голубым (как бы стирается песок)
    begin
    setpencolor(clSkyBlue);
    line(round(x-k),y,round(x+k),y);         //с линиями - что и прежде
    k:=k-q; if y mod 25=0 then q:=q+0.45;
    setpencolor(clNavy);
    line((x-100),430,x,y0);                  //здесь постепенно одна сторона линии поднимается по у, получается горка
    line(x,y0,(x+100),430);
    sleep(10*s);                              //пауза
    y0:=y0-1;
    for i:=1 to 20 do                        //полоса песка , 20 песчинок единовременно
        begin
        ys:=random(151)+250;                 //случайная позиция (для синего)
        putpixel(300,ys,clnavy);
         end;
    for i:=1 to 20 do
        begin
        ys:=random(101)+230;
        putpixel(300,ys,clSkyBlue);          //случайная позиция (для голубого)
         end;
    end;
setpencolor(clSkyBlue);                      //затираем струйку песка
line(300,250,300,330);
setpencolor(clnavy);
arc(200,410,200,-8,61);                      //это резервуары заново
arc(400,410,200,119,-170);
arc(200,70,200,-60,7);
arc(400,70,200,173,-120);
setbrushcolor(clSilver);
rectangle(170,50,430,30);
rectangle(170,450,430,430);
writeln(s,' секунд истекло!');
end.

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

  1. Установка размера окна программы в 700 на 500 пикселей.
  2. Запрос у пользователя количества секунд, которые должны отсчитать часы.
  3. Рисование арки, представляющей резервуар для песка.
  4. Рисование прямоугольника, представляющего основание часов.
  5. Рисование двух дуг, представляющих поток песка.
  6. Рисование 20 синих песчинок в верхней части потока песка.
  7. Рисование 20 голубых песчинок в нижней части потока песка.
  8. Рисование двух дуг заново, чтобы представить новый поток песка.
  9. Рисование двух прямоугольников, представляющих основание часов заново.
  10. Рисование 450-градусной дуги, представляющей струйку песка.
  11. Установка цвета кисти на серебристый.
  12. Рисование двух прямоугольников, представляющих основание часов заново.
  13. Вывод сообщения о том, сколько секунд истекло.
  14. Завершение программы.

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


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

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

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