• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

PASCAL ABC

bender93

Новые
Регистрация
19 Дек 2014
Сообщения
17
Реакции
0
Баллы
0
Помогите
Построить семейство разноцветных окружностей
 

Вложения

Графика в Турбо Паскале
Модуль Graph
 
Так.
Во-первых, если речь идет о Turbo Pascal и его модуле Graph, то что делает Pascal ABC в названии темы? У АВС, напомню, своя графика. Вы уж определитесь.
Во-вторых, в упор не вижу ничего цветного на Вашем рисунке:
Circles.webp
Что должно быть цветным - только контуры или заливка кругов? Напишите словами.
 
Прошу прощения!
1. Турбо Паскаль.
2.Только контуры.

Вот как пример
Построить семейство разноцветных окружностей, радиусы которых увеличваются.
PROGRAM A2;
USES GRAPH,CRT;
VAR Driver, Mode, X, Y, R: INTEGER;
BEGIN Driver:= Detect;
INITGRAPH (Driver, Mode, 'C:\BP\BGI');
WHILE NOT KeyPressed DO
BEGIN X:= GetMaxX DIV 2;
Y:= GetMaxY DIV 2;
R:=20;
SetFillStyle (1,2);
FloodFill (1,1,2);
REPEAT
SetColor (SUCC (RANDOM(16)));
SetFillStyle (1,SUCC(RANDOM(16)));
FillEllipse (X,Y,R,R);
DELAY (1000);
R:=R+ 10;
UNTIL (X+ R>= GetMaxX) OR (Y+ R>= GetMaxY) OR (KeyPressed);
ClearDevice;
END;
CloseGraph;
END.
 
Собственно, не очень понимаю, какая помощь Вам требуется. Образец программы есть, причем для более сложной задачи - заполненные круги. Задавайте цвет командой SetColor (можно также через случайный выбор), задавайте центры и радиусы окружностей и - вперед, с помощью команды Circle рисуйте. В чем проблемы?
 
Если все же речь идет о PascalABC, о чем название темы как бы намекает:
- советую использовать последние версии PascalABC.Net, они более-менее допиленные;
- графический модуль имеет название GraphABC, подключается так же, как и остальные модули, через команду uses;
- команду initgraph() использовать не нужно, графика и так работает;
- в этой реализации Pascal имеются особенности работы с примитивами, например, есть отдельные команды для вывода просто контура фигуры и заполненной фигуры;
- цвет линии устанавливается при изменении параметров пера, командой Pen.Color:=цвет;
- случайный цвет имеет специальную константу clRandom, которую можно указывать в качестве значения цвета;
- заполненная (залитая цветом) окружность выводится командой Circle(x,y,r);
- незаполненная окружность выводится командой DrawCircle(x,y,r);
- для решения вашей задачи советую задавать координаты центров окружностей в виде переменных, а радиус изменять в цикле от 10 до 30 с шагом 10, вывод трех окружностей оформить в виде процедуры;
- вызывайте процедуру рисования с новыми координатами необходимое количество раз.
 
Помогите
Построить семейство разноцветных окружностей

Собственно, не очень понимаю, какая помощь Вам требуется. Образец программы есть, причем для более сложной задачи - заполненные круги. Задавайте цвет командой SetColor (можно также через случайный выбор), задавайте центры и радиусы окружностей и - вперед, с помощью команды Circle рисуйте. В чем проблемы?

Образец конечно хорошо . Но я даже понятия не имею как эти круги заполнять))
 
2.Только контуры.
Но я даже понятия не имею как эти круги заполнять))
И как одно с другим вяжется? Если только контур, то зачем заполнять? А если Вы не понимаете, как вообще цветной кружок нарисовать - что же, ждите. Попробую выбрать время, покажу.
 
Вот так устроит?
Код:
Uses CRT,Graph;

Var
 D,X,Y,R,i,j,k,Dr:Word;
 Driver, Mode:Integer;

Begin
 Driver:= Detect;
 INITGRAPH (Driver, Mode, 'C:\BP\BGI');

 Randomize;
 D:=GetMaxY div 4;
 Dr:=D div 12;
 SetLineStyle(SolidLn,0,ThickWidth);
 for i:=0 to 2 do
  for j:=i to 2 do
   begin
    X:=(GetMaxX div 2)-D+D*j;
    Y:=(GetMaxY div 2)-D+D*i;
    for k:=0 to 2 do
     begin
      R:=(D div 4)-k*Dr;
      SetColor(Random(15)+1);
      Circle(X,Y,R);
     end;
   end;
 ReadKey;
End.
 

Вложения

  • AAAA01.webp
    AAAA01.webp
    9.5 KB · Просмотры: 79
Вот так устроит?
Код:
Uses CRT,Graph;

Var
 D,X,Y,R,i,j,k,Dr:Word;
 Driver, Mode:Integer;

Begin
 Driver:= Detect;
 INITGRAPH (Driver, Mode, 'C:\BP\BGI');

 Randomize;
 D:=GetMaxY div 4;
 Dr:=D div 12;
 SetLineStyle(SolidLn,0,ThickWidth);
 for i:=0 to 2 do
  for j:=i to 2 do
   begin
    X:=(GetMaxX div 2)-D+D*j;
    Y:=(GetMaxY div 2)-D+D*i;
    for k:=0 to 2 do
     begin
      R:=(D div 4)-k*Dr;
      SetColor(Random(15)+1);
      Circle(X,Y,R);
     end;
   end;
 ReadKey;
End.
Спасибо большое!
 
Назад
Сверху