Создание игры с OpenGL / GLUT и C ++.
Я слышал, что самый простой способ управления клавиатурой в GLUT - это использовать массив bool.
Итак, вотчто у меня есть:
bool* keys = new bool[256];
...
void keyDown(unsigned char ch, int x, int y)
{
keys[ch] = true;
}
void keyUp(unsigned char ch, int x, int y)
{
keys[ch] = false;
}
Тогда, если я хочу узнать состояние ключа, я просто возвращаю ключи [ключ].
У меня есть аналогичная настройка для специальных клавиш.Теперь, в моей игре, когда ты умрешь, он сбрасывает все значения, которые нужно сбросить, и снова запускает игру.До сих пор это включало
keys = new bool[256];
и аналогичное объявление для массива специальных ключей.Что не имеет смысла для меня, так это то, что иногда предполагаемый сброс массивов приводит к тому, что некоторые или все значения в ключах становятся двузначными или трехзначными целыми числами (следовательно, всегда оценивая значение true и заставляя персонажа игрока двигаться неуправляемо, пока один илибольше клавиш, которые были явно внизу, были нажаты).У меня есть подозрение, что это произошло, потому что во время эндшпиля одна из клавиш была нажата, что приводило в замешательство C ++, когда он пытался сделать весь массив ложным и обнаружил, что одна вещь застряла.
Человек, этосбивает с толку.Проблема была решена путем устранения всех дополнительных инициализаций ключей, насколько я могу видеть.Но я не понимаю.Кто-нибудь получил какие-либо идеи о том, как мне удалось превратить некоторые bools в целые?