我有一個任務是爲大學項目製作機器人控制器。目前它進展順利,但我有一個小問題,只是令人討厭,我似乎無法糾正它。C++ 2D矢量設置向量中的位置
基本上,我必須設計一個對比的控制器,以避免障礙物的同時進行隨機移動。所以,我有一個機器人,在控制檯上顯示爲「R」,它在10乘10的範圍內。下面是我用我的初始化二維矢量,然後繪製網格代碼:
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.cpp中與m.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循環它在屏幕上畫出另一個機器人,但似乎並沒有刪除舊的。該代碼的工作原理是將2D矢量中的某個X
和Y
分配給char 'R'
(這是我的機器人)。我的想法是否正確,我將不得不在每個運動週期後繪製2D矩陣?
感謝
是的,我是在正確的思路上。感謝您解決我的問題的三種不同方式。目前我已經通過在每個時間步驟上製作一個新矩陣來快速修復,但我確實認爲這是一種不好的方法。我很喜歡第二種方式,所以我會努力的!謝謝 –