一日一コード 25.スタックオーバーフロー

今日のお題は大変重要なペイントアルゴリズムだ。
このアルゴリズムは塗りつぶしや迷路探索やらSLGゲームの戦闘の時の行動範囲を捜査するのに使われる。
教育的にも実用的にも重要な意味を持つ。


今日の戦利品。

以下抜粋。C++ 最近こればっかりだな。

void CSurface::FillArea_f(int x, int y) //private: とりあえずRECTには未対応。
{
//if( x < 0 || y < 0) return FALSE;
if( (unsigned int)x >= 800 || (unsigned int)y >= 600 ) return ; //範囲外。
if( *Pixel(x,y) != FillArea_color_source ) return ; //色が違うならリターン。

*Pixel(x,y) = FillArea_color_dest;//塗りつぶす色なら塗りつぶす。
//次のピクセルへ。
FillArea_f(x,y+1);FillArea_f(x+1,y);
FillArea_f(x,y-1);FillArea_f(x-1,y);

return ;
}