Interger не обновляет значение в функции переключения в C ++ - PullRequest
0 голосов
/ 07 августа 2020

Здесь вроде как полный новичок.

Я начинаю с C ++ и программирования в целом, поэтому я пытаюсь сделать примерное меню для текстовой боевой игры RPG, для отработки условных выражений.

Но значения не обновляются сами по себе. Вот код:

int main() {

    cout << "Wild Ogre attacked!" << endl << endl;
    int ogreHP = 350;
    int HP = 100;
    int Stamina = 100;
    int Magicka = 100;

    while (ogreHP > 1) {
    cout << "HP: " << HP << endl;
    cout << "Stamina: " << Stamina << endl;
    cout << "Magicka: " << Magicka << endl << endl;

    cout << "Ogre HP: " << ogreHP << endl << endl;

    cout << "What are you going to do? " << endl;
    cout << "1.\tAttack." << endl;
    cout << "2.\tMagicka." << endl;
    cout << "3.\tTactics." << endl;
    cout << "4.\tBag." << endl;
    cout << "5.\tRun." << endl;
 
    int menu_input;
    cin >> menu_input;

    switch (menu_input) {
        case 1: {
            
            cout << "1.\tLight Attack." << endl;
            cout << "\t\tDeals 5 points of damage. No Stamina cost." << endl << endl;
            cout << "2.\tHeavy Attack" << endl;
            cout << "\t\tDeals 20 points of damage. Stamina Cost of 10 points." << endl << endl;
            
            int att_input;
            cin >> att_input;
            
            switch (att_input) {

                case 1: {

                    cout << "You dealt 5 points of damage!" << endl << endl;
                    ogreHP= - 5;
            
                    break;
                }
                case 2: {

                    cout << "You dealt 20 points of damage!" << endl << endl;
                    Stamina= - 10;
                    ogreHP= - 20;

                    break;
                }

Заранее спасибо!

1 Ответ

0 голосов
/ 07 августа 2020

Когда вы пишете этот синтаксис:

Stamina = - 10;
ogreHP = - 20;

Вы фактически присваиваете -10 и -20 значениям Stamina и ogreHP соответственно, здесь они не называются «сокращающимися». Вместо этого, если бы вы могли написать следующее:

Stamina -= 10; // Stamina = Stamina - 10; -> previous - 10 = now
ogreHP -= 20;  // ogreHP = ogreHP - 20;   -> previous - 20 = now
//     ^^ is called 'assignment operator'

Проблема будет решена. То же самое, что и в случае 1 в коде.

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