如何解决如何移动二维数组中的值而不在 C 中的数组中创建移位
所以事情是我们学校分配我们编写一个名为“parcheesi”的棋盘游戏,这一切都很好,但我无法弄清楚如何在不移动整个棋盘的情况下移动棋子。你看,我通过创建一个整数矩阵来创建电路板,每个整数都等于矩阵中的某个值(例如件数、路径、起点和终点。我认为为路径块分配不同的值会更容易在角落里改变方向。我知道我无法真正描述我的情况,所以我会在评论中详细说明情况。但这是我的一段代码(稍微编辑):
表格:
{8911,8912,4,1,8211,8212},{0,8913,8223,8214,8213},8222,0},{4,8914,8221,4},{1,8923,8922,8921,6621,6622,6623,1},7121,7122,{7111,7112,7123,6611,6612},{7114,7113,6614,6613}
int pawnmove(int steps,int row,int col,int max,int matrix[max][max])/*This function helps me to move the pawns by swapping the respective characters in the matrix.
4's in the matrix trigger the corner points so the pawns will redirect at those points*/
{
int i=col;
int l_move=steps;
int j=row;
int tmp;
while(l_move>0)
{
if((row<4)&&((col>=0)&&(col<=3)))//since there are 4 area in the matrix,I divided the code into 4 pieces.
{
while((i<col+steps)&&(matrix[row][i]!=4)&&((row==3)||(row==0)))
{
i+=1;
}
tmp=matrix[row][i];
matrix[row][i]=matrix[row][col];
matrix[row][col]=tmp;
l_move=steps-(i-col);
if((l_move)>0)
{
while(((row-j)< l_move)&&(matrix[j][i]!=4))
{
j-=1;
}
printf("%d",j);
tmp=matrix[j][i];
matrix[j][i]=matrix[row][i];
matrix[row][i]=4;
if(col==i)
{
matrix[row][i]=1;
}
l_move=l_move-(row-j);
}
}
else if((row>=4)&&((col>=0)||(col<3)))//since there are 4 area in the matrix,I divided the code into 4 pieces.
{
while((i<col+steps)&&(matrix[row][i]!=4)&&((row==3)))
{
i+=1;
}
tmp=matrix[row][i];
matrix[row][i]=matrix[row][col];
matrix[row][col]=tmp;
l_move=steps-(i-col);
if((steps-(i-col))>0)
{
while(((j-row)<(steps))&&(matrix[j][i]!=4))
{
j+=1;
}
tmp=matrix[j][i];
matrix[j][i]=matrix[row][i];
matrix[row][i]=4;
steps-=(row-j);
}
}
}
请注意,此功能仅适用于这种情况,即以错误的方式更改 4s 的位置而导致问题的情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。