C++2D矢量设置矢量内的位置
C++ 2D Vector setting a position within the vector
我有一项任务要为一个大学项目制作机器人控制器。目前它进展得很顺利,但我有一个小错误,非常烦人,我似乎无法纠正它。
基本上,我必须设计一个对比控制器,以实现随机移动,同时避免障碍物。所以,我有一个机器人,它在控制台上显示为"R",在10乘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.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循环时,它都会在屏幕上绘制另一个机器人,但似乎并没有删除旧的机器人。该代码通过用char 'R'
(这是我的机器人)在2D向量中指定特定的X
和Y
来工作。我的想法是正确的吗?我必须在每个运动周期后绘制2D矩阵?
感谢
当您第一次将机器人位置设置为(5,5)时,您将把vector2D[5][5]
设置为R
。然后,如果将位置设置为类似(5,6)的值,则会将vector2D[5][6]
设置为R
。现在,元件[5][5]
和[5][6]
都设置为R
,因此机器人处于这两个位置。
有一些解决方案取决于你想要如何设计:
- 您可以将当前机器人位置存储在
matrix
中,并在robotPosition
的开头将该位置设置为非机器人角色的任何位置。这将在设置新位置之前清除以前的位置 - 您可以在每帧的开头清除整个矩阵。在每帧的开头调用
update
,试图将向量的大小调整为与现有大小完全相同的大小-这并不能清除它。相反,您应该在构造函数中完成这项工作,然后可以将init
转换为clear
函数 - 如果要为每个时间步长使用不同的
matrix
,则需要将matrix m;
的声明移动到while
循环中。然后,每个帧都有一个,应该在构建过程中清除(如果将init
内容移动到构造函数)
相关文章:
- 如何设置 cmake 以在不同位置查找标头和库
- OMNET++:如何在INET4.0中手动设置节点位置
- 如何在QML中设置鼠标光标位置
- 提升::P设置选项无法使所有参数都处于位置状态
- Win32 C++ 将窗口位置设置为右下角
- QT:即使在static_cast后也无法在主窗口中设置对象的位置
- 设置按钮位置
- 无法在顶点着色器中设置输入的位置
- 在 Omnet++ 中的模拟时间内更改/设置节点的新位置
- 如何在NS-3中使用Ramdomwaypoint模型时设置位置分配器
- 设置位置时QT删除对象()
- 了解现代OpenGL中的代码绘图.OBJ并设置不同的位置
- 如何获取设置位中的相对位置
- C++ /WinRT - 文本块,如何动态附加并将其位置 (x, y) 设置为 XAML 窗体
- 在系统设置光标位置之前获取和设置光标位置?
- 尝试在自定义 QT 创建器文本编辑器中创建查找和替换循环.我似乎无法设置光标位置
- 如何在主窗口.ui界面的特定位置设置QSpinBox
- 最快的函数将位置设置为一个无符号整数中两个位之间的位
- C++ 矢量位置设置为 1 而不是 0
- 如何从c++中将QQuickItem的位置设置为精确的帧