void World::moveBullets() { for (int q = 0; q < _bulletList.size(); q++) { if (_bulletList[q]->getKillAnimation() != 0) { if (_bulletList[q]->getKillAnimation() == 10) { delete _bulletList[q]; _bulletList.remove(q); } else { _bulletList[q]->animation(); } } else { QPoint pos = _bulletList[q]->getPos(); bool withTank; void *status = testCollision(_bulletList[q]->getSpeed(), _bulletList[q], false, &withTank); if (status == nullptr) { switch (_bulletList[q]->getAngle()) { case 0: { _bulletList[q]->setPos(QPoint(pos.x(), pos.y() - _bulletList[q]->getSpeed())); break; } case 1: { _bulletList[q]->setPos(QPoint(pos.x() + _bulletList[q]->getSpeed(), pos.y())); break; } case 2: { _bulletList[q]->setPos(QPoint(pos.x(), pos.y() + _bulletList[q]->getSpeed())); break; } case 3: { _bulletList[q]->setPos(QPoint(pos.x() - _bulletList[q]->getSpeed(), pos.y())); break; } } } else { if (withTank) { Tank *tank = ((Tank*)status); tank->hit(); if (tank->getHp() == 0) { tank->setSize(0); } } else { Wall *wall = ((Wall*)status); wall->hit(); if (wall->getHp() == 0) { for (int i = 0; i < _wallList.size(); i++) { if (_wallList[i] == wall) { if (_wallList[i] == _playerBase) { _playerBase = nullptr; } delete _wallList[i]; _wallList.remove(i); } } } } _bulletList[q]->animation(); } } } }