У меня недостаточно кода, чтобы действительно оценить, является ли это хорошим шаблоном или как его улучшить, но мельком это имеет смысл.
В классе Bullet убедитесь, что вы не не рисовать, обновлять или проверять столкновения с закадровыми пулями. Вместо свойства «offscreen» я часто использую логическое значение «isVisible» (или все, что будет для вас значимым), которое я отключаю, как только объект перестает «существовать», так что я также прекращаю манипулировать им.
В конце концов, тратить хороший процессор на то, чтобы сделать эту пулю go в бесконечность и дальше, не так ли?
Вы правы в том, что можете улучшить if
Я вижу здесь.
Хорошей практикой является расчет условий таким образом, чтобы это было утвердительно. Итак, вместо того, чтобы делать:
Check if:
1. bullet is null (then do nothing)
2. bullet is offscreen (then do nothing)
3. then do something
Вы должны просто проверить третий случай вместо:
Check if:
1. bullet isn't null or offscreen
Примерно так:
if (bullet[i] != null && !bullet[i].offScreen()) {
goodBullets[goodCount] = bullets[i];
goodBullets[goodCount].tick(walls);
goodCount++;
}
Остальные logi c нелегко набросать asp и поразмышлять только из этого фрагмента, но я понимаю, что не так просто свести идею программы к абзацу кода - и, во всяком случае, толпа SO, как уточняйте c вопросов, так что "улучшить мои 3 страницы кода" - это обычно тот тип вопроса, который быстро удаляется.
И наконец: для достижения sh этой цели "только 5 пуль" но с некоторой эффективностью я бы подошел к ситуации, используя шаблон проектирования «пул объектов» . Короче говоря, вы можете создать класс, который будет «одалживать» вам пули и возвращать их, когда они не используются.
Получайте удовольствие!