長方形を塗りつぶすための単純な境界塗りつぶし方法(4接続アプローチを使用)を実装しようとしています。私は次のようにしました (以下のコード) が、四角形が正しく塗りつぶされていません: 四角形の半分の部分に達すると、塗りつぶしが停止します。
しかし、円を塗りつぶそうとすると、同じコードが正常に機能します。誰でも問題を解決するのを手伝ってもらえますか?
前もって感謝します
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
void boundfill(int xc, int yc, int r, int b) {
int cur;
cur = getpixel(xc, yc);
if (cur != b && cur != r) {
putpixel(xc, yc, r);
delay(1);
boundfill(xc + 1, yc, r, b);
boundfill(xc - 1, yc, r, b);
boundfill(xc, yc + 1, r, b);
boundfill(xc, yc - 1, r, b);
}
}
void main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "..\\bgi");
rectangle(100, 100, 300, 300);
boundfill(105, 105, 4, WHITE);
getch();
closegraph();
}
出力:
しかし、長方形に次の座標を使用すると、正常に機能します。与えられた座標:
rectangle(50, 50, 100 ,100);
boundfill(55, 55, 4, WHITE);
このため、出力は次のとおりです。