extern struct yx_uint8 mv_yx_in_dir(char d, struct yx_uint8 yx)
{
- if (d == '8' && yx.y > 0)
+ if (d == 'e' && yx.y > 0 && (yx.x < UINT8_MAX || !(yx.y % 2)))
{
+ yx.x = yx.x + (yx.y % 2);
yx.y--;
}
- else if (d == '9' && yx.y > 0 && yx.x < UINT8_MAX)
+ else if (d == 'd' && yx.x < UINT8_MAX)
{
- yx.y--;
- yx.x++;
- }
- else if (d == '6' && yx.x < UINT8_MAX)
- {
- yx.x++;
- }
- else if (d == '3' && yx.x < UINT8_MAX && yx.y < UINT8_MAX)
- {
- yx.y++;
yx.x++;
}
- else if (d == '2' && yx.y < UINT8_MAX)
+ else if (d == 'c' && yx.y < UINT8_MAX && (yx.x < UINT8_MAX || !(yx.y % 2)))
{
+ yx.x = yx.x + (yx.y % 2);
yx.y++;
}
- else if (d == '1' && yx.y < UINT8_MAX && yx.x > 0)
+ else if (d == 'x' && yx.y < UINT8_MAX && (yx.x > 0 || yx.y % 2))
{
+ yx.x = yx.x - !(yx.y % 2);
yx.y++;
- yx.x--;
}
- else if (d == '4' && yx.x > 0)
+ else if (d == 's' && yx.x > 0)
{
yx.x--;
}
- else if (d == '7' && yx.x > 0 && yx.y > 0)
+ else if (d == 'w' && yx.y > 0 && (yx.x > 0 || yx.y % 2))
{
+ yx.x = yx.x - !(yx.y % 2);
yx.y--;
- yx.x--;
}
return yx;
}