У меня есть два указателя, называемые 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]
- массив, заполненный символами. Я могу добавить их в определенные c позиции по функциям:
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 единиц здоровья у выбранного персонажа, но ничего подобного не происходит.
Где я допустил ошибку?
Спасибо за любой ответ.