Вопрос задан 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.Никак не могу закрасить треугольник,все время закрашивает и внутри и снаружи.Помогите пожалуйста.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Конысбай Гульбану.
{ Пример программы для процедуры 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) 
устанавливает текущий цвет, 
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для того чтобы правильно закрасить треугольник, можно использовать алгоритм "заливки" (flood fill). Для этого можно написать отдельную процедуру, которая будет заполнять область цветом, начиная с заданной точки, и продолжая заполнение в глубину (рекурсивно) до тех пор, пока не будет достигнута граница фигуры.

Вот пример кода, который добавляет процедуру "floodfill" и использует ее для закраски треугольника:

scss
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); setfill
0 0

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

Последние заданные вопросы в категории Информатика

Задать вопрос