Classe représentant la surface -le terrain- et contenant les opérations que l'on effectue sur celui-ci. L'état d'une instance de cette classe à la fin de l'algorithme représente une solution trouvée après la recherche. On peut donc avoir plusieurs Field lors d'une exécution.
Plus de détails...
#include <field.h>
|
unsigned | nb_cols |
| nb_cols Nombre de colonnes de la surface
|
|
unsigned | nb_rows |
| nb_rows Nombre de lignes de la surface
|
|
std::list< Coordinates > | ins_outs |
| ins_outs Liste des entrées-sorties de la surface
|
|
State ** | parcels |
| Matrice d'états des cellules.
|
|
Classe représentant la surface -le terrain- et contenant les opérations que l'on effectue sur celui-ci. L'état d'une instance de cette classe à la fin de l'algorithme représente une solution trouvée après la recherche. On peut donc avoir plusieurs Field lors d'une exécution.
Field::Field |
( |
unsigned |
width, |
|
|
unsigned |
height |
|
) |
| |
Constructeur de la classe
- Paramètres
-
width | Largeur à définir de la surface |
height | Hauteur à définir de la surface |
Constructeurs et destructeurs
Field::Field |
( |
const Field & |
other | ) |
|
Constructeur par recopie de la classe Field
- Paramètres
-
Ajoute une route à partir de coordonnées
- Paramètres
-
coords | Coordonnées de la future route |
void Field::add_road |
( |
unsigned |
col, |
|
|
unsigned |
row |
|
) |
| |
|
inline |
Ajoute une route à partir de coordonnées
- Paramètres
-
col | Colonne de la route |
row | Ligne de la route |
void Field::add_undefined |
( |
const Coordinates & |
coords | ) |
|
Supprime l'état de la parcelle
- Paramètres
-
void Field::add_undefined |
( |
unsigned |
col, |
|
|
unsigned |
row |
|
) |
| |
|
inline |
Supprime l'état de la parcelle
- Paramètres
-
void Field::addRoads |
( |
std::list< Coordinates > * |
roads, |
|
|
unsigned |
serveDistance |
|
) |
| |
Ajoute une liste de routes
- Paramètres
-
roads | Liste de coordonnées des routes à ajouter |
serveDistance | Distance de desserte des routes, utile pour mettre à jour les parcelles exploitables |
- Voir également
- on pourrait améliorer, en mettant à jour seulement les parcelles proches des routes ajoutées
=== Operators === Retourne la parcelle de la surface aux coordonnées passées en paramètre
- Paramètres
-
pos | Coordonnées de la parcelle |
- Renvoie
- L'état de la parcelle à la position des coordonnées, un State
bool Field::contains |
( |
int |
x, |
|
|
int |
y |
|
) |
| const |
=== Fonctions sur les coordonnées === Effectue un test d'appartenance des coordonnées à la matrice
- Paramètres
-
x | abscisse de la coordonnée |
y | ordonnée de la coordonnée |
- Renvoie
- true si la coordonnée appartient à la matrice
=== Fonctions sur les coordonnées ===///
bool Field::contains |
( |
const Coordinates & |
coord | ) |
const |
Effectue un test d'appartenance des coordonnées à la matrice
- Paramètres
-
coord | Coordonnées de la position |
- Renvoie
- true si la coordonnée appartient à la matrice
void Field::createExample |
( |
| ) |
|
createExample
- Test:
- Utile seulement pour les tests
Autres méthodes utiles
void Field::deleteOldMatrix |
( |
| ) |
|
begin
- Renvoie
- un itérateur constant sur la première parcelle du Field
- Voir également
- end
- Renvoie
- un itérateur constant sur la dernière parcelle du Field
- Voir également
- begin
- Renvoie
- un itérateur sur la première parcelle du Field
- Voir également
- end
- Renvoie
- un itérateur sur la dernière parcelle du Field
- Voir également
- Retourne la première coordonée de la matrice, elle peut ensuite être modifée pour servir d'itérateur à l'aide de nextCoordinates()
- Renvoie
- une référence, non constante, sur la première coordonnée de la matrice
void Field::generateInsAndOuts |
( |
unsigned |
nb | ) |
|
=== Méthodes générales === Crée aléatoirement des entrées et sorties
- Paramètres
-
nb | nombre d'entrées et sorties à générer |
=== Méthodes générales ===/
unsigned Field::get_height |
( |
| ) |
const |
|
inline |
Accesseur sur le nombre de lignes -la hauteur- de la surface
- Renvoie
- La hauteur de la surface
Accesseur sur la liste des entrées et sorties
- Renvoie
unsigned Field::get_width |
( |
| ) |
const |
|
inline |
Accesseur sur le nombre de colonnes -la largeur- de la surface
- Renvoie
- La largeur de la surface
Recherche des parcelles qui sont proches de la position
- Paramètres
-
coord | Coordonnées de la position |
maxDist | Distance maximale entre la parcelle et la position |
- Renvoie
- une liste de parcelles proches de la position donnée
Recherche des routes qui sont proches de la position
- Paramètres
-
coord | Coordonnées de la position |
maxDist | Distance maximale entre la route et la position |
- Renvoie
- une liste de routes proches de la position donnée
std::list< Coordinates > * Field::getCloseUnusableParcels |
( |
const Coordinates & |
coord, |
|
|
unsigned |
servingDistance |
|
) |
| const |
Recherche des parcelles qui serait desservies grâce au passage de la parcelle en route
- Paramètres
-
coord | Coordonnées de la parcelle |
servingDistance | Distance à laquelle les routes rendent les parcelles utilisables |
- Renvoie
- une liste de parcelles qui deviendraient utilisables si la parcelle devenait une route
unsigned Field::getNbParcels |
( |
| ) |
const |
|
inline |
Donne le nombre de parcelles de la surface
- Renvoie
- Le nombre de parcelles, nombre de ligne facteur nombre de colonnes, un entier non signé
Recherche des parcelles qui sont concomitantes à la cellule
- Paramètres
-
coord | Coordonnées de la parcelle |
- Renvoie
- une liste de parcelle adjacentes à la cellule Recherche des portions de routes qui sont concomitantes à la parcelle courante
- Paramètres
-
coord | Coordonnées de la parcelle |
- Renvoie
- une liste de routes adjacentes à la parcelle
std::list< Coordinates > * Field::getServingRoads |
( |
const Coordinates & |
coord, |
|
|
unsigned |
servingDistance |
|
) |
| const |
Recherche des portions de routes qui peuvent désservir la parcelle
- Paramètres
-
coord | Coordonnées de la parcelle à desservir |
servingDistance | Distance maximale à laquelle un route peut desservir une parcelle |
- Renvoie
- une liste de routes distance inférieure ou égale à la distance de desserte
On vérifie ((2.servingDistance)+1)² parcelles, alors qu'on pourrait en vérifier moins
bool Field::hasServingRoad |
( |
const Coordinates & |
coord, |
|
|
unsigned |
servingDistance |
|
) |
| const |
Vérifie que la parcelle a un voisin
- Paramètres
-
coord | Coordonnées de la parcelle à desservir |
servingDistance | Distance de desserte des routes |
- Renvoie
- vrai si la parcelle est desservie par au moins une route
On vérifie ((2.serve_dist)+1)² parcelles, alors qu'on pourrait en vérifier moins
bool Field::nextCoordinates |
( |
Coordinates * |
coord | ) |
const |
Modifie la coordonnée en entrée pour obtenir celle qu'elle précède Agit comme une itération sur l'ensemble des coordonnées de la surface
- Paramètres
-
coord | Coordonnée courante, va être modifiée pour devenir sa "suivante". Elle est non modifiée si il n'y a pas de suivante. |
- Renvoie
- vrai si il y a une coordonnées, faux si on est à la fin ou en dehors de la surface
Opérateur = d'affectation
- Paramètres
-
State Field::operator[] |
( |
const Coordinates & |
pos | ) |
const |
|
inline |
Opérateur [] avec des coordonnées sur la surface, retourne la parcelle de la surface aux coordonnées passées en paramètre
- Paramètres
-
pos | Coordonnées de la parcelle |
- Renvoie
- L'état de la parcelle à la position des coordonnées, un State
std::ostream & Field::print |
( |
std::ostream & |
out | ) |
const |
Imprime dans un flux les informations de l'instance
- Paramètres
-
out | Flux dans lequel on imprime les informations |
- Renvoie
- Le flux en entrée sur lequel on a imprimé les informations
void Field::removeRoads |
( |
std::list< Coordinates > * |
roads, |
|
|
unsigned |
serveDistance |
|
) |
| |
Retire une liste de routes
- Paramètres
-
roads | Liste de coordonnées des routes à retirer |
serveDistance | Distance de desserte des routes, utile pour mettre à jour les parcelles exploitables |
void Field::resetUsables |
( |
unsigned |
servingDistance | ) |
|
Met à jour les parcelles dans le voisinage d'une route comme étant exploitables
- Paramètres
-
servingDistance | Distance maximale du voisinage |
void Field::resizeWithDimensions |
( |
| ) |
|
Redéfinit la taille de la matrice d'états selon le nombre de lignes et de colonnes contenues dans la classe. On utilise la fonction resize(). Attention, les données contenues dans le vecteur peuvent être modifiées
void Field::set_height |
( |
unsigned |
height | ) |
|
|
inline |
Mutateur sur le nombre de lignes -la hauteur- de la surface
- Paramètres
-
height | La nouvelle hauteur de la surface |
void Field::set_width |
( |
unsigned |
width | ) |
|
|
inline |
Mutateur sur le nombre de colonnes -la largeur- de la surface
- Paramètres
-
width | La nouvelle largeur de la surface |
void Field::setUsables |
( |
unsigned |
servingDistance | ) |
|
Définit les parcelles dans le voisinage d'une route comme étant exploitables
- Paramètres
-
servingDistance | Distance maximale du voisinage |
void Field::show_ins_and_outs |
( |
| ) |
const |
Impression sur la sortie standard des entrées et sorties de la surface
Affichage
bool Field::tryAdd_in_out |
( |
const Coordinates & |
coords | ) |
|
Ajoute une entrée/sortie à partir de coordonnées
- Paramètres
-
coords | Coordonnées de l'E/S |
bool Field::tryAdd_in_out |
( |
unsigned |
col, |
|
|
unsigned |
row |
|
) |
| |
|
inline |
Ajoute une entrée/sortie à partir de coordonnées
- Paramètres
-
col | Colonne de l'E/S |
row | Ligne de l'E/S |
void Field::updateUsables |
( |
unsigned |
servingDistance | ) |
|
Met à jour les parcelles dans le voisinage d'une route comme étant exploitables
- Paramètres
-
servingDistance | Distance maximale du voisinage |
std::ostream& operator<< |
( |
std::ostream & |
out, |
|
|
const Field & |
field |
|
) |
| |
|
friend |
Surcharge de l'opérateur << de sortie sur flux
- Paramètres
-
out | Flux dans lequel on imprime les informations |
field | Surface que l'on souhaite imprimer |
- Renvoie
- Le flux en entrée sur lequel on a imprimé les informations de la surface passée en entrée
La documentation de cette classe a été générée à partir des fichiers suivants :
- Engine/field.h
- Engine/field.cpp
- Engine/field_others.cpp