足球战术->排兵布阵之interpreter篇

原创 2001年12月08日 13:10:00

接上回:

http://www.csdn.net/develop/read_article.asp?id=11439

排兵布阵时使用interpreter模式,
可以让教练不用去hack,而是简单
的复用就可以完成复杂的战术。
在这个模式中,client是教练,
context是球队,abstractexpression
是基本打法,terminalexpression
是单个队员的打法,nonterminal
expression是一条线的打法,
好处是用类来表示打法,可以用
继承来改变或扩展打法;而且
"抽象打法树"中各节点的类的
实现大体类似,易于实现。缺点是
为每种打法定义一个类,当打法
很复杂时,很难维护。interpreter
和composite(组合进攻)在实现上
有很多相通之处,以下是需要考虑的
特殊问题:
1.抽象打法树的创建。可以使用经典
教科书上的打法,也可以由教练提供。
2.打法的实现可以采用visitor(全攻全守)
来实现。
3.当许多打法都以某个队员作为
最终完成者时,这个队员可以作为
flyweight来共享:)
代码如下:
class 基本打法{
public:
   基本打法();
   virtual ~基本打法();

   virtual bool 组织(球队&)=0;
   virtual 基本打法* 进攻(const char*,基本打法&)=0;
   virtual 基本打法* 防守(const char*,基本打法&)=0;
};

class 球队{
public:
    bool 找寻球员(const char*) const;
    void 赋给(球员打法*,bool);
};

class 左后卫打法:public 基本打法{
public:
   左后卫打法(const char*);
   virtual ~左后卫打法();

   virtual bool 组织(球队&);
   virtual 基本打法* 进攻(const char*,基本打法&);
   virtual 基本打法* 防守(const char*,基本打法&);
private:
   char* _左后卫号码;
};

class 双前锋打法:public 基本打法{
public:
    双前锋打法(基本打法*,基本打法*);
    virtual ~双前锋打法();

   virtual bool 组织(球队&);
   virtual 基本打法* 进攻(const char*,基本打法&);
   virtual 基本打法* 防守(const char*,基本打法&);
private:
   基本打法* _前锋甲;
   基本打法* _前锋乙;
};

poj2777 线段树+位+小总结

做了这道题才稍微理解了线段树中的两个重要操作,即PushDown传递标记和合并子区间这两个操作,也理解了标记的用途和正确使用方式。 总结一下,正常情况下线段树有两个重要数据,一个是信息一个是标记,信...
  • byijie
  • byijie
  • 2013年02月18日 00:21
  • 2052

敌兵布阵-树状数组

问题来源:hdu-1166 敌兵布阵 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线...
  • u014366015
  • u014366015
  • 2014年04月13日 08:10
  • 662

hdu1166 敌兵布阵 线段树 点更新

链接:点击打开链接 Input 第一行一个整数T,表示有T组数据。 每组数据第一行一个正整数N(N 接下来每行有一条命令,命令有4种形式: (1) Add i j,i和j为正整数,表示第i个营地增...
  • migu77777
  • migu77777
  • 2016年08月18日 23:29
  • 385

Android利用自定义View实现简单的足球战术板

参考自:http://blog.csdn.net/lmj623565791/article/details/46858663 学习Android初期,之前接触了一些UI设计,突发奇想想要做一个简单的足...
  • champion0324
  • champion0324
  • 2017年04月25日 13:37
  • 543

hdu1166排兵布阵

#include #include #include #define MAX 2000100 int a[50010]; using namespace std; struct Node///////...
  • u012441145
  • u012441145
  • 2014年07月20日 14:57
  • 225

hdu 1166 排兵布阵

树状数组或者线段树
  • xinag578
  • xinag578
  • 2015年04月22日 21:07
  • 304

Hdu 1166 排兵布阵

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 最基础的线段树问题。 单点更新,区间查找。 本题可以用树状数组做,但是线段树除了处理区间求...
  • niuox
  • niuox
  • 2013年06月04日 12:43
  • 687

HDU 4539 郑厂长系列故事――排兵布阵

/* 曼哈顿距离的定义是:两个点的坐标为(x1,y1),(x2,y2),两点的曼哈顿距离为|x1-x2|+|y1-y2| 题意:题上要求是两个士兵的距离不能是曼哈顿距离为2,意思就是这个点在同一行...
  • u013491149
  • u013491149
  • 2015年01月24日 09:45
  • 1963

《孙子兵法》读后感

近日初阅,《孙子兵法》,感触至深,收益良多。古今中外,文人骚客、军政大贾,莫不精研。吾一小辈,虽无亲历,却有感慨,孙武所言,字字千钧,摘录批注,略有添省,于此为记。 这是一部兵书,但实际上是一部战...
  • qdbszsj
  • qdbszsj
  • 2017年04月25日 14:41
  • 531

【搜索】方向数组不如排兵布阵

这是那道油井问题的题解,一般深搜就可以解决,注意深搜打标记的方式和地图边界的处理。 地图边界一般使用添加额外的一条界来区分( 0----x+1----y+1----0)。 这里的这...
  • zhenaodingpao
  • zhenaodingpao
  • 2013年11月20日 07:48
  • 763
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:足球战术->排兵布阵之interpreter篇
举报原因:
原因补充:

(最多只允许输入30个字)