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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
IFree Host
Заблокирован
#1

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

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

Доброго времени суток.

Приступил к изучению 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)
Посмотрите здесь:

Большое время перерисовки OpenGL - C++
Здравствуйте, я студент 2 курса, учусь на программиста, решил начать писать какую ни будь простенькую изометрическую игрушку, и наткнулся...

Определить время через K (вводится с клавиатуры) секунд - C++
Задачки сверхпростые...но вот чего-то не выходит..общая идея то понятна - она везде там одинакова практически, а как все это собрать не...

Составить программу с оператором for которая суммирует 14 целых чисел вводимых с клавиатуры во время программы - C++
Всем привет! Помогите составить программу с оператором for которая суммирует 14 целых чисел вводимых с клавиатуры во время программы, еще...

Задача по анимации - C++
Два квадрата двигаются в противоположных направлениях http://prntscr.com/8p7ek2 Добавлено через 2 минуты Помогите

Реализация анимации в форме - C++
Как нарисовать и анимировать какой-либо объект в форме? Добавлено через 5 часов 58 минут Актуально

Задержка кадров анимации gif - C++
Я недавно начал изучать си++.. Требуется программа, входными данными которой является gif анимация. Из неё извлекаются значения задержки,...

Builde C++, вставка GIF анимации. - C++
Можно ли каким-либо образом вставить на форму GIF анимашку?

Параллельное выполнение метода (анимации) - C++
есть метод который двигает одну карточку. происходит анимация его движения и на этом его работа заканчивается. жмем еще раз и двигается...

Перехват функции - C++
Приветствую всех. Есть хорошая статья по перехвату API функции. http://habrahabr.ru/post/90377/ Но есть проблема. Как мне...

Перехват URL - C++
Доброго времени! В общем задача следующая, нужно написать программку, которая сидела бы в трее, а лучше вообще нигде не сидела(ну кроме...

перехват исключений - C++
Ввести два числа. Меньшее заменить полсумой, а большее - удвоенным произведением. Выражение должно быть вычислено в отдельной...

Перехват функций - C++
Я делаю чит для игры, я нашел адрес где вызывается WinApi функция WriteFile которая сохраняет данные в файл конфига игры. Мне надо написать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru