Мне нужно сгруппировать несколько функций в одну функцию - PullRequest
0 голосов
/ 22 февраля 2020

Мне нужно сгруппировать несколько if-функций в одну большую функцию с произвольным именем.

if (NPC == NPC1)
{
    Attack = NPCAttack1;
}
if (NPC == NPC2)
{
    Attack = NPCAttack2;
}
if (NPC == NPC3)
{
    Attack = NPCAttack3;
}
if (NPC == NPC4)
{
    Attack = NPCAttack4;
}
if (NPC == NPC5)
{
    Attack = NPCAttack5;
}
if (NPC == NPC6)
{
    Attack = NPCAttack6;
}
if (NPC == NPC7)
{
    Attack = NPCAttack7;
}
if (NPC == NPC8)
{
    Attack = NPCAttack8;
}
if (NPC == NPC9)
{
    Attack = NPCAttack9;
}
if (NPC == NPC10)
{
    Attack = NPCAttack10;
}

Я хочу, чтобы все это было внутри функции с именем AttackFunction. Как мне это сделать?

1 Ответ

0 голосов
/ 22 февраля 2020

Прежде всего, давайте заменим все эти if операторы одним оператором switch:

switch (NPC) {
    case NPC1:
        Attack = NPCAttack1;
        break;

    case NPC2:
        Attack = NPCAttack2;
        break;

    case NPC3:
        Attack = NPCAttack3;
        break;

    case NPC4:
        Attack = NPCAttack4;
        break;

    case NPC5:
        Attack = NPCAttack5;
        break;

    case NPC6:
        Attack = NPCAttack6;
        break;

    case NPC7:
        Attack = NPCAttack7;
        break;

    case NPC8:
        Attack = NPCAttack8;
        break;

    case NPC9:
        Attack = NPCAttack9;
        break;

    case NPC10:
        Attack = NPCAttack10;
        break;
}

Теперь мы можем внедрить этот код в функцию, которая получает NP C и верните желаемый тип атаки.

<attack_type> get_attack_type_from_npc(<npc_type> NPC) {
    switch (NPC) {
        case NPC1:
            return NPCAttack1;

        case NPC2:
            return NPCAttack2;

        case NPC3:
            return NPCAttack3;

        case NPC4:
            return NPCAttack4;

        case NPC5:
            return NPCAttack5;

        case NPC6:
            return NPCAttack6;

        case NPC7:
            return NPCAttack7;

        case NPC8:
            return NPCAttack8;

        case NPC9:
            return NPCAttack9;

        case NPC10:
            return NPCAttack10;
    }
    throw std::runtime_error("No attack type found");
}

в свою основную:

int main() {
    // ... Declare Attack & NPC ... Set NPC ...
    Attack = get_attack_type_from_npc(NPC);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...