У тебя сама модель построена неправильно. Зачем вообще "патрон" хранит в себе "врага-цель"? И логично, что если уж танк-цель взрывается каким-то "сторонним" образом - то "патрон" не знает, как себя вести. Ведь он перестаёт быть нужным!
Намного правильнее было бы, если бы "патроны" не были привязаны к конкретным "танкам", а летели сами по себе. А проверка "попал или нет" проводилась бы по координатам, а не по "целям". То бишь - проходимся по всем "танкам" и смотрим, не совпали ли их координаты с какими-либо "патронами". Если да - то взрываем все такие "патроны", ведь их может быть несколько (ну и сам танк заодно).
Как бы это решил я:
- для всех игровых объектов создал бы абстрактный класс GameObject, от которого уже затем наследовал бы конкретные (танки, патроны, башни);
- разбил бы игровое поле на квадратные клетки (класс Cell), представляющие из себя спрайты N*N пикселей;
- каждая Cell-клетка хранила бы в себе указатель на GameObject, который показывал бы, чем именно "занята" эта клетка;
- тогда попадание патрона в танк проверялось бы легко: если "новая" клетка патрона уже кем-то занята - то этот "кто-то" взрывается (ну, если умеет).
то бишь обыкновенный полиморфизм, ничего сложного
Welcome to the soldier side,
Where there is no one here but me.
People all grow up to die,
There is no one here but me...