⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basictricks.h

📁 该文件是包含了机器人足球比赛中的整个系统的代码
💻 H
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -