#99 Article 171 Posted at 1992/02/17 13:57:57 by おちゃ (MAP1512) [PAINT]
Subject: Re:*4 領域ペイント /170 ... /167 /164
再帰的定義通りですと、VRAMが [0..XMAX, 0..YMAX] の2次元配列として、
色 color で囲まれた領域を同じ色で塗りつぶすとき、以下のようになります。
procedure paint(x, y : integer); (* 塗りつぶし *)
begin
if (0 <= x) and (x <= XMAX) and (0 <= y) and (y <= YMAX) (* 範囲`ェック *)
and (VRAM[x, y] <> color) then (* まだ塗ってない点かしら? *)
begin
VRAM[x, y] := color; (* その点を塗って *)
paint(x-1, y);
paint(x+1, y);
paint(x, y-1);
paint(x, y+1) (* 回りを見回す *)
end
end;
でもこれはスタックがあふれるし、無駄が多すぎるので、普通使いません。(^^;
実用的になるよう工夫を凝らしたのが、ちゃい大先生のプログラムです。
でも、このアルゴリズムは並列処理に有効ですねん おちゃ