2022-05-17 11:42:02 +00:00
|
|
|
#include <iostream>
|
2022-05-17 12:02:39 +00:00
|
|
|
#include <vector>
|
2022-05-17 11:42:02 +00:00
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
2022-05-17 12:02:39 +00:00
|
|
|
struct Params {
|
|
|
|
int life = 3;
|
|
|
|
int movement = 4;
|
|
|
|
int pos[2];
|
|
|
|
};
|
|
|
|
|
|
|
|
class Enemy: protected Params {
|
|
|
|
virtual void move() {};
|
|
|
|
friend void killAi(Enemy);
|
|
|
|
};
|
|
|
|
|
|
|
|
template <class TT>
|
|
|
|
|
|
|
|
class Palladin : public Enemy {
|
|
|
|
TT stamina;
|
|
|
|
string weapon = "sword";
|
|
|
|
int mana = 10;
|
|
|
|
public:
|
|
|
|
void move(int x, int y) {
|
|
|
|
if (movement > x && movement > y) {
|
|
|
|
pos[0] = x;
|
|
|
|
pos[1] = y;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
void killAi(Enemy e) {
|
|
|
|
e.life = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <class TTTT>
|
|
|
|
|
|
|
|
TTTT upgradeAi(TTTT e) {
|
|
|
|
return e;
|
|
|
|
}
|
|
|
|
|
2022-05-17 11:42:02 +00:00
|
|
|
int main()
|
|
|
|
{
|
2022-05-17 12:02:39 +00:00
|
|
|
Palladin<vector<int>> jerzy;
|
|
|
|
Enemy kretoszczur;
|
|
|
|
jerzy.move(1, 1);
|
|
|
|
killAi(jerzy);
|
|
|
|
killAi(kretoszczur);
|
|
|
|
|
|
|
|
upgradeAi(jerzy);
|
|
|
|
upgradeAi(kretoszczur);
|
|
|
|
upgradeAi("kolonia");
|
2022-05-17 11:42:02 +00:00
|
|
|
}
|