如何在运行时使用c ++数组并更改其持有的值?

时间:2018-11-27 17:52:41

标签: c++ arrays

这里是新手的问题。

因此,我有一个int数组,并使用sfml使用了这个int数组将纹理映射到网格状结构中的屏幕。我想知道如何在运行时知道鼠标在数组上方的正方形。

int mapArr[] = { 
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
}

^类似的东西。

因此,使用如下所示的方法会将最左上角的正方形更改为其他纹理。

mapArr[0] = { 1 };

int mapArr[] = { 
1, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
}

那么如果我的鼠标在左上方的正方形上方并且想要执行诸如mapArr [0] = {1}之类的操作,我将如何实现呢?在运行时?

https://gist.github.com/jbax86/94ee0b326a30f4dd80efbb33791f6728

1 个答案:

答案 0 :(得分:0)

// 25x15 array for 800x600 display are my settings.
int mapArr[];    

int MouseToMap(int x, int y, int val)
{
    mapArr[25 * y + x] = val;
};

// at a calling location inside main somewhere.  
// for sfml I put it in the event listening part of loop.
// 25 is tiles across not 0 indexed,
// 32 is tile width of tile in pixels.

sf::vector2i mVal = sf::Mouse::getPosition(window);
MouseToMap(mVal.x / 32, mVal.y / 32, 3);