比较两个数组索引的坐标
Comparing coordinates of two array indexes
我正在创建一个基本的C++游戏,其中涉及用户试图逃离僵尸。
僵尸存储在一个名为 zeds
的数组中。整个游戏中都布置了陷阱,这些陷阱应该将僵尸重置到它们的初始位置,存储在一个名为 holes
的数组中。
我正在尝试弄清楚如何将僵尸的坐标与洞的坐标进行比较,如果它们匹配,则重置僵尸。
我不知道如何开始比较zeds的坐标和洞的坐标。我试过写这个,但它不起作用。
for (int i = 0; i < MAXZEDS; ++i)
{
for (int j = 0; i < MAXHOLES; ++j)
{
if (zeds[i].x == holes[j].x && zeds[i].y == holes[j].y)
{
//reset cords code here
}
}
}
感谢任何帮助,
谢谢大家!
你的代码中有几个错别字,我应该是 thirs 行中的 j。 无论如何,您可以通过使用 OOP 实践来提高代码的可读性。假设你有一个包含 x 和 y 的 Point 类(我想你有)
srtuct Point{
int x,y;
};
首先让我们重载 ==
运算符以 comapare 点
srtuct Point{
int x,y;
bool operator == (const Point& rhs){
return x==rhs.x && y == rhs.y;
}
};
现在让我们使用范围语义而不是索引和另一个 C++11 功能
for (auto& zombieCoord : zeds){
for (auto& holeCoord : holes){
if (zombieCoord == holeCoord ){
//do somthing
}
}
}
是不是更小、更干净、更清晰?
您可能想要的另一件事:
我继续像你一样使用 x 和 y 作为公共成员,但我建议将它们设为私有并制作 getter(如果需要)二传手。
您可能还想在某些约定中调用它们,例如 m_X 和 m_Y,这将它们表示为 m余烬。
此外,其他开发人员可能不明白zeds
的含义。为什么不给它一个明确的名字,比如"正在进行的僵尸"?
首先,你的循环是错误的。第二个循环必须检查 j
第二个for
中有一个错误,你在哪里检查i
而不是j
:
for (int i = 0; i < MAXZEDS; ++i)
{
for (int j = 0; j < MAXHOLES; ++j)
{
if (zeds[i].x == holes[j].x && zeds[i].y == holes[j].y)
{
//reset cords code here
}
}
}
我不知道你的僵尸是如何移动的,但僵尸的坐标可能很难与洞的坐标完全匹配。我的意思是,僵尸不太可能掉进洞里。也许你应该试着考虑它们的大小,比如洞和僵尸有正方形的形状,当僵尸的正方形接触它掉进去的洞时。看看如何检测正方形之间的碰撞
此代码执行MAXZEDS * MAXHOLES
迭代,这可能很多。您可能还希望实现更有效的冲突检测方法。看看Quadtrees,我敢打赌有一个很好的C++实现。它们简单且非常高效。
- 数组索引的值没有增加
- 并行用于C++17中数组索引范围内的循环
- 数组索引重载错误
- 通过指针与数组引用扩展数组索引序列
- SIGSEGV, 分段错误. 而 printf() 数组索引的值
- 缓冲区溢出 - 数组索引越界(严重)
- 为什么C++数组索引值是有符号的,而不是围绕size_t类型构建的(或者我错了)
- 查找下一个具有真值C++的数组索引
- 在编译时自动生成用于稀疏数组索引的switch语句
- 在数组索引上引发异常
- C++ 将二维数组索引与条件语句中的函数值进行比较
- 平衡数组索引,同时从左和右对数组求和
- 为什么C ,Devstudio,数组索引工作
- 如何对同一数组索引下的结构成员进行排序?
- 我想返回数组索引,而不是数组值
- C++相当于 Python 的:用于数组索引
- 分段错误:为什么这里的数组索引越界了
- 数组索引在地图上不是整数
- 根据用户输入的每个字母添加到数组索引
- C 数组索引