Смысл в разгоне системы. Если 6 всего и 3 бш - это точно хороший респ (условия удовлетворительных респов придумайте для себя сами

), и в нём надо только убивать БШ. А если 4 или больше неписей, и нет бш - это говноресп - вырезать полностью. Алгоритм простейший, не учитывает варианты 2 фрига 1 круз. Или 2 круза 1 бк. Думайте сами как делать идеально.
И вообще, код длинный и неудобный, хоть и работает.
Как правило, сортировка идёт по расстоянию. Проверять надо всего 3 точки на красный цвет, с шейдом (а фон там непрозрачный чёрный если нет выделения), вложенными if. 1-я точка, возле центра крестика - если она есть, значит есть непись. 2-я точка, в вершине луча круизера - если её нет, это фриг. 3-я точка, в углу луча крестика БШ, если её нет - это круз, если есть - это БШ. Всё. Думаю, около 10 строк на проверку, 2 строки на организацию цикла. Плюс-минус.