void AllianceAreaPopupView::refreshShowNode(bool isDrag/* = true*/){
    CCPoint pt = getMovePoint();
    if(!pt.equals(ccp(0, 0))){
        m_picNode->setPosition(m_picNode->getPosition() + pt);
        if(isDrag){
            float maxMove = 15;
            auto moveDis = sqrt(pow(pt.x, 2) + pow(pt.y, 2));
            if(moveDis > maxMove){
                pt = pt * (maxMove * 1.0f / moveDis);
            }
            
            getMapNode()->setPosition(getMapNode()->getPosition() + pt);
            reDraw(NULL);
        }else{
            auto seque = CCSequence::create(CCMoveTo::create(0.2, getMapNode()->getPosition() + pt)
                                            , CCCallFuncN::create(this, callfuncN_selector(AllianceAreaPopupView::reDraw))
                                            , NULL
                                            );
            getMapNode()->runAction(seque);
        }
    }else{
        reDraw(NULL);
    }
}
Exemple #2
0
void Bfs::breadthFirstSearch(int n){
	map <int, list<Edge> > graph = getGraph();
	map <int, Node * > map_node = getMapNode();

	map<int, Node* >::iterator it = map_node.find(n);
	if (it != map_node.end())
	{
		bfsQueue.push(it->second);
		bfsQueue.front()->setLevel(0);

		while (! bfsQueue.empty()) {
			Node *temp = bfsQueue.front();
			bfsQueue.pop();
			int level = temp->getLevel() + 1;
			map <int, list<Edge> >::iterator it_graph = graph.find(temp->getLabel());
			if (it_graph != graph.end()){
				for (Edge var : it_graph->second)
				{
					map<int, Node* >::iterator it_node = map_node.find(var.getNode2()->getLabel());
					if (it_node != map_node.end())
					{
						if(it_node->second->getLevel() == -1 || level < it_node->second->getLevel()){
							it_node->second->setLevel(level);
							bfsQueue.push(it_node->second);
						}
					}
				}
			}
		}

		cout << "\nDistance of other nodes from " << n <<endl;
		for (pair<int, Node*> var : map_node)
		{
			if (it->second != var.second)
				cout<<var.second->getLabel()<<": "<<var.second->getLevel()<<endl;
		}
	}
	else
	{
		std::cout << "Input node " << n << " not present" << endl;
		exit(0);
	}
}