Форум программистов, компьютерный форум CyberForum.ru

Перехват клавиатуры во время анимации (C++, OpenGL) - C++

Восстановить пароль Регистрация
 
IFree Host
Заблокирован
26.02.2012, 03:43     Перехват клавиатуры во время анимации (C++, OpenGL) #1
Доброго времени суток.

Приступил к изучению OpenGL. Начать решил с самого простого чтобы погружение было как можно приятнее

Для начала решил написать старую добрую "змейку".

Пошел по протореной дорожке:
1. Создал класс CZmejka.
2. Определился с функциями про- и перерисовки
3. Раскопал как перехватывать клавиатуру
4. написал цикл для анимирования.

"змейка" заползала.... НО перехват больше не работает.

В консоли я сделал это так и там все работает:

C++
1
2
3
4
5
6
7
8
char input = 0;
 
while(true)
{
    if (kbhit()) input = getch();
    ...
    ...
}
Но тут другие печеньки.
В моем коде это выглядит так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void CZmejka::Move()
{
        int i_tick = 0;
        char c_input = 0;
 
        while(true)
        {
                i_tick++;
 
                Sleep(3);
                if(i_tick >= speed)
                {       
                        Repaint();
 
                        if(kopf < 500) ++kopf;
                        else kopf = 0;
                        if(schwanz < 500) ++schwanz;
                        else schwanz = 0;
 
                        switch(c_richtung)
                        {
                                case 'o': 
                                        if(y_location > 40) ++y_location; 
                                        else y_location = 0; 
                                        break;
                                case 'u':
                                        if(y_location > 0) --y_location; 
                                        else y_location = 40; 
                                        break;
                                case 'r': 
                                        if(x_location < 50) ++x_location; 
                                        else x_location = 0; 
                                        break;
                                case 'l': 
                                        if(x_location > 0) --x_location; 
                                        else x_location = 50; 
                                        break;
                        }
 
                        Zmejka[x][kopf] = x_location;
                        Zmejka[y][kopf] = y_location;
                        Paint();
                        i_tick = 0;
                }
        }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
void keyboardSpecialUp(int rawKeyCode, int x, int y)
 {
         CZmejka zmejka;
 
     switch (rawKeyCode)
     {
         case GLUT_KEY_LEFT:
        zmejka.c_richtung = 'l';
        printf("Key down");
             break;
         case GLUT_KEY_UP:
        zmejka.c_richtung = 'o';
             break;
         case GLUT_KEY_RIGHT:
        zmejka.c_richtung = 'r';
             break;
         case GLUT_KEY_DOWN:
        zmejka.c_richtung = 'u';
             break;
     }
 }
 
int main(int argc, char **argv)
{
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
        glutInitWindowSize(500,400);
        glutInitWindowPosition(100,50);
        glutCreateWindow(argv[0]);
        glutDisplayFunc(myDisplay);
        glutReshapeFunc(myReshape);
        //glutMouseFunc(myMouse);
        //glutKeyboardFunc(Keyboard);
        glutSpecialFunc(keyboardSpecialUp);
        myInit();
        glutMainLoop();
        return 0;
}
Как пойди правильно к решению?
Заранее благодарен за советы и помощь!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 03:43     Перехват клавиатуры во время анимации (C++, OpenGL)
Посмотрите здесь:

Определить время через K (вводится с клавиатуры) секунд C++
C++ Ввести с клавиатуры массив из N чисел (N также вводится с клавиатуры). Найти наименьший из его положительных элементов.
C++ Как ввести двумерный массив с клавиатуры? Его размерность [n][m] нужно задавать с клавиатуры.
C++ Функция: Написать функцию next(t, t1, d), которая присваивает параметру t1 время на d секунд больше, чем время t.
C++ Записи. Дано время t1 и время t2. Определить, сколько времени пройдет от t1 до t2
C++ Составить программу с оператором for которая суммирует 14 целых чисел вводимых с клавиатуры во время программы
Большое время перерисовки OpenGL C++
Выводить текущее время в определенные позиции консоли во время работы C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 21:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru