Потому что код плохо написан.
Из-за этого высока вероятность бага.
Писать код нужно так, словно завтра его будет проверять человек в 10 раз глупее вас, и по итогам будет начислять вам зарплату. То есть если не поймет, как он устроен, то зарплата, соответственно, ноль. Это позволило бы не только вам самому легко найти или сразу увидеть ошибку, но и показать код другу-программисту.
На самом деле даже без других людей это правило тоже важно. Потому что вы-сегодня и вы-завтра - это два разных человека. И чем дальше во времени, тем больше разница. Через месяц или, скажем, через полгода вы уже сами не сможете разобраться в своем коде. Что такое x? А что значит aex? Будут примерно такие вопросы. Что делает функция game, за что отвечает? Ведь по названию не понятно, а комментариев нет. Где главный цикл игры? Только после полного прочтения кода и долгих попыток разобраться, удастся понять логику структуры кода, но в таком случае проще заново написать с нуля.
Вам нужно обратить внимание в первую очередь на:
- то, как вы называете переменные и функции (нужно осмысленно)
- наличие комментариев, помогающих понять код
Начните с
этой статьи в Википедии, и если захотите продолжить в том же направлении, то закончите какой-нибудь книгой по теме. Есть много таких книг, достаточно прочитать хотя бы одну. Например, "Совершенный код" (Макконнелл) или "Рефакторинг" (Фаулер).