所以首先,这是我的声明和初始化:
int** GameField = 0;
GameField = new int*[mapsize];
for(int i = 0; i < mapsize; i++)
GameField[i] = new int[mapsize];
for(int j = 0; j < mapsize; j++)
for(int i = 0; i < mapsize; i++)
GameField[i][j] = 0;
现在我正在尝试使用一个简单的命令插入数据:
if(!(Player1.find(Move) == Player1.end()) && iter>0)
{
GameResult=1;
}else
{
Player1[Move] = 1;
GameField[Move.first][Move.second]=1;
if(WinCheck(Player1, Move, x, mapsize))
GameResult = 1;
}
同时我将数据插入到 STL 映射中。Visual Studio 没有动态数据的本机显示,因此我无法查看表格的内容。试着看记忆,但很难理解它。程序的一部分似乎一直工作到某一点:
bool CheckIfMovePossible(int **GameField, pair <int,int> &Move, int MapSize)
{
int x = Move.first;
int y = Move.second;
bool Neighbour = false;
if(GameField[modulo(x+1,MapSize)][y]==(1||2)) // po prawej
Neighbour = true;
if(GameField[modulo(x+1,MapSize)][modulo(y+1,MapSize)]==(1||2))
Neighbour = true;
if(GameField[modulo(x+1,MapSize)][modulo(y-1,MapSize)]==(1||2))
Neighbour = true;
if(GameField[x][modulo(y+1,MapSize)]==(1||2)) // x
Neighbour = true;
if(GameField[x][modulo(y-1,MapSize)]==(1||2))
Neighbour = true;
if(GameField[modulo(x-1,MapSize)][modulo(y+1,MapSize)]==(1||2)) // po lewej
Neighbour = true;
if(GameField[modulo(x-1,MapSize)][y]==(1||2))
Neighbour = true;
if(GameField[modulo(x-1,MapSize)][modulo(y-1,MapSize)]==(1||2))
Neighbour = true;
return Neighbour;
}
它应该检查容器中是否有任何相邻数据。我手动计算值并使用调试器,在每种情况下,程序的行为都好像在请求的位置没有数据,而它必须在那里,因为它存在于地图中。任何信息将不胜感激。