Я хочу запрограммировать небольшую игру на 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.
Вместо этого ваш метод должен быть:
void attack(figure & target) {
target.hp -= strength - target.defense;
}
Таким образом, вы указываете цель, которую атакует фигура, и которая может дать вам доступ к свойствам атакуемой фигуры. Тогда ты можешь:
figure player, enemy;
enemy.attack(player);
Также обратите внимание, что у вас должен быть какой-то метод, который устанавливает эти свойства, которые являются частными и не устанавливаются в конструкторе, поэтому в классе, как сейчас, нет способа установить эти значения, то есть они будут представление мусорной памяти, или в лучшем случае — нули, в зависимости от реализации компилятора.
И последнее, но не менее важное: вы можете также захотеть выполнить проверку после вычисления целевого значения hp, чтобы увидеть, жива ли эта фигура, т.е. if (target.hp <= 0) ... // "target" is dead