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