Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Заблокирован
1

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

26.02.2012, 03:43. Показов 1080. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.

Приступил к изучению 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;
}
Как пойди правильно к решению?
Заранее благодарен за советы и помощь!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.02.2012, 03:43
Ответы с готовыми решениями:

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

Время Анимации
Ребят Помогите плз //---------------------------------------------------------------------------...

перехват клавиатуры
на клавиатуре есть пара спец кнопок (www,email) по нажатию запускаются по-умолчанию браузер и...

Перехват клавиатуры
Здравствуйте! Нужна ваша помощь! Необходимо отловить нажатие клавиши, (если не трудно, лучше...

0
26.02.2012, 03:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2012, 03:43
Помогаю со студенческими работами здесь

Поведение функции отрисовки show() внутри цикла. Python/OpenGL. Создание анимации
Добрый день! Имеется объект графического интерфейса ui. Столкнулась с проблемой, что вне...

Пересчет во время анимации
Добрый день. что-то не нахожу простого решения в гугле. Поэтому прошу ваших идей. делаю...

Перехват сообщений от клавиатуры!
Всем Здрасьте! Есть программа, которая висит в трее, необходимо, чтобы она перехватывала все что...

Перехват русской клавиатуры
Всем привет. Как можно перехватить русскую клавиатуру. Пока, что получается только английскую. Буду...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru