Szczerze mówiąc nawet nie wiem gdzie leży mój problem, moje doświadczenie w c++ jest trochę większe niż zerowe więc proszę o pomoc. Mianowicie piszę prostą grę na OpenGL/GLUT i mam problem z rozpoznawaniem klawiszy. Funkcje biblioteki GLUT działają, tylko zapewne moja klasa do obsługi przycisków jest zła.
plik KeyBuffering.h
class KeyboardState
{
private:
bool Keys[256];
bool SpecialKeys[256];
public:
KeyboardState(); //tutaj nie do konca wiem jak zrobić ten konstruktor
void OnKeyDown(KeyboardState& k, unsigned char Key);
void Update(KeyboardState& k);
...
Keybuffering.cpp
#include "KeyBuffering.h"
#include <stdlib.h>
void KeyboardState::OnKeyDown(KeyboardState& k, unsigned char Key)
{
k.Keys[Key] = true;
};
void KeyboardState::Update(KeyboardState& k)
{
if (k.Keys[27])
exit(0);
}
...
i main.cpp
#include "KeyBuffering.h"
#include <stdlib.h>
#include <iostream>
using namespace std;
KeyboardState keyboardState; //obiekt globalny ? tylko tak mi chce działac
void Draw() //nie ma znaczenia tutaj
void Tick()
{
keyboardState.Update(keyboardState);
Draw();
}
void OnKeyDown(unsigned char Key, int X, int Y)
{
keyboardState.OnKeyDown(keyboardState, Key);
MessageBox(NULL, "przycisk nacisniety", "test", MB_OK | MB_ICONERROR | MB_SYSTEMMODAL); //tutaj tylko testowalem czy glut dziala
}
void Initialize()
{
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowSize(800, 600);
glutInitWindowPosition(10, 10);
glutCreateWindow("Hello World!");
glutDisplayFunc(Tick);
glutKeyboardFunc(OnKeyDown);
//glutKeyboardUpFunc(OnKeyUp);
//glutSpecialFunc(OnSpecialKeyDown);
//glutSpecialUpFunc(OnSpecialKeyUp);
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
Initialize();
glutMainLoop();
return 0;
}
Problem polega na tym, że w funkcji update, po nacisnieciu przycisku 27(esc) program powinien sie zakonczyc, a tak nie jest, wiec jestem prawie pewien ze moja klasa nie spełnia swojego zadania, tylko nie wiem gdzie lezy problem.