2017-05-31 2 views
0

Je développe un programme de résolution de labyrinthe qui lit essentiellement un labyrinthe à partir d'un fichier texte qui, depuis le point de départ, vérifie tous les côtés et se déplace vers les espaces ouverts, marque la position précédente et se termine lorsque la sortie est trouvée.Comment utiliser des classes génériques pour résoudre un labyrinthe?

Bien que l'algorithme soit déjà terminé, il y a certaines choses que j'aimerais voir clarifiées. Le programme nécessite l'utilisation des classes génériques Stack, Queue et Coordinates (qui stocke la coordonnée x, y actuelle), que je n'ai pas utilisée (j'ai utilisé Vectors pour sauvegarder les positions) et d'autres opérations telles que l'empilement d'une file d'attente dans le empiler.

Ceci est la boucle principale:

if(maz[x][y-1]==' '||maz[x][y-1]=='S'){ 
    if(maz[x][y-1]=='S') 
     exitfound=true; 
    maz[x][y]='*'; 
    maz[x][y-1]='@'; 
    y=y-1; 
} 

Il vérifie si les coordonnées ci-dessus est soit un espace ouvert ou la sortie (« S »), si elle est vraie, elle se déplace là, tout en marquant la position précédente avec un * et la position vers laquelle il se déplace avec un '@'. Cela se répète avec les 3 autres côtés aussi. À la fin du programme, tous les espaces piétons auraient été marqués d'un *. Cependant, j'ai besoin d'utiliser les classes génériques pour manipuler les coordonnées.

Ce sont les classes requises et ses objets:

Stack<Coordinate> path = new Stack<Coordinate>(40); 
Stack<Queue<Coordinate>> possibilities = new Stack<Queue<Coordinate>>(40); 
Coordinate current = new Coordinate(x,y); 
Queue<Coordinate> queue = new Queue<Coordinate>(3); 

Je ne comprends pas comment stocker les coordonnées de l'objet current et insérer les coordonnées dans l'objet queue de la classe et de la pile Queue<Coordinate>queue objet sur la possibilities objet, de la classe Stack<Queue<Coordinate>>. Comment cela est-il fait?

Répondre

0

Vous pouvez ajouter à une file d'attente en utilisant:

queue.add(coordinate); 

A queue est comme une ligne à un parc à thème. La première personne est la première personne à sortir (FIFO). Un stack est comme une pile de plaques. La première plaque que vous posez est la dernière que vous utilisez. Dernier entré, premier sorti (LIFO).

Javadoc: Stack, Queue

+0

Ce was't ma question. – Kreator

+0

Avez-vous besoin de savoir comment ajouter un élément à la file d'attente et à la pile? – screenmutt

+0

Comment ajouter des coordonnées (par exemple: 3,4) aux classes Coordinate, stack et queue. – Kreator