1
你好
我正在解决课本练习来解决右手原则迷宫
我使用开关的情况下处理它
switch (face)
{
case face_EAST:
{
if(map[x][y + 1] == '.' && map[x + 1][y] == '#')
{
y = y + 1;
gotoxy(x, y);
face = face_EAST;
}
else if (map[x - 1][y] == '.' && map[x][y + 1] == '#')
{
x = x - 1;
gotoxy(x, y);
face = face_NORTH;
}
else if (map[x + 1][y] == '.' && map[x + 1][y - 1] == '#')
{
x = x + 1;
gotoxy(x, y);
face = face_SOUTH;
}
else
face = face_SOUTH;
break;
}
case face_SOUTH :
{
if(map[x + 1][y] == '.' && map[x][y - 1] == '#')
{
x = x + 1;
gotoxy(x, y);
face = face_SOUTH;
}
else if(map[x][y - 1] == '.' && map[x - 1][y - 1] == '#')
{
y = y - 1;
gotoxy(x, y);
face = face_WEST;
}
else if(map[x][y + 1] == '.' && map[x + 1][y] == '#')
{
y = y + 1;
gotoxy(x, y);
face = face_EAST;
}
else
face = face_WEST;
break;
}
case face_WEST:
{
if(map[x][y - 1] == '.' && map[x - 1][y] == '#')
{
y = y - 1;
gotoxy(x, y);
face = face_WEST;
}
else if(map[x - 1][y] == '.' && map[x - 1][y + 1] == '#')
{
x = x - 1;
gotoxy(x, y);
face = face_NORTH;
}
else if(map[x + 1][y] == '.' && map[x][y - 1] == '#')
{
x = x + 1;
gotoxy(x, y);
face = face_SOUTH;
}
else if(map[x][y + 1] == '.' && map[x + 1][y] == '#')
{
y = y + 1;
gotoxy(x, y);
face = face_EAST;
}
else if(map[x - 1][y] == '.' && map[x - 1][y + 1] == '#')
{
x = x - 1;
gotoxy(x, y);
face = face_NORTH;
}
else
face = face_NORTH;
break;
}
case face_NORTH:
{
if(map[x - 1][y] == '.' && map[x][y + 1] == '#')
{
x = x - 1;
gotoxy(x, y);
face = face_NORTH;
}
else if(map[x][y - 1] == '.' && map[x - 1][y] == '#')
{
y = y - 1;
gotoxy(x, y);
face = face_WEST;
}
else if(map[x][y + 1] == '.' && map[x + 1][y + 1] == '#')
{
y = y + 1;
gotoxy(x, y);
face = face_EAST;
}
else
face = face_EAST;
break;
}
}
我想知道是否有任何更容易的方法来使右手打印ciple工作?
我虽然要改变坐标系,但不能实现它
当左手也以同样的方式工作时,称之为右手原则是否正确? – Potatoswatter
我认为你可以使用表格而不是代码 – perreal
@perreal我该如何使用表格来做到这一点?我不知道 – good5dog5