void Puce::update(Map* map) { recupererVecteur(); if(_etat == SAUT) { _saut -= _vitesseChute; _vy = (_vy - _saut ) *_montre.getElapsedTime().asMilliseconds(); } else { _vy = (_vy + _gravite) *_montre.getElapsedTime().asMilliseconds(); _saut = 1.25f; } _vx *= _montre.getElapsedTime().asMilliseconds(); deplace(map, &_image, _vx , _vy); _montre.restart(); }
void ManagerArbre::modifyStableUnstable(const Arbre & node) { Arbre nodeBdd(node.id()); get(nodeBdd); int max = fonctionAgrega<int>(bdd::Agrega::Max,Arbre::Num,Arbre::Parent,node.parent()); if(node.num() < 0 || node.num() > max) ManagerSqlArbre::modify(Arbre(nodeBdd.feuille(),max+1,node.parent(),node.id())); else { if(deplace(node)) ManagerSqlArbre::modify(node); } if(nodeBdd.parent() != 0 && nodeBdd.parent() != node.parent()) { if(exists(Arbre::Parent,nodeBdd.parent())) { ListPtr<Arbre> nodes(getList(Arbre::Parent,nodeBdd.parent(),Arbre::Num,nodeBdd.num(),Arbre::Num,bdd::Condition::Egal,bdd::Condition::Sup)); for(ListPtr<Arbre>::iterator i = nodes.begin(); i != nodes.end(); ++i) { (*i).setNum((*i).num() - 1); ManagerSqlArbre::modify((*i)); } } else { Arbre parent(nodeBdd.parent()); get(parent); parent.setFeuille(true); ManagerSqlArbre::modify(parent); } } }
void ManagerArbre::modifyUnstable(const Arbre & node) { Arbre nodeBdd(node.id()); get(nodeBdd); int max = fonctionAgrega<int>(bdd::Agrega::Max,Arbre::Num,Arbre::Parent,node.parent()); if(node.num() < 0 || node.num() > max) ManagerSqlArbre::modify(Arbre(nodeBdd.feuille(),max+1,node.parent(),node.id())); else { if(deplace(node)) ManagerSqlArbre::modify(node); } if(node.parent() != nodeBdd.parent()) { if(!exists(Arbre::Parent,nodeBdd.parent())) { Arbre nodeBddParent(nodeBdd.parent()); get(nodeBddParent); nodeBddParent.setFeuille(true); ManagerSqlArbre::modify(nodeBddParent); } Arbre nodeParent(node.parent()); get(nodeParent); if(nodeParent.feuille()) { nodeParent.setFeuille(false); ManagerSqlArbre::modify(nodeParent); } } }
/* effectue un tour */ static void tour(void) { int i, j; kase *k = NULL; /* on remet a 0 les flags "fait" */ for (i=0; i<20; i++) { for (j=0; j<20; j++) { kor(i,j)->fait = 0; } } /* on traite maintenant chaque case */ for (i=0; i<20; i++) { for (j=0; j<20; j++) { k = kor(i,j); /* on diminue la pheromone de sucre */ if (k->ph_sucre >= 5) { k->ph_sucre -= 5; } else if (k->ph_sucre) { k->ph_sucre = 0; } /* on ne fait rien si la case est deja traitee */ if (kor(i,j)->fait) { continue; } /* on essaye chaque regle de 1 a 6 * (priorite la + haute a la + faible) */ if (!charge(i,j)) { if (!depose(i,j)) { if (!achemine(i,j)) { if (!remonte(i,j)) { if (!retourve(i,j)) { deplace(i,j); } } } } } /* fin de traitement de cette case */ } } }
void ManagerArbre::addUnstable(Arbre &node) { if(node.feuille()) { if(node.parent()) { Arbre parent(node.parent()); get(parent); if(parent.feuille()) { if(node.num()) throw std::invalid_argument("Le premier descendnat doit avoir un numéro nul."); else ManagerSqlArbre::add(node); parent.setFeuille(false); ManagerSqlArbre::modify(parent); } else { int max = fonctionAgrega<int>(bdd::Agrega::Max,Arbre::Num,Arbre::Parent,node.parent()); if(node.num() < 0 || node.num() > max) { node.setNum(max+1); ManagerSqlArbre::add(node); } else { deplace(node); ManagerSqlArbre::add(node); } } } else { if(node.num()) throw std::invalid_argument("Une racine doit avoir un numéro nul."); else ManagerSqlArbre::add(node); } } else throw std::invalid_argument("Le nouveau noeud ajouté doit être une feuille."); }
void Ennemi::logique() { deplace(); }