如何在2d数组c ++中交换元素

时间:2017-02-04 23:29:27

标签: c++ arrays 2d swap

我正在尝试通过交换一个空白元素位置的元素来制作一个15益智游戏。我已经制作了这个代码,但是只有当瓷砖出于某种原因向右或向下时它才会交换。

void moveTile(int gameBoard[][SIZE], int nextMove, int &blanki, int &blankj)   
{
int temp=nextMove;
for(int i=0;i<4;i++)
{
    for(int j=0;j<4;j++)
    {
        if(gameBoard[i][j]==nextMove)
        {
            gameBoard[i][j]=gameBoard[blanki][blankj];
            gameBoard[blanki][blankj]=temp;
            blanki=i;
            blankj=j;
        }
    }
}

}

2 个答案:

答案 0 :(得分:0)

在调试器中通过它。您将看到在进行交换后,您继续进行搜索。在瓷砖位于上方或左侧的情况下,您将再次交换。

您进行交换后需要停止搜索。

答案 1 :(得分:0)

我已将其更新为包含停止,现在代码不会迭代。

void moveTile(int gameBoard[][SIZE], int nextMove, int &blanki, int &blankj)
{   bool stop=false;
for(int i=0;i<4;i++)
{
    for(int j=0;j<4;j++)
    {
        while(!stop)
        {if(gameBoard[i][j]==nextMove)
        {
            int temp=gameBoard[i][j];
            gameBoard[i][j]=gameBoard[blanki][blankj];
            gameBoard[blanki][blankj]=temp;
            blanki=i;
            blankj=j;
            stop=true;
        }
        }
    }
}

}