arsaction.cpp
来自「多机器人目标围捕 用MFC自行设计了简单的机器人围捕场景。机器人策略采用注」· C++ 代码 · 共 70 行
CPP
70 行
#include "StdAfx.h"
#include "ARSAction.h"
deque <REGISTACTIONITEM> ARSAction::ms_dequeActionRegister;
int ARSAction::ms_iActionNum = 0;
ARSAction::ARSAction()
{
ms_iActionNum++;
}
DestoryActions();
ARSAction::~ARSAction()
{
ms_iActionNum--;
if (ms_iActionNum==0) {
}
}
bool ARSAction::RegistOneAction(char * name,POINTER_CREATEACTION_FUNC pfnAction)
{
int nLen;
for(int i=0;i<(int)ms_dequeActionRegister.size();i++)
{
nLen = strlen(ms_dequeActionRegister[i].name);
if (strncmp(ms_dequeActionRegister[i].name,name,nLen)==0 && name[nLen]=='\0')
{
return true;
}
}
REGISTACTIONITEM TmpActionItem ;
strcpy(TmpActionItem.name,name);
TmpActionItem.pfnCreateAction = pfnAction;
TmpActionItem.pAction = NULL;
ms_dequeActionRegister.push_back(TmpActionItem);
return true;
}
void ARSAction::DestoryActions()
{
for (int i=0;i<(int)ms_dequeActionRegister.size();i++) {
if (ms_dequeActionRegister[i].pAction) {
delete ms_dequeActionRegister[i].pAction;
ms_dequeActionRegister[i].pAction = NULL;
}
}
ms_dequeActionRegister.clear();
}
ARSAction* ARSAction::GetTheAction(char * name)
{
int nLen;
int j =ms_dequeActionRegister.size();
for(int i=0;i<(int)ms_dequeActionRegister.size();i++)
{
nLen = strlen(ms_dequeActionRegister[i].name);
if (strncmp(ms_dequeActionRegister[i].name,name,nLen)==0 && name[nLen]=='\0')
{
if (ms_dequeActionRegister[i].pAction == NULL)
ms_dequeActionRegister[i].pAction = (ms_dequeActionRegister[i].pfnCreateAction)();
return ms_dequeActionRegister[i].pAction;
}
}
return NULL;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?