Доступ к двум экземплярам

Я хочу запрограммировать небольшую игру на C ++.

Я хочу написать метод «Атака», который устанавливает состояния фигуры после атаки.
У меня есть два экземпляра игрок и враг. Класс выглядит так:

class figure {
private:
string name;
int    hp;
int    strength;
int    defense;

public:
void attack(int xstrength) {
// This method gets the Input values of the player and should calculate
// and set the new hp stats of the enemy after an attack, sort of

hp = hp - (xstrength - defense);
}
};

Но как я могу назвать этот метод? Мне нужно запрограммировать отдельный метод, который только получает
значение силы экземпляра ?, потому что я не могу назвать экземпляры следующим образом:

enemy.attack();

Потому что мне нужно ввести силу экземпляра игрока.
Или я могу получить доступ только к одному значению экземпляра, например,

enemy.attack(player->get_xstrength)

с помощью метода:

void get_strength() {
return stength
};

Если я добавлю фигуру класса с большим количеством значений, таких как, сопротивление, уровень, статус и т. Д., Я должен
запрограммируйте много методов get и set.

0

Решение

Вместо этого ваш метод должен быть:

void attack(figure & target) {
target.hp -= strength - target.defense;
}

Таким образом, вы указываете цель, которую атакует фигура, и которая может дать вам доступ к свойствам атакуемой фигуры. Тогда ты можешь:

figure player, enemy;
enemy.attack(player);

Также обратите внимание, что у вас должен быть какой-то метод, который устанавливает эти свойства, которые являются частными и не устанавливаются в конструкторе, поэтому в классе, как сейчас, нет способа установить эти значения, то есть они будут представление мусорной памяти, или в лучшем случае — нули, в зависимости от реализации компилятора.

И последнее, но не менее важное: вы можете также захотеть выполнить проверку после вычисления целевого значения hp, чтобы увидеть, жива ли эта фигура, т.е. if (target.hp <= 0) ... // "target" is dead

0

Другие решения


По вопросам рекламы [email protected]