我有两个指针叫 Character *current = nullptr;
和 Character *target = nullptr;
.
我是通过一个函数来改变它们。
void Position::Current(const Vector2f & mouse_position, Character *& current)
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 5; j++)
{
if ((mouse_position.x >= 245 + i * 164 && mouse_position.x <= 370 + i * 164) &&
(mouse_position.y >= 56 + j * 201 && mouse_position.y <= 221 + j * 201))
{
current = &positioning[i][j];
cout << "Selected: " << current->name << endl;
cout << endl;
current->health -= 5; //it doesn't change anything
break;
}
}
}
}
Target()
函数也是用同样的方法实现的.
这两个函数都选择了正确的字符,但看起来这些都是原始对象的副本(我不能改变字符的统计)。
Character positioning[4][5]
是一个充满字符的数组。我可以通过函数将它们添加到特定的位置上。
void Position::Add(Character & character, int x, int y)
{
if ((x >= 0 && x < 4) && (y >= 0 && y < 5))
{
positioning[x][y] = character; //is this a problem ?
Character::position[x][y] = true;
character.x = x;
character.y = y;
}
}
Position
类中只有一个对象。
我可以通过函数将它们添加到特定的位置上:类只有一个对象,在 main()
它看起来像这样。
positionx.Add(knight, 3, 4);
positionx.Add(demon, 2, 4);
然后:
if ((event.type == Event::MouseButtonPressed) && (event.mouseButton.button == Mouse::Right))
{
Vector2i pos = Mouse::getPosition(window);
Vector2f position = (Vector2f)pos;
positionx.Current(position, current);
}
当前的功能应该从选定的角色身上拿走5个健康值,但没有发生任何事情。
我哪里做错了?
谢谢你的回答。
问题解决了!
我只需要让 Character positioning[4][5]
-> Character *positioning[4][5]
然后在点击某个字符后,终于开始表现得像一个原始对象。