Переменная не обновляется

0

Итак, я разрабатываю RPG-игру, и моя боевая система не работает. Я совершенно новый, но у меня есть хорошее понимание того, что у меня здесь, по большей части. Всякий раз, когда я запускаю боевую систему, переменные "eHp" и "hp" не обновляются.

hit = rand() % atk + 1 + (rand() % 3 + 1);
            diff = hit - OppD;
            if (diff > 0)
                eHp = eHp - diff;
            if (eHp <= 0)
                break;
            OppHit = rand() % OppA + 1;
            OppDif = OppHit - def;
            hp = hp - OppDif;
            if (hp <= 0)
                break;

Это внутри оператора switch внутри цикла while. Дисплей для точек здоровья находится в цикле while перед оператором switch. Оператор switch используется для определения той атаки, которую игрок решает использовать. Если вам нужно увидеть больше кода. Просто скажите, сколько вам нужно увидеть, и я обновлю его. Благодарю!

  • 4
    Проверяли ли вы с помощью отладчика, являются ли значения переменных (atk, hit, OppD ...) чем-то вменяемым, выполняются ли условия if и выполняется ли код внутри, и есть ли что-то необъяснимое (например, условия if не выполнено, хотя условие верно, или неправильные результаты вычитания и т. д.)?
  • 0
    @deviantfan Нет, меня никогда не учили использовать отладчик
Показать ещё 1 комментарий
Теги:
variables
updating

2 ответа

0

выясняется, что условие оператора switch было в типе данных char, но у меня были случаи как тип данных int.

  • 0
    Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его постом - вы всегда можете комментировать свои собственные посты, и, когда у вас будет достаточно репутации, вы сможете комментировать любые посты .
  • 0
    @ Dove Но я понял свою проблему. Есть ли способ удалить этот вопрос?
Показать ещё 1 комментарий
0

Измените блок кода на этот блок кода и вставьте результат в свой вопрос, если просмотр результата еще не решил его для вас.

hit = rand() % atk + 1 + (rand() % 3 + 1);
diff = hit - OppD;

std::cout << "hit: " << hit << "\ndiff:" << diff << "\neHP: " << eHp << std::endl;

if (diff > 0) eHp = eHp - diff;
if (eHp <= 0) break;

OppHit = rand() % OppA + 1;
OppDif = OppHit - def;

std::cout << "OppHit: " << OppHit << "\nOppDif: " << OppDif << "\nhp: " << hp << std::endl;

hp = hp - OppDif;

if (hp <= 0) break;
  • 0
    Переход на этот блок кода ничего не изменил и не выполняет оператор cout
  • 0
    @ ShadowWesley77 Надеюсь, это дало вам кучу выходных.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню