2017-05-31 15 views
0

私は基本的に迷路のプログラムを開発しています。迷路のプログラムは、開始点からその周りのすべての点をチェックし、空白に移動して前の位置をマークし、出口が見つかると終了します。ジェネリッククラスを使って迷路を解決するには?

アルゴリズム自体は既に完成していますが、明確にしたいことがいくつかあります。このプログラムでは、使用しなかったジェネリッククラスのStack、Queue、Coordinates(現在のx、y座標を格納しています)と、キュー内のキューをスタックするなどの操作を必要とします。スタック。

これはメインループである:それは、上記座標はオープンスペース又は出口(「S」)のいずれかである場合、それは本当であれば、以前の位置をマーキングしながら、それは、そこに移動チェック

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

*とその位置は '@'で移動します。これは他の3つの面でも繰り返されます。プログラムの最後には、歩いていたすべてのスペースに*印が付きます。しかし、私は上記の汎用クラスを使って座標を操作する必要があります。

これらの必要なクラスとそのオブジェクトです:

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

私はcurrentオブジェクトの座標を格納し、クラスQueue<Coordinate>queueオブジェクトの座標を挿入する方法を理解し、上queueオブジェクトを積み重ねないでくださいクラスStack<Queue<Coordinate>>からのpossibilitiesオブジェクトです。これはどうですか?

答えて

0

あなたが使用してキューに追加することができます。

queue.add(coordinate); 

queueはテーマパークでのラインのようなものです。最初の人は最初の人(FIFO)です。 stackは、プレートのスタックのようなものです。最初に置いたプレートは、最後に使用したプレートです。ラスト・イン・ファーストアウト(LIFO)。

のJavadoc:Stack、私の質問をwas't Queue

+0

。 – Kreator

+0

アイテムをキューに追加してスタックする方法を知る必要がありますか? – screenmutt

+0

Coordinate、stack、およびqueueのクラスに座標(つまり:3,4)を追加する方法。 – Kreator

関連する問題