所以,首先,這是我的聲明和初始化:C++動態數組「丟失」的數據
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;
}
Simoultaneously我插入數據轉換成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;
}
它應該檢查是否有在容器中的任何相鄰的數據。我計算手動值並使用調試器,在每種情況下,程序的行爲就好像在請求的位置沒有數據,而它必須存在於地圖中。任何信息將不勝感激。
'1 || 2'沒有做你認爲正在做的事。你也可以用一維數組更好。像這樣索引:'myArray [(y)* width +(x)]' – Dave 2013-04-05 14:45:45
@ user1928689'1 || 2'等價於'true'。 – Synxis 2013-04-05 14:50:33