|
|
@@ -0,0 +1,62 @@
|
|
|
+#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__ */
|