хорошо сформулированный вопрос, содержит не менее половины ответа
при использовании бесконечного цикла ( for(; ;) ), игра просто зависает. Из-за чего это происходит?
по тому что
нет выхода из цикла... неужели трудно догадаться?
это
классическая ошибка. и не надо его ни чем заменять.. просто надо из него выходить (
break или
return по какому то разумному условию)
ps
если вы уже пытались предусмотреть выход, но он не происходит - осталось полшага до гениального озарения -
условие выхода не выполняется