SFML и C++ Уроки \ Разработка игр › Форумы › Домашние задания › Домашнее задание 3 к уроку 25. › Ответ в теме: Домашнее задание 3 к уроку 25.
Мне интересны задания. К тому же, решения многих из них 100% пригодится в будущем. Хотя, конечно, было бы интересно, если б и другие выкладывали свои решения, чтобы можно было сравнить свои с чьими-нибудь.
Кстати, я решил проблему со смертью врага. Просто if(){} отвечающее за смерть игрока переносим вначало функции отвечающей в int main за переключение логических переменных kickL, kickR и kickUp. Вот так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
if ((*it)->name == "EasyEnemy") { if ((p.dy > 0) && (p.onGround == false)) { (*it)->dx = 0; p.dy = -0.3; (*it)->health = 0; } if ((*it)->dx > 0) { p.kickR = true; p.kickUp = true; p.onGround = false; p.health -= 1; } if ((*it)->dx < 0) { p.kickL = true; p.kickUp = true; p.onGround = false; p.health -= 1; } } |
Теперь, если нас толкает враг то мы его не убиваем. Ещё можно добавить, например, условие && (kickUp == false), чтобы и оно требовалось для убийства врага (это нужно для того, чтобы мы не убивали врага, если мы по каким-то причинам приземлились ему на голову просле откидывания), но я решил это не добавлять.
Старое убийство врага нужно удалить.