У меня есть небольшая дилемма с фрагментом кода, который я написал. Я должен определить облик на основе предыдущего облика и хода.
Я сделал простое перечисление для 4 облицовок:
typedef enum directions {N,E,S,W}Facing;
И затем есть три функции, каждая из которых работает с простым оператором switch и выполняет действие, основанное на текущем обращении. Теперь функции turnLeft и turnRight работают просто отлично, но в функции move оператор switch не затрагивает ни одного из случаев, хотя я точно знаю, что введены N, E, S или W.
- (Facing) turnLeft: (Facing) f
{
switch (f)
{
case N:
f = W;
break;
case E:
f = N;
break;
case S:
f = E;
break;
case W:
f = S;
break;
default:
break;
}
return f;
}
- (Facing) turnRight: (Facing) f
{
switch (f)
{
case N:
f = E;
break;
case E:
f = S;
break;
case S:
f = W;
break;
case W:
f = N;
break;
default:
break;
}
return f;
}
- (void) move:(Facing) f
{
switch (f)
{
case N:
y+1;
break;
case W:
x+1;
break;
case S:
y-1;
break;
case E:
x-1;
break;
default:
break;
}
}
Итак, насколько я знаю, все эти переключатели работают одинаково, но третий не работает, первые два работают отлично. У кого-нибудь есть идеи, в чем может быть проблема?