C++ 我想画一个网格,当鼠标点击时,它会在黑色上改变颜色,但只有当我点击时,颜色才会改变

C++ 我想画一个网格,当鼠标点击时,它会在黑色上改变颜色,但只有当我点击时,颜色才会改变,c++,sfml,C++,Sfml,我想画一个网格,当鼠标点击时,它会在黑色上改变颜色,但单元格会立即重绘为白色有人能帮忙吗?我在这个问题上坐了几个小时,解决不了它 void DrawGrid(vector< vector<bool>> Level, RenderWindow &window, Event event){ int columns= Level[0].size(); int rows = Level.size(); Vector2f CellSize(40.f

我想画一个网格,当鼠标点击时,它会在黑色上改变颜色,但单元格会立即重绘为白色有人能帮忙吗?我在这个问题上坐了几个小时,解决不了它

void DrawGrid(vector< vector<bool>> Level, RenderWindow &window, Event event){
    int columns= Level[0].size();
    int rows = Level.size();

    Vector2f CellSize(40.f, 40.f);
    vector <vector<RectangleShape>> grid;
    grid.resize(rows);
    for (int i = 0; i < rows; i++)
        grid[i].resize(columns);
    vector<RectangleShape> LineR;
    vector<RectangleShape> LineC;
    Vector2f linesizeR(140.f, 0.f);
    Vector2f linesizeC(0.f, 140.f);
    Vector2i pos = Mouse::getPosition(window);
    vector <vector <bool>> isblack(rows);
    int x = ((pos.x - 100) / 40) - 1;
    int y = ((pos.y - 100) / 40) - 1;
    for (int i = 0; i < isblack.size(); i++)
    {
        for (int j = 0; j < columns; j++)
        {
            isblack[i].push_back(false);
        }
    }
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < columns; j++)
        {
            grid[i][j].setSize(CellSize);
            grid[i][j].setOutlineThickness(1.0f);
            if (Mouse::isButtonPressed(Mouse::Left)) {
                grid[x][y].setFillColor(Color::Black);
            }
            if (Mouse::isButtonPressed(Mouse::Right)) {
                grid[x][y].setFillColor(Color::White);
            }
            
            grid[i][j].setOutlineColor(Color::Black);
            grid[i][j].setPosition(i * 40.0f + 140.0f, j * 40 + 140.0f);
            window.draw(grid[i][j]);
        }
    }
}
void DrawGrid(向量级别、渲染窗口和窗口、事件){
int columns=级别[0]。大小();
int rows=Level.size();
Vector2f细胞大小(40.f,40.f);
矢量网格;
调整网格大小(行);
对于(int i=0;i

鼠标单击和您的单击有什么区别?你怎么不用鼠标点击?你是说按键吗?发出声音并使用麦克风?我真的很好奇。你的问题似乎不清楚。请回答你的问题。我不太确定,但也许你把事情搞糊涂了。在您的应用程序中应该有三个不同的关注点:1。电网2的(永久)存储。修改网格(并请求更新)的鼠标事件处理程序3。绘制栅格(及其当前值)的绘制事件。从您的代码片段中,我有一个印象,您混合了2。三,。这可能就是它不能令人满意地工作的原因。