SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › list и iterator › Ответ в теме: list и iterator
Сам код, немного другой, нежели я писал в теме. В теме я писал для более простого восприятия. На самом деле у меня есть 2 класса enemy и bullet. К каждому из них есть список, и итератор. Далее код :
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
int main(){ std::list<bullet*> bul; std::list<bullet*>::iterator it2; std::list<enemy*> en; std::list<enemy*>::iterator it3; ....... while (window.isOpen) { for (it2 = bul.begin(); it2 != bul.end();){ //p.s. создание пуль происходит в другом месте bullet *b = *it2; b->move(game_time); if (b->is_alive == 0) { it2 = bul.erase(it2); delete b; } else it2++; } for (it3 = en.begin(); it3 != en.end();){ enemy *e = *it3; e->move(game_time); if (e->is_alive == 0) { it3 = en.erase(it3); delete e; } else it3++; } } return 0; } |
Этими двумя циклами я реализую функцию move для каждого объекта классов, а также удаляю их. Теперь сама проблема. В каждом классе есть переменная bounds, это прямоугольники пуль и врагов, и когда они пересекаются, то пуля должна умирать, а враг терять здоровье, т.е. такое условие(если как-то совместить эти циклы): if (b->bounds.intersects(e->bounds)) { b->is_alive=0; e->hp-=1; }
Собственно вот такая вот проблемка