接上回:
http://www.csdn.net/Develop/read_article.asp?id=11949
使用prototype模式,用其他队员牵制 对手的注意力,然后带球队员通过个人 技术甩脱对方的防守,单刀赴会得分 (clone)。就像皇马在西甲半程时齐达内 进的那个球。好处是在进攻进行时决定 是否射门或改用其他方法;动态控制 射门;改用不同球员来变化射门方式; 减少进攻需要的队员数;动态换人 改变进攻来改变战术。缺点是:需要 每个队员都有单刀赴会的能力,实现 起来比较困难:) 代码如下:
class 牵制队员:public 队员{ public: 牵制队员(中路*,左路*,右路*);
virtual 两路* 中路包抄 const; virtual 右路* 左路包抄 const; virtual 左路* 右路包抄 const; private: 两路* _中路包抄原型; 右路* _左路包抄原型; 左路* _右路包抄原型; };
左路* 牵制队员::右路包抄 const{ return _右路包抄原型->左路单刀; }
class 左路带球队员:public 带球队员{ public: 带球队员();
virtual void 启动(); virtual 左路* 左路单刀 const; private: /*...自己特性*/ };
左路* 左路带球队员::左路单刀() const{ return new 左路(*this); } 
|