LRV(Least recent visit) アルゴリズムを使用してプログラムを作成しています。基本的に、ロボットがグリッド (2D char 配列) を通過するアルゴリズムを設計します。ロボットはグリッドを横断しながら、各セルがEMPTY
('O' でOCCUPIED
定義)、('S' で定義)、またはBLOCKED
('X' で定義) のいずれかであるかどうかをチェックします。セルは、Sensor と呼ばれるオブジェクトによってのみ占有されます (これには独自のクラスがあります)。BLOCKED
セルはトラバースできません。ロボットが動く必要があるたびに、センサーから方向を受け取ります。そのため、最初はロボットをグリッド上に配置し、センサーをドロップしてそこから方向を取得するか、既存のセンサーから方向を取得します。
私のプログラムについて説明したので、具体的な質問は、getVisitingDirection
INT を返すメソッドを持つクラス Sensor があるということです。各方向 (タイプ INT の北、南、東、西) のカウンターがあります。これがクラスです。
package ITI1121A;
public class Sensor {
private int cColumns;
private int cRows;
private int North;
private int South;
private int West;
private int East;
public Sensor(int sX, int sY) {
cColumns = sX;
cRows = sY;
South= -1;
North = -1;
West = -1;
East = -1;
}
/* ADD YOUR CODE HERE */
public int getX ()
{return cColumns;}
public int getY ()
{return cRows;}
public int getVisitingDirection(GridMap g1)
boolean temp;
{
if(cRows==0){
//top row
if(cColumns==0){
temp=g1.isCellBlocked(cColumns+1,cRows);
if (temp=false){
return West++;
}
}
}
}
public void increaseCounter(int direction)
{}
}
今私が立ち往生しているのは getVisitingDirection です。グリッドの左上端 (座標 0,0) を確認する if ステートメントを作成しようとしましたが、それで終わりです。ロボットに方向を与え、その方向のカウンターを増やすメソッドが必要です。ここでコンセプトを理解することさえ本当に難しいです。どんな助けでも大歓迎です!ありがとうヴァルン