Графика - Free Pascal

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

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

Добрый день! Помогите пожалуйста с программой. Нарисовал снеговика, а вот раскрасить не получается. Цвет изменяется только у границ. Помогите пожалуйста.
Program Sneg;
uses graph;
var
   x, y: integer;
 
 begin
   initgraph(x, y,' ');
   setbkcolor(11);
   setcolor(11);
   x:= getmaxX div 2;
   y:= getmaxY-100;
   circle(x, y, 80);
   circle(x, y-140, 60);
   circle(x, y-240, 40);
   rectangle(x-35, y-330, x+35, y-280);
   rectangle(x-130, y-190, x-30, y-170);
   rectangle(x+30, y-190, x+130, y-170);
   line(x-15, y-220, x+15, y-220);
   line(x-25, y-230, x+5, y-245);
   line(x+5, y-245, x+5, y-230);
   line(x+5, y-230, x-25, y-230);
   circle(x-20, y-255, 5);
   circle(x+20, y-255, 5);
   setlinestyle(0, 0, 3);
   line(x-125, y-250, x-125, y+80);
   readln;
   end.

Решение задачи: «Графика»

textual
Листинг программы
Program Sneg;
uses graph,wincrt;
var
   x, y: integer;
 
 begin
   initgraph(x, y,' ');
   setcolor(11);
   setfillstyle(1,11);
   x:= getmaxX div 2;
   y:= getmaxY-100;
   fillellipse(x, y, 80,80);
   fillellipse(x, y-140, 60,60);
   fillellipse(x, y-240, 40,40);
   bar(x-130, y-190, x-30, y-170);
   bar(x+30, y-190, x+130, y-170);
   setcolor(7);
   setlinestyle(0, 0, 3);
   setfillstyle(1,7);
   bar(x-35, y-330, x+35, y-280);
   line(x-15, y-220, x+15, y-220);
   setcolor(11);
   line(x-125, y-250, x-125, y+80);
   setcolor(12);
   setlinestyle(0, 0, 1);
   line(x-25, y-230, x+5, y-245);
   line(x+5, y-245, x+5, y-230);
   line(x+5, y-230, x-25, y-230);
   setfillstyle(1,12);
   floodfill(x,y-235,12);
   setcolor(7);
   setfillstyle(1,7);
   fillellipse(x-20, y-255, 5,5);
   fillellipse(x+20, y-255, 5,5);
   readkey
   end.

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

  1. Объявление переменных x и y типа integer.
  2. Инициализация графического режима с помощью функции initgraph(x, y, ' ').
  3. Установка цвета и стиля заполнения фигур с помощью функций setcolor(11) и setfillstyle(1,11).
  4. Вычисление координат центра первой окружности с помощью выражений x:= getmaxX div 2; и y:= getmaxY-100.
  5. Отображение первой окружности с помощью функции fillellipse(x, y, 80,80).
  6. Отображение второй окружности с помощью функции fillellipse(x, y-140, 60,60).
  7. Отображение третьей окружности с помощью функции fillellipse(x, y-240, 40,40).
  8. Отображение первого прямоугольника с помощью функции bar(x-130, y-190, x-30, y-170).
  9. Отображение второго прямоугольника с помощью функции bar(x+30, y-190, x+130, y-170).
  10. Установка цвета и стиля линии с помощью функций setcolor(7) и setlinestyle(0, 0, 3).
  11. Отображение горизонтальной линии с помощью функции bar(x-35, y-330, x+35, y-280).
  12. Отображение вертикальной линии с помощью функции line(x-15, y-220, x+15, y-220).
  13. Установка цвета и стиля линии на черный с помощью функций setcolor(11) и setlinestyle(0, 0, 1).
  14. Отображение линии с помощью функции line(x-125, y-250, x-125, y+80).
  15. Отображение линии с помощью функции line(x-25, y-230, x+5, y-245).
  16. Отображение линии с помощью функции line(x+5, y-245, x+5, y-230).
  17. Отображение линии с помощью функции line(x+5, y-230, x-25, y-230).
  18. Установка цвета и стиля заполнения на черный с помощью функций setfillstyle(1,12).
  19. Заливка прямоугольника с помощью функции floodfill(x,y-235,12).
  20. Отображение двух точек с помощью функции fillellipse(x-20, y-255, 5,5).
  21. Отображение двух точек с помощью функции fillellipse(x+20, y-255, 5,5).
  22. Чтение ключа с помощью функции readkey.
  23. Конец программы с помощью ключевого слова end.

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


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

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

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