2017-04-20 83 views
0

我有一個隨機生成的大小爲gameSize(用戶輸入)的數字網格,它包含在向量的向量中。用戶可以輸入兩個座標(x,y),以便將網格內的數字更改爲預定義值(「0」)。C++控制檯檢查相鄰的元素重複

因此,例如,用戶輸入,X:0 Y:0:

{9, 7, 9} 

{9, 6, 8} 

{5, 1, 4} 

變爲:

{0, 7, 9} <-- Changes position 0,0 to 0 (the predefined value) 

{9, 6, 8} 

{5, 1, 4} 

例如,下面將不被允許由於三盤0的衝突。

{0, 0, 9} 

    {0, 6, 8} 

    {5, 1, 4} 

但是以下是有效的:

{0, 7, 0} 

{9, 0, 8} 

{5, 1, 4} 

回答

1

嘗試這種情況:

if (
    (row == 0 || myGame[row-1][col] != 0) // element above (if applicable) 
    && (row == gameSize-1 || myGame[row+1][col] != 0) // element below 
    && (col == 0 || myGame[row][col-1] != 0) // element to the left 
    && (col == gameSize-1 || myGame[row][col+1] != 0) // element to the right 
    ) 
    myGame[row][col] = 0; 
else 
... 

每個條件檢查用於相鄰元件僅當它的存在(以短路的優點評估,參見邏輯運算符下的here)。換句話說,例如,只有在row == 0爲假時才檢查myGame[row-1][col],從而防止未經授權的存儲器訪問造成的崩潰。