basictricks.h

来自「该文件是包含了机器人足球比赛中的整个系统的代码」· C头文件 代码 · 共 124 行

H
124
字号
#ifndef BASICTRICKS_H
#define BASICTRICKS_H
// Bag of basic tricks

#include "../Common/LocomotionCommand.h"
#include "../Common/HeadCommand.h"
#include "Trick.h"

class BasicTricks {
public :

  class NullBody: public Trick {
  public: 
    NullBody() {}
    virtual int Start() {LocomotionCommand lc; lc.Set(LocomotionCommand::TP_DONOTHING,0.0,0.0,0.0,0.0,1.0); lcq_.Enqueue(0,lc); return 0;}
    virtual int Abort() {return 0;}
    virtual int Continue() {return 0;}
    virtual bool IsUsingHead() {return false;}
    virtual char* GetName() {return "NullBody";}
  };

  class NullBodyTime: public Trick {
  public: 
    NullBodyTime(int f) {maxFrames=f; frames=0;}
    virtual int Start() {frames=0; lcq_.SetTailWagging(true); LocomotionCommand lc; lc.Set(LocomotionCommand::TP_DONOTHING,0.0,0.0,0.0,0.0,1.0); lcq_.Enqueue(0,lc); return 1;}
    virtual int Abort() {return 0;}
    virtual int Continue() {if ((frames++) < maxFrames) return 1; else return 0;}
    virtual bool IsUsingHead() {return false;}
    virtual char* GetName() {return "NullBodyTime";}
  private:
    int maxFrames;
    int frames;    
  };

  class NullHead: public Trick {
  public: 
    NullHead() {}
    virtual int Start() {return 0;}
    virtual int Abort() {return 0;}
    virtual int Continue() {return 0;}
    virtual bool IsUsingHead() {return false;}
    virtual char* GetName() {return "NullHead";}
  };

  class Kick : public Trick {
  public:
    Kick(int); // preferred!
    Kick(int, bool); // allow direct head usage control
    Kick(int, bool, double); // set angle
    virtual int Start();
    virtual int Abort();
    virtual int Continue();
    virtual bool IsUsingHead();
    virtual char* GetErrorMsg(int);
    virtual char* GetName();
    int type; // this is just for my cout :(
  private:    
    Utilities utils;
    bool doEndKick;
    bool useHead;
    double angle;
  };

  class Step : public Trick {
  public: 
    Step(int,double,double,double,double,double);
    virtual int Start();
    virtual int Abort();
    virtual int Continue();
    virtual bool IsUsingHead();
    virtual char* GetErrorMsg(int);
    virtual char* GetName();
  private:
    Utilities utils;
    int type;
    double frontStrideLength;
    double backStrideLength;
    double turn;
    double strafe;
    double stepFrequency;
  };

  class MultiTrick : public Trick {
  public: 
    MultiTrick(int,...);
    MultiTrick(bool _timer, int, ...); // allows timing of MultiTricks
    virtual ~MultiTrick();
    virtual int Start();
    virtual int Abort();
    virtual int Continue();
    virtual bool IsUsingHead();
    virtual char* GetErrorMsg(int);
    virtual char* GetName();
    virtual Trick* GetCurrentTrick();

  private:
    bool timer;
    long startFrame;

    int count;
    int current;
    int previous;
    bool hasRunStart;
    Trick** tricks;
  };

  class SelectaTrick : public Trick {
  public:
    SelectaTrick(int _type);
    virtual ~SelectaTrick();
    virtual int Start();
    virtual int Abort();
    virtual int Continue();
    virtual bool IsUsingHead() {return true;}
    virtual char* GetErrorMsg(int);
    virtual char* GetName();
    virtual Trick* GetCurrentTrick();
  private:
    Trick* currentTrick;
    int type;
  };
};
#endif // BASICTRICKS_H

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?