【发布时间】:2019-05-27 16:49:22
【问题描述】:
我需要在一个网格中跟踪对象(盒子)的位置,以开发我正在开发的类似 candycrush 的游戏。
我发现跟踪它们在网格中的位置的最简单方法是将它们添加到二维向量中,根据游戏逻辑将它们移动到向量中。这很容易。
困难的部分,也是我真正陷入困境的地方是在任何给定时间获取它们在网格上的当前位置,或者在这种情况下,获取 2d 向量内的位置。 简而言之,如果我有一种简单的方法来定期检查我的 Box 对象在其 2d 数组中的位置,那将解决问题。
我一直在搞乱 std:find 和 std:count,但我还是个新手,我遇到了困难。以下代码相同:
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
struct position
{
int x;
int y;
};
class Box
{
public:
position currentPosition;
};
int main(int argc, const char * argv[])
{
Box box1 = Box();
Box box2 = Box();
Box box3 = Box();
Box box4 = Box();
Box box5 = Box();
Box box6 = Box();
Box box7 = Box();
Box box8 = Box();
Box box9 = Box();
// vector<vector<Box>> boxes2dVector;
//
vector<vector<Box>> boxes2dVector =
{
{box1, box2,box3},
{box4, box5,box6},
{box7, box8,box9}
};
return 0;
}
position getPositionOfBox (Box box, vector<vector<Box>> vct)
{
position resultPositon;
/*
This is what I need...some code that finds the position in the of a Box object in side a 2d array
*/
return resultPositon;
};
任何想法或帮助,任何人?
非常感谢!
【问题讨论】:
-
提供像您这样的面向坐标的矩阵(2D)的一般更好的方法可能是将简单的
std::vector<Box> boxes2dVector(rows * cols)包装到一个单独的类中,并使用公共接口管理这个矩阵(包括const operator()(size_t row, size_t col)可能超载)。 -
@πάνταῥεῖῖ ,非常感谢。我同意我正在寻找的解决方案可能不是理想的解决方案...您能否给我任何有关如何实施此问题的提示或链接?