大学のプロジェクトでロボット コントローラを作成する課題があります。現時点では非常にうまくいっていますが、厄介なバグがあり、それを修正できないようです。
基本的に、障害物を避けながらランダムに移動できるように、対照的なコントローラーを設計する必要があります。そのため、コンソールに「R」と表示されるロボットがあり、10 x 10 の領域内にあります。2D ベクトルを初期化し、グリッドを描画するために使用するコードは次のとおりです。
void matrix::init() // init my 2D vector
{
dot = 10; // 10 by 10 area
vector2D.resize(dot);
for (int i=0; i<dot; i++)
{
vector2D[i].resize(dot);
}
}
void matrix::draw() // drawing the vector to the screen
{
for(int i=0; i<dot; i++)
{
for(int j=0; j<dot; j++)
{
cout <<vector2D[i][j]<<"."; // I being the Y access, J the X access
}
cout<<endl;
}
}
void matrix::update()
{
init();
draw();
}
これは と呼ばれる独自のクラスmatrix.cpp
にあり、次に main.cppm.update();
m
のオブジェクトとして呼び出されます。matrix
これで、画面上のロボットの位置がmatrix.cpp
クラス内のこのコードで設定されます
void matrix::robotPosition(int x, int y)
{
bot = 'R';
cout << "X Pos"<< x <<endl;
cout << "Y Pos"<< y <<endl;
vector2D[x][y] = bot; // Outputting location of robot onto the grid / matrix
}
画面上の位置を制御するために開発したコードは他にもありますが、質問のこの時点では必要ないと思います。
int main()
{
matrix m;
robot r;
while(true)
{
m.update(); // vector2D init and draw
m.robotPosition(r.getX(), r.getY());
r.update();
system("pause");
}
}
プログラムが while ループをループするたびに、別のロボットが画面に描画されますが、古いロボットは削除されないようです。このコードは、 (Which is my Robot) を使用して特定のX
およびY
を 2D ベクトルに割り当てることによって機能します。char 'R'
各運動サイクルの後に 2D マトリックスを描画する必要があるという私の考えは正しいですか?
ありがとう