Изобразить песочные часы с пересыпающимся песком внутри - 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.
Объяснение кода листинга программы
- Установка размера окна программы в 700 на 500 пикселей.
- Запрос у пользователя количества секунд, которые должны отсчитать часы.
- Рисование арки, представляющей резервуар для песка.
- Рисование прямоугольника, представляющего основание часов.
- Рисование двух дуг, представляющих поток песка.
- Рисование 20 синих песчинок в верхней части потока песка.
- Рисование 20 голубых песчинок в нижней части потока песка.
- Рисование двух дуг заново, чтобы представить новый поток песка.
- Рисование двух прямоугольников, представляющих основание часов заново.
- Рисование 450-градусной дуги, представляющей струйку песка.
- Установка цвета кисти на серебристый.
- Рисование двух прямоугольников, представляющих основание часов заново.
- Вывод сообщения о том, сколько секунд истекло.
- Завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д