gpt4 book ai didi

c++ - 如何修复递归 Flood Fill 段错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:09:53 26 4
gpt4 key购买 nike

<分区>

您好,我正在制作一个简单的绘画程序来学习 sdl 和 C,当我运行我的代码时出现段错误,我认为这是因为它试图填充窗口外的像素,但我'我不确定如何阻止这种情况发生。有没有办法阻止递归访问窗口外?这是代码:很抱歉它有多乱。

void floodfill(SDL_Surface *canvas,int SCREEN_WIDTH, int SCREEN_HEIGHT, int x, int y, int boundingX, int boundingY, Uint32 src, Uint32 fillcolour)
{

Uint32 clickedColour = getPixel(canvas, x, y);
Uint32 boundingColour = getPixel(canvas, boundingX, boundingY); //make sure you are not exceeding the limits of the window.

printf("floodfill Inside\n");
printf("X&Y co-ords %d,%d\n",x,y);

if (src==fillcolour)
return;

if (x <= 0 || x <= SCREEN_WIDTH || y <= 0 || y <= SCREEN_HEIGHT)
{
printf("saying things!\n");
return;
}

printf("%d,%d\n",x,y);

if (fillcolour != clickedColour)
putPixel(canvas, x, y, fillcolour);

if (clickedColour !=boundingColour)
return;

if ((x>=0 && x<SCREEN_WIDTH) && (y>=0 && y<SCREEN_HEIGHT))
{
putPixel(canvas, x, y, fillcolour);
printf("put Pixel x=%d and y=%d\n", x, y);
}

floodfill(canvas,SCREEN_WIDTH, SCREEN_HEIGHT, x, y+1, x, y+2, src, fillcolour);
floodfill(canvas,SCREEN_WIDTH, SCREEN_HEIGHT, x, y, x+2, y, src, fillcolour);
floodfill(canvas,SCREEN_WIDTH, SCREEN_HEIGHT, x, y, x, y+2, src, fillcolour);
floodfill(canvas,SCREEN_WIDTH, SCREEN_HEIGHT, x+1, y, x+2, y, src, fillcolour);

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com