16,472
社区成员
发帖
与我相关
我的任务
分享
int SeekWalk(int cx, int cy, int& x, int& y, BYTE nWalk, BYTE* pWalk)
{
int n = -1;
BOOL bSeek = FALSE;
BYTE flagMove[] = {0,1,1,2,2,3,3,4,4,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,0};
for (int i = 0; i < sizeof(flagMove); i ++)
{
switch (flagMove[i])
{
case 0:
x --; y --; break;
case 1:
x ++; break;
case 2:
y ++; break;
case 3:
x --; break;
case 4:
y --; break;
}
n = y * cx + x;
if (nWalk == pWalk[n]) {bSeek = TRUE; break;}
}
return bSeek ? n : -1;
}
int SeekWalk(int cx, WORD& x, WORD& y, int nFloor, BYTE nWalk, BYTE* pWalk)
{
int n = -1;
BOOL bSeek = FALSE;
int nCount = nFloor * 5 + 1;
for(int i = 0; i < nCount && !bSeek; i ++)
{
int nFlag = i % 5;
int nRepeat = 2 * (i / 5 + 1);
for(int j = 0; j < nRepeat; j ++)
{
switch (nFlag)
{
case 0:
x --; y --; j = nRepeat; break;
case 1:
x ++; break;
case 2:
y ++; break;
case 3:
x --; break;
case 4:
y --; break;
}
n = y * cx + x;
if (pWalk[n] == nWalk) {bSeek = TRUE; break;}
}
}
return bSeek ? n : -1;
}
int SeekWalk(int cx, WORD& x, WORD& y, int nFloor, BYTE nWalk, BYTE* pWalk)
{
int n = -1;
int nCount = nFloor * 5 + 1;
for(int i = 0; i < nCount ; i ++)
{
int nFlag = i % 5;
int nRepeat = 2 * (i / 5 + 1);
for(int j = 0; j < nRepeat; j ++)
{
switch (nFlag)
{
case 0:
x --; y --; j = nRepeat; break;
case 1:
x ++; break;
case 2:
y ++; break;
case 3:
x --; break;
case 4:
x --; break;
}
n = y * cx + x;
if (pWalk[n] == nWalk) {i = nCount; break;}
}
}
return n;
}