Я пишу программу Снейк в C++ (визуализация с JNI) и действительные кнопки перемещения либо влево (перемещение на 90 ° против часовой стрелки) или вправо (перемещение на 90 ° по часовой стрелке).Вложенные если-заявления
В каждом цикле цикла игры я получить ключ событие из графического интерфейса и переместить мою змею в соответствии с этим ключевым событием, это то, как я это сделать:
if(key_event != NULL){
if(key_event == LEFT){
if(moveDirection == UP || moveDirection == DOWN){
moveDirection = LEFT;
(moveDirection == UP) ? /*change turn after head*/ : /*change turn after head*/;
} //else if (moveDir == LEFT || RIGHT)
} //else if (key_event == RIGHT)
//...
}
КРП с: /*change turn after head*/
является потому что если змея движется вниз и идет влево есть другой график для поворота тогда, когда это будет до и идет влево.
Это приводит к множеству if-утверждений и не очень читаемо, поэтому мне интересно, существует ли общий способ решения вложенных if-утверждений, подобных этому.
EDIT:
key_event и moveDirection - перечисления.
В основном это комбинация ответов walkTarget и Mark B, это, безусловно, должно улучшить читаемость, спасибо! – Aerus 2010-12-15 15:15:39