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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Класс строка, класс текст, агрегация http://www.cyberforum.ru/cpp-beginners/thread452909.html
12. Текст (2 класса: строка, текст находятся в отношении агрегации) Конструкторы: по умолчанию, с параметрами и копирования. Деструктор. Функции (две-три на выбор): вставки (удаление) символа в данной строке, в данном месте; очистки заданной строки; удаление заданной строки; вставки строки в заданное место; поиск строки в тексте; очистки текста.
C++ Класс Time для работы с временем в формате «час:минута:секунда» Всем доброго времени суток! Есть вопрос: Создать класс Time для работы со временем в формате «час:минута:секунда». Класс должен включать в себя не менее четырех функций инициализации: числами, строкой (например, «23:59:59»), секундами и временем. числами, строкой это понятно, а вот секундами и временем непонятно, кто-нибудь объясните пожалуйста что имеется ввиду в задании :-| я... http://www.cyberforum.ru/cpp-beginners/thread452907.html
С помощью cin.getline считать все строки файла в контейнер (вектор или очередь) C++
Можете пожалуйсто написать код, где можно с помощью cin.getline считать все строки файла в контейнер (вектор или очередь), потом из контейнера переписать все строки в другой файл, кроме последнего.
C++ в файле выделить текст жирным, курсив, подчеркнутый
возможно?
C++ Алгоритм шифрования DES http://www.cyberforum.ru/cpp-beginners/thread452861.html
Собственно, код я написал, но никак не могу найти ошибку =( Дело в том, что шифрует неправильно (назад не расшифруешь) Интерфейс прост: ввести пароль, потом 'e' или 'd' (шифровать/расшифровать) и понеслась. Открывает для шифрования файл file.txt, в файл crypt.txt пишет результат, в ou.txt небольшой дампик. Из всего следующего замечу, что индексы для перестановок расставлены правильно, вот...
C++ Найти ошыбку в фукции Рисую в winapi: Есть 2 функуию котрые должны возвращать координаты елемента в масиве, но они возвращают 0 почемуто когда я попадаю на елемент. cells - индексы прямоугольников cells_х - х кординаты каждово cells_y - y кординаты каждово подробнее

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

Приступил к изучению 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;
}
Как пойди правильно к решению?
Заранее благодарен за советы и помощь!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru