
Вопрос задан 23.04.2021 в 01:10.
Предмет Информатика.
Спрашивает Артовский Влад.
Помогите закрасить треугольник,используя floodfillКод: program AnimROB; uses crt, graph; var
grDriver, grMode: integer; var x, y, m: integer; procedure robot(x, y, m: integer); begin setcolor(9); setfillstyle(1,9); bar(x - 4 * m, y - 5 * m, x + 4 * m, y + 5 * m);setbkcolor(0); setcolor(9); setfillstyle(1,9); bar(x - 2 * m, y - 5 * m, x - 2 * m, y - 6 * m); setcolor(9); setfillstyle(1,9); bar(x + 2 * m, y - 5 * m, x + 2 * m, y - 6 * m); setcolor(9); setfillstyle(1,9); bar(x-2*m,y-6*m,x+2*m,y-5*m); setcolor(11);setfillstyle(1,11); bar(x-3*m,y-12*m,x+3*m,y-6*m); setcolor(8); setfillstyle(1,8); fillellipse(trunc(x - 1.5 * m), trunc(y - 11 * m), trunc(0.5 * m), trunc(0.5 * m)); setcolor(8); setfillstyle(1,8); fillellipse(trunc(x + 1.5 * m), trunc(y - 11 * m), trunc(0.5 * m), trunc(0.5 * m)); setcolor(5); setfillstyle(1,5); line(x - 4 * m, y - 5 * m, x - 7 * m, y + m); setcolor(5); setfillstyle(1,5); line(x + 4 * m, y - 5 * m, x + 7 * m, y + m); setcolor(9); setfillstyle(1,9); bar(x - 3 * m,y + 5 * m, x - m,y + 10 * m); setcolor(9); setfillstyle(1,9); bar(x + m,y + 5 * m, x + 3 * m,y + 10 * m); setcolor(12); setfillstyle(1,12);bar(x-m,y-8*m,x+m,y-7*m); setcolor(11); setfillstyle(1,11); bar(x - 3 * m, y - 10 * m, x - 4 * m, y - 7 * m); setcolor(11); setfillstyle(1,11); bar(x + 3 * m, y - 10 * m, x + 4 * m, y - 7 * m); setcolor(4); setfillstyle(1,4); fillellipse(x,trunc(y-9.3*m),trunc(0.3*m),trunc(0.3*m)); setcolor(4); setfillstyle(1,4); line(x-2*m,y-12*m,x,y-15*m);{здесь setcolor(4); setfillstyle(1,4); line(x,y-15*m,x+2*m,y-12*m);{и здесь мне надо закрасить треуголник putpixel(x,y-3*m,0); putpixel(x,y,0); putpixel(x,y+3*m,0); putpixel(trunc(x-1.5*m),y-11*m,14); putpixel(trunc(x+1.5*m),y-11*m,14); end; begin grDriver := Detect; InitGraph(grDriver, grMode, ''); x := 180; y := 280; m := 10; repeat robot(x, y, m); Delay(1000); x := x + 4; ClearDevice; until (x > 400); closegraph; end.Никак не могу закрасить треугольник,все время закрашивает и внутри и снаружи.Помогите пожалуйста.

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

Отвечает Конысбай Гульбану.
{ Пример программы для процедуры FloodFill }
Uses Graph,Crt;
Var Gd, Gm : Integer;
Begin
Gd:=Detect;
InitGraph(Gd, Gm, '');
If GraphResult <> grOk Then Halt(1);
SetColor(GetMaxColor);
Circle(50, 50, 20);
FloodFill(50, 50, GetMaxColor);
Readkey;
CloseGraph;
End.
Procedure FloodFill(X, Y : Integer; Border : Word);
Закрашивает замкнутую область, используя текущие стиль и цвет закраски.
Procedure SetFillStyle(Pattern : Word; Color : Word);
Устанавливает цвет и стиль закраски.
Procedure SetColor(Color : Word)
устанавливает текущий цвет,
Uses Graph,Crt;
Var Gd, Gm : Integer;
Begin
Gd:=Detect;
InitGraph(Gd, Gm, '');
If GraphResult <> grOk Then Halt(1);
SetColor(GetMaxColor);
Circle(50, 50, 20);
FloodFill(50, 50, GetMaxColor);
Readkey;
CloseGraph;
End.
Procedure FloodFill(X, Y : Integer; Border : Word);
Закрашивает замкнутую область, используя текущие стиль и цвет закраски.
Procedure SetFillStyle(Pattern : Word; Color : Word);
Устанавливает цвет и стиль закраски.
Procedure SetColor(Color : Word)
устанавливает текущий цвет,



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для того чтобы правильно закрасить треугольник, можно использовать алгоритм "заливки" (flood fill). Для этого можно написать отдельную процедуру, которая будет заполнять область цветом, начиная с заданной точки, и продолжая заполнение в глубину (рекурсивно) до тех пор, пока не будет достигнута граница фигуры.
Вот пример кода, который добавляет процедуру "floodfill" и использует ее для закраски треугольника:
scssprogram AnimROB;
uses crt, graph;
var grDriver, grMode: integer;
var x, y, m: integer;
procedure robot(x, y, m: integer);
begin
setcolor(9);
setfillstyle(1,9);
bar(x - 4 * m, y - 5 * m, x + 4 * m, y + 5 * m);
setbkcolor(0);
setcolor(9);
setfillstyle(1,9);
bar(x - 2 * m, y - 5 * m, x - 2 * m, y - 6 * m);
setcolor(9);
setfillstyle(1,9);
bar(x + 2 * m, y - 5 * m, x + 2 * m, y - 6 * m);
setcolor(9);
setfillstyle(1,9);
bar(x-2*m,y-6*m,x+2*m,y-5*m);
setcolor(11);
setfillstyle(1,11);
bar(x-3*m,y-12*m,x+3*m,y-6*m);
setcolor(8);
setfillstyle(1,8);
fillellipse(trunc(x - 1.5 * m), trunc(y - 11 * m), trunc(0.5 * m), trunc(0.5 * m));
setcolor(8);
setfillstyle(1,8);
fillellipse(trunc(x + 1.5 * m), trunc(y - 11 * m), trunc(0.5 * m), trunc(0.5 * m));
setcolor(5);
setfillstyle(1,5);
line(x - 4 * m, y - 5 * m, x - 7 * m, y + m);
setcolor(5);
setfillstyle(1,5);
line(x + 4 * m, y - 5 * m, x + 7 * m, y + m);
setcolor(9);
setfillstyle(1,9);
bar(x - 3 * m,y + 5 * m, x - m,y + 10 * m);
setcolor(9);
setfillstyle(1,9);
bar(x + m,y + 5 * m, x + 3 * m,y + 10 * m);
setcolor(12);
setfillstyle(1,12);
bar(x-m,y-8*m,x+m,y-7*m);
setcolor(11);
setfillstyle(1,11);
bar(x - 3 * m, y - 10 * m, x - 4 * m, y - 7 * m);
setcolor(11);
setfill


Топ вопросов за вчера в категории Информатика

Информатика 557

Информатика 33

Информатика 74

Информатика 12

Информатика 10

Информатика 33

Информатика 27
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili