Не могу найти в чем ошибка. кто поможет?
Ну, смотри. Сообщение
self.x >= -self.width:
TypeError: '>=' not supported between instances of 'NoneType' and 'int'
указывает нам на то, что во время ошибки self.x = None
Изначально вижу x заполняется. Значит в процессе работы он в какой-то момент устанавливается в None.
Такой проблемный момент видно только в return_self, где его значение устанавливается в некий передаваемый radius
self.x = radius
который в свою очередь получается из функции find_radius.
При беглом взгляде на эту функцию бросается в глаза, что единственный return в ней из-за отступов находится внутри блока if. Т.е. если условие не выполняется, функция как раз и возвращает None, вызывая ошибку программы.
Так что проблему надо искать там. Так как запланированной логики работы игры я не знаю, предположу, что достаточно просто поправить эту строку с return radius (убрать лишний отступ), логично, чтобы она возвращала результат независимо от условия.
Перечитай внимательно саму ошибку, проверь строки на которые она указывает.