SDL2 PointInRect If语句不工作

我正在做一个小游戏作为一个小项目,但我不能得到一个if语句来做任何事情。如果我成功了!不过,它是有效的。我运行这个if语句来查找;网格“;(我在for循环中渲染的数组或立方体我没有显示)鼠标单击。我在MAC上使用C++和SDL2。这是我的代码:

\include<iostream>
#包括<SDL2/SDL.h>
无效渲染器(SDL_渲染器*渲染器);
void-ToggleRect(int-MouseX,int-MouseY);
结构网格
{
布尔是活跃的;
SDL_Rect;
};
网格[228960];
int main()
{
bool IsRunning=true;
布尔·伊斯兰宁辛;
SDL_Init(SDL_Init_EVERYTHING);
SDL_Window*Window=SDL_CreateWindow(“我的游戏”,SDL_WINDOWPOS居中,SDL_WINDOWPOS居中,1000,780,SDL_Window显示,SDL_Window可调整大小);
SDL_渲染器*渲染器=SDL_CreateRenderer(窗口,-1,SDL_渲染器加速);
int h,w;
SDL_最大化窗口(窗口);
SDL_GetRenderOutputSize(渲染器、w和h);
同时(正在运行)
{
//标准::cout<<w<<标准::endl;
//标准::cout<<h<<标准::endl;
SDL_事件ev;
while(SDL_PollEvent(&ev))
{
如果(ev.type==SDL_退出)
{
IsRunning=false;
}
如果(ev.type==SDL_鼠标按钮)
{
int x,y;
SDL_GetMouseState(&x&y);
ToggleRect(x,y);
}
}
SDL_SetRenderDrawColor(渲染器,0,0,0,255);
SDL_渲染器(渲染器);
//渲染
渲染器(渲染器);
SDL_渲染器呈现(渲染器);
}
SDL_渲染器(渲染器);
SDL_窗口(窗口);
SDL_退出();
返回0;
}
无效渲染器(SDL_渲染器*渲染器)
{
对于(int i=0;i<1440;i+=10)
{
对于(int j=0;j<795;j+=10)
{
SDL_Rect Rect={i,j,10,10};
网格[i].Rect=Rect;
SDL_SetRenderDrawColor(渲染器,100100225);
SDL_RenderDrawRect(renderer和grid[i].Rect);
}
}
}
void-ToggleRect(int-MouseX,int-MouseY)
{
SDL_Point鼠标座;
MousePos.x=MouseX;
MousePos.y=MouseY;
对于(int i=0;i<228961;i++)
{
if(SDL_PointInRect(&MousePos,&grid[i].Rect))//这是不起作用的if。
{      
标准::cout<<i<<标准::endl;
}
}
}

我已经修好了。我不得不改变我的画法,因为它是在矩形上画图,然后在我改变颜色后显示。生成可能会影响它的矩形也有一个问题

发表评论