Переключатель или что-то еще - PullRequest
3 голосов
/ 05 февраля 2012

Я делаю игровое приложение о Дворниках.Это на ранней стадии, и до сих пор я горжусь этим, однако со временем мой код становится очень грязным, поэтому я решил прийти и попросить любую помощь, чтобы решить / переделать / реализовать этот код другим способом безтак много дел.Я думал о реализации некоторого шаблона проектирования, однако я не уверен, какой именно.Любая помощь приветствуется.

bool JanitorApp::key(unsigned char key)
{
if (MainApp::key(key)) return true;

switch(key) {
case 'Q': case 'q':
    current[0] = NULL;
    status[0] = "Stationary";
    return true;
case 'W': case 'w':
    current[0] = &cleans[0];
    status[0] = "Cleaning";
    return true;
case 'E': case 'e':
    current[0] = &eats[0];
    status[0] = "Eating";
    return true;
case 'R': case 'r':
    current[0] = &guards[0];
    status[0] = "Guarding";
    return true;

case 'A': case 'a':
    current[1] = NULL;
    status[1] = "Stationary";
    return true;
case 'S': case 's':
    current[1] = &cleans[1];
    status[1] = "Cleaning";
    return true;
case 'D': case 'd':
    current[1] = &eats[1];
    status[1] = "Eating";
    return true;
case 'F': case 'f':
    current[1] = &guards[1];
    status[1] = "Guarding";
    return true;

      case 'Z': case 'z':
    current[2] = NULL;
    status[2] = "Stationary";
    return true;
case 'X': case 'x':
    current[2] = &cleans[2];
    status[2] = "Cleaning";
    return true;
case 'C': case 'c':
    current[2] = &eats[2];
    status[2] = "Eating";
    return true;
case 'V': case 'v':
    current[2] = &guards[2];
    status[2] = "Guarding";
    return true;
}

return false;}

1 Ответ

0 голосов
/ 05 февраля 2012

Вы можете начать с просмотра шаблона Command. Также может представлять интерес рефакторинг «Заменить условным полиморфизмом».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...