Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- while((sizeof(frontiere)/sizeof(QPoint)) > 0){
- // on extrait le premier point de la frontière
- QPoint extrait = frontiere[indiceDebut];
- int ext_x = extrait.x();
- int ext_y = extrait.y();
- int lg;
- int cl;
- int distance = 2;
- // pour tous les voisins de ce point
- POUR_TOUS_VOISINS(ext_x, ext_y, lg, cl){
- // on calcule la distance (* 2) entre le point et le voisin :
- // 2 (mouvement horizontal ou vertical) ou 3 (diagonal)
- if(ext_x != lg && ext_y != cl){//Mouvement diagonal
- distance = 6;
- }else{//Mouvement horizontal ou vertical
- distance = 4;
- }
- // si la nouvelle distance au voisin est meilleure
- // que l'ancienne (et que le voisin n'est pas en collision)
- if(!enCollision(lg,cl) && (dist(lg,cl) < dist(ext_x, ext_y))){
- // modifie la nouvelle distance
- setDist(lg,cl, dist(lg,cl));
- QPoint* point = new QPoint(lg, cl);
- // et on ajoute le voisin à la frontière
- frontiere[indiceDebut] = *point;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement