Используем переменные как флаги
Представим, что вы разрабатываете игру о приключениях в космосе, где цель в том, чтобы разрушить атакующий вас флот боевых кораблей. Игрок — капитан корабля, управляет им при помощи клавиш со стрел- ками и стреляет ракетами при помощи «пробела». Если в космический корабль игрока определенное количество раз попадает вражеская ракета, корабль теряет способность атаковать. С этого момента нажатие на клавишу «пробел» больше не должно приводить к запуску ракет, и капитану приходится принять оборонительную стратегию, чтобы не допустить еще большего количества попаданий. Очевидно, что при нажатии клавиши «пробел» ваша программа должна проверять состояние корабля, чтобы принять решение, может ли игрок стрелять.
Обычно проверки такого рода осуществляются при помощи флагов — переменных, которые вы используете для выявления того, произошло ли интересующее вас событие. Вы можете взять любые два значения, чтобы описать статус события, но на практике обычно используют 0 (или ложь), чтобы показать, что событие не произошло, и 1 (или правда), чтобы показать, что оно произошло.
В вашей космической стрелялке вы можете использовать флаг под названием могуСтрелять, чтобы обозначить состояние корабля. Тогда 1 будет означать, что корабль может стрелять ракетами, а 0 — не может. На основе этого код для обработчика события — нажатия клавиши «про- бел» — может быть таким, как показано на рисунке. В начале игры вы устанавливаете 1 в качестве значения флага могуСтрелять, чтобы показать, что корабль способен стрелять. Когда в корабль попадет определенное количество вражеских выстрелов, вы установите флаг могуСтрелять на 0, чтобы показать, что боевая система вышла из строя. С этого момента нажатие на «пробел» не будет приводить к пуску ракет.