Помогите закрасить треугольник,используя floodfillКод: program AnimROB; uses crt, graph;...

0 голосов
84 просмотров

Помогите закрасить треугольник,используя 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.

Никак не могу закрасить треугольник,все время закрашивает и внутри и снаружи.Помогите пожалуйста.


Информатика (21 баллов) | 84 просмотров
Дан 1 ответ
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) 
устанавливает текущий цвет, 

(498 баллов)
0

PROGRAM ZD;
Uses graphabc;
Begin
setwindowsize(640,480);
clearwindow(clWhite); {î÷èùàåò ãðàôè÷åñêîå îêíî áåëûì öâåòîì}
setpenwidth(3); {óñòàíàâëèâàåò øèðèíó òåêóùåãî ïåðà}

0

setpenstyle(pssolid);{óñòàíàâëèâàåò ñòèëü ëèíèè - ñïëîøíàÿ ëèíèÿ}
setpencolor(clgreen); {óñòàíàâëèâàåò çåëåíûé öâåò ïåðà}
line(100,200,170,70); {ðèñóåò ëèíèè çåëåíûì öâåòîì}
line(170,70,250,200);
line(250,200,100,200);
floodfill(150,120,clrandom); {Çàêðàøèâàåò òðåóãîëüíèê öâåòîì random}
End.

0

В комментариях выше я написала программу, которая закрашивает треугольник Random цветом

0

К сожалению сначала не нашла,где вы написали.Но затем нашла,но закрашивает все равно все.

0

а вам, что нужно закрашивать?

0

вы правильно поняли,мне надо треугольник закрасить,у которого координаты -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);И мне надо закрасить этот треугольник внутри.

0

а что я не так делаю (просто измени мои координаты)

0

Да нет вы может так делаете,но я изменяю под свои и у меня закрашивает треугольник и весь экран.