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

📄 ballpredict.cc

📁 该文件是包含了机器人足球比赛中的整个系统的代码
💻 CC
字号:
#include "BallPredict.h"
#include "../Common/Common.h"

// tests ball prediction. badly :)
BallPredict::BallPredict() {
  currentTrick = new BasicTricks::NullBody();
  headTrick = new BasicTricks::NullHead();
  isFollowingBall = false;
}

void BallPredict::NewReadyModel() {
  int hC=headTrick->Continue();
  char* hMsg = headTrick->GetErrorMsg(hC);
  if (!currentTrick->IsUsingHead() && (hC < 1)) {
    delete headTrick;
    if (strcmp(hMsg,"SEE_BALL") == 0) {
      headTrick = new HeadTricks::FollowBallWithHeadSticky(20);
      isFollowingBall=true;
    } else {
      headTrick = new HeadTricks::HeadPanForBall();
      isFollowingBall=false;
    }
    headTrick->Start();
  }

}

void BallPredict::NewPlayingModel() {
  static int blockingCount = 0;

  int cC = currentTrick->Continue();
  if (cC < 1  && strcmp(currentTrick->GetName(), "Kick") == 0) {
    delete currentTrick;
    currentTrick = new BasicTricks::NullBody();
    currentTrick->Start();
  }

  if (blockingCount == 0) {
    if (ballPrediction_.ShouldIDive()) {
      cout << "Kick Dammit, KICK!" << endl;
//      int direction = ballPrediction_.DiveDirection();
      delete currentTrick;
      //if (direction == BallPrediction::BP_LEFT) currentTrick = new BasicTricks::Kick(LocomotionCommand::TP_GOALIE_LEFT);
      //else if (direction == BallPrediction::BP_RIGHT) currentTrick = new BasicTricks::Kick(LocomotionCommand::TP_GOALIE_RIGHT);
      //else 
      currentTrick = new BasicTricks::Kick(LocomotionCommand::TP_GOALIE_BLOCK);
      currentTrick->Start();
      blockingCount ++;
      return;
    }

    int hC=headTrick->Continue();
    char* hMsg = headTrick->GetErrorMsg(hC);
    if (!currentTrick->IsUsingHead() && (hC < 1)) {
      delete headTrick;
      if (strcmp(hMsg,"SEE_BALL") == 0) {
        headTrick = new HeadTricks::FollowBallWithHeadSticky(20);
        isFollowingBall=true;
      } else {
        headTrick = new HeadTricks::HeadPanForBall();
        isFollowingBall=false;
      }
      headTrick->Start();
    }
  } else {
    blockingCount++;
    if (blockingCount > 19 /*ballPrediction_.diveTime*/) {
      delete currentTrick;
      currentTrick = new BasicTricks::Kick(99);
      currentTrick->Start();
      blockingCount = 0;
    }
  }
}

⌨️ 快捷键说明

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