//第八关图片移动规律
private void EightPace(int iCurIndex, int iLastIndex)
{
int i;
int j;
SImageMess SSwap;
int x = iCurIndex / 18 + 2;
int y = iCurIndex % 18 + 2;
if (iCurIndex / 18 != iLastIndex / 18 || iCurIndex < iLastIndex)
{
SSwap = SImage[iCurIndex];
for (i = iCurIndex; i % 18 - 1 >= 0; i--)
{
SImage[i].ImageNum = SImage[i - 1].ImageNum;
}
SImage[i].ImageNum = SSwap.ImageNum;
SSwap = SImage[iLastIndex];
for (i = iLastIndex; i % 18 - 1 >= 0; i--)
{
SImage[i].ImageNum = SImage[i - 1].ImageNum;
}
SImage[i].ImageNum = SSwap.ImageNum;
for (j = y; j - 1 >= 2; j--)
{
iMap[x, j] = iMap[x, j - 1];
}
iMap[x, j] = 1;
for (j = iLastIndex % 18 + 2; j - 1 >= 2; j--)
{
iMap[iLastIndex / 18 + 2, j] = iMap[iLastIndex / 18 + 2, j - 1];
}
iMap[iLastIndex / 18 + 2, j] = 1;
}
else
{
SSwap = SImage[iLastIndex];
for (i = iLastIndex; i % 18 - 1 >= 0; i--)
{
SImage[i].ImageNum = SImage[i - 1].ImageNum;
}
SImage[i].ImageNum = SSwap.ImageNum;
SSwap = SImage[iCurIndex];
for (i = iCurIndex; i % 18 - 1 >= 0; i--)
{
SImage[i].ImageNum = SImage[i - 1].ImageNum;
}
SImage[i].ImageNum = SSwap.ImageNum;
for (j = iLastIndex % 18 + 2; j - 1 >= 2; j--)
{
iMap[iLastIndex / 18 + 2, j] = iMap[iLastIndex / 18 + 2, j - 1];
}
iMap[iLastIndex / 18 + 2, j] = 1;
for (j = y; j - 1 >= 2; j--)
{
iMap[x, j] = iMap[x, j - 1];
}
iMap[x, j] = 1;
}
}
连连看(C#版)—第8关图片移动算法
最新推荐文章于 2025-10-06 15:55:08 发布
本文详细解析了一个特定的游戏关卡中图片移动的算法实现。通过具体的代码示例,介绍了如何根据当前索引和上一索引的位置来调整图片位置,并更新地图数据以反映移动后的状态。适用于理解游戏开发中简单的图片移动逻辑。
997

被折叠的 条评论
为什么被折叠?



