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

📄 arsaction.cpp

📁 多机器人目标围捕 用MFC自行设计了简单的机器人围捕场景。机器人策略采用注册机制易于机器人的策略的扩展。捕捉机器人策略应用了人工势场法。
💻 CPP
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -