【发布时间】:2016-09-09 00:08:26
【问题描述】:
这个 2d 向量用于放置扫雷游戏的游戏板。我想创建一个 struct cell 的 2d 向量,它有几个“状态”变量,所有这些变量都包含构建游戏板所需的信息(我正在创建一个基本的扫雷游戏以在命令行上运行,非常初级,只是想获得一个更好地掌握课程)。首先,尝试将向量传递给 void 函数时我做错了什么?然后我如何能够访问单独的变量来读取和写入它们?我知道这可能是不寻常的(可以使用数组解决),但我想稍微不同。我浏览了各种论坛,但人们似乎没有使用这种方法。谢谢大家。
编辑: 我试图用单元格向量完成的基本上是 3 个向量合为 1,这样我就可以同时使用不同状态下的信息来检查玩家移动时是否满足各种条件(即检查是否存在那里的矿井,或者该地点是否已经打开/标记/未标记等)请告诉我下面的代码是否允许我想要完成的任务。
代码:
#include <iostream>
#include <vector>
using namespace std;
void gameboard(vector<vector<int>> &stateboard)
struct cell
{
int state; //( 0 hidden, 1 revealed, 2 marked)
int value; //(-1 mine, 0 no surrounding, # > 0
bool isMine;
};
void gameboard(vector<vector<int>> &stateboard)
{
}
int main()
{
int columns = 10;
int rows = 10;
vector <vector<cell> > gameboard(rows, vector<cell>(columns));
gameboard(&gameboard);
return 0;
}
对不起,伙计们,这段代码甚至不像我在 Xcode 中的大纲,我只是想以一种更容易理解的方式提出问题,然后把它放在一起。
新代码:
#include <iostream>
#include <vector>
using namespace std;
struct cell
{
int state; //( 0 hidden, 1 revealed, 2 marked)
int value; //(-1 mine, 0 no surrounding, # > 0
bool isMine;
};
void game_state(vector<vector<cell>> &stateboard)
{
}
int main()
{
int columns = 10;
int rows = 10;
vector <vector<cell> > gameboard(rows, vector<cell>(columns));
game_state(gameboard);
return 0;
}
我想函数和向量的名称相同会让 Xcode 崩溃,这就是我最初将游戏板作为参考的原因,但现在我明白了为什么这是愚蠢的。现在这可行,我如何专门读写 bool isMine 变量?我不是要求你完全做到这一点,而是向我展示如何访问该特定部分的基本代码行将对我有很大帮助。我是否错误地概念化了这一点?
【问题讨论】:
-
vector <vector<cell> >不是(vector<vector<int>>。那里有点炫耀。 -
一方面,
gameboard函数期望通过引用传递的参数类型为vector<vector<int>>,而您传递的地址类型为vector <vector<cell> >。 -
您正试图将
gameboard向量的地址传递给gameboard方法 - 还有一个像这样同名的函数和变量是不好的 -
缺少';'在
gameboard前向声明的末尾。不需要它,因为函数是在第一次使用之前定义的,所以我会删除声明。 -
`gameboard(&gameboard);` 正在将一个指针传递给一个需要引用的函数。
标签: c++ xcode vector 2d-vector