这里是新手的问题。
因此,我有一个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
答案 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);