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

How to swap elements in 2d array c++

本文关键字:交换 元素 c++ 数组 2D      更新时间:2023-10-16

我正在尝试通过将元素与空白元素的位置交换来制作一个 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;
        }
    }
}

}

在调试器中遍历它。 你会看到,在进行交换后,你继续搜索。 如果磁贴位于上方或左侧,您将再次交换。

进行

交换后,您需要停止搜索。

我已经更新了它以包含停止,现在代码不迭代。

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;
        }
        }
    }
}
}