| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #ifndef __COMBINATION_H__
- #define __COMBINATION_H__
- #include "spdlog/spdlog.h"
- #include <string>
- /* 抽象团队类 */
- class AbstractTeam
- {
- public:
- AbstractTeam(std::string name) : m_name(name) {};
- virtual ~AbstractTeam() {}
- /* 设置父节点 */
- void setParent(AbstractTeam* parent) { m_parent = parent; }
- AbstractTeam* getParent() { return m_parent; }
- /* 获取名称 */
- std::string getName() { return m_name; }
- /* 判断是否有子节点 */
- virtual bool hasChildren() { return false;}
- /* 添加子节点 */
- virtual void add(AbstractTeam* team) {}
- /* 移除子节点 */
- virtual void remove(AbstractTeam* team) {}
- /* 战斗和现实团队信息 */
- virtual void fight() = 0;
- virtual void display() = 0;
- private:
- std::string m_name;
- AbstractTeam* m_parent = nullptr;
- };
- /* 叶子节点 */
- class LeafTeam : public AbstractTeam
- {
- public:
- using AbstractTeam::AbstractTeam;
- ~LeafTeam() override {}
- void fight() override
- {
- SPDLOG_INFO("{} + {} 与黑胡子的船员进行近距离肉搏战...");
- }
- void display() override
- {
- spdlog::info("Leaf Team: [{}]", getName());
- }
- };
- #endif /* __COMBINATION_H__ */
|