Как научиться писать игры на С++, часть 3
Третья программа позволит управлять точкой при помощи клавиатуры. Предыдущие две: раз и два. Для того, чтобы управлять точкой, нужно координаты x и y сохранить в памяти копьютера, для этого нужно дать ячейкам памяти имена. Чтобы ячейке, которая может хранить целое число, дать имя "a" и сразу занести туда число 50 достаточно написать
Именованная таким образом ячейка памяти называется переменной. Имена переменных можно указывать вместо чисел, например при указании координат точки при вызове Plot.
Число, которое лежит в этой именованной ячейке памяти, называется значением переменной. Значение переменной можно менять, например можно записать в переменную b значение 10 вот так:
А можно записать в переменную b значение, вычисленное перед этим как старое значение переменной b плюс 1:
Чтобы значение переменной изменялось при нажатии кнопки со стрелкой направо клавиатуры, нам понадоятся условный оператор if и функция проверки состояния кнопок. Работает это так: если нажата кнопка со стрелкой направо, код которой передан в функцию проверки состояния кнопок, то выполнится код, написанный в фигурных скобках после условного оператора if и произойдет увеличение значения переменной a на 1:
Коды кнопок со стрелками налево, направо, вверх и вниз - 4, 5, 6 и 7. У всех остальных кнопок тоже есть коды, посмотреть список кодов можно например вот тут.
До сих пор все наши программы выполнялись последовательно, в том порядке в котором написан код, при этом в конце выполнения программы изображение появлялось на экране и при нажатии на любую кнопку программа завершалась. Но мы не хотим, чтобы программа рисования завершалась при нажатии на кнопки со стрелками, программа должна показывать изображение на экране и снова проверять, нажаты ли кнопки. Для показа изображения на экране необходимо вызвать функцию ShowFrame(); А для того, чтобы программа продолжила выполняться с нужного нам места, само это место нужно пометить меткой, то есть дать название, а потом написать инструкцию перехода к метке - goto. Вся программа может выглядеть вот так:
Теперь программа не будет сама завершаться и при нажатии кнопки со стрелкой направо будет рисоваться линия.
Чтобы можно было двигать точку не только направо, но и вниз, в программу следует добавить соответствующее условие и изменение значения переменной, хранящей координату у
Таким же образом можно добавить обработку нажатий на кнопки налево и наверх.
А еще можно добавить смену цвета используемого при рисовании или проигрывание звуков.
Если написать программу, проигрывающую звуки при нажатии кнопок, то легко заметить, что пока звучит звук, выполнение Beep не заканчивается, и это мешает играть аккорды. Используйте вызов BeepAsync, его выполнение заканчивается когда звук только начинает проигрываться и дальше звук играется асинхронно, пока программа продолжает выполняться.
Для того, чтобы сделать перемещение точки без рисования, можно добавить переменную, назовем ее f. Значение 0 в переменной f будет означать, что включен режим рисования, а значение 1 - что включен режим перемещения точки. В режиме перемещения точки перед изменением координат достаточно в старое положение точки рисовать черную точку. Черный цвет имеет код 0.