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); } }
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); } }