The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Получить код клавиши, в фоне ..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Изначальное сообщение [ Отслеживать ]

"Получить код клавиши, в фоне ..."  +/
Сообщение от redd on 05-Апр-18, 15:52 
Как без останова получать код клавиши,

key=getch();

Работает, но на нем происходит останов ((((((((

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Получить код клавиши, в фоне ..."  +/
Сообщение от redd on 05-Апр-18, 15:57 
Ну в смысле, программа ждет пока клавишу не нажмешь,
А надо, чтобы без останова программы получить, код и обработать,
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Ещё одна тнема про тетрис.  В той лимит исчерпался."  +/
Сообщение от Andrey Mitrofanov on 05-Апр-18, 18:25 
> Ну в смысле,
> А надо, чтобы

Так бы сразу и написал!

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

8. "Ещё одна тнема про тетрис.  В той лимит исчерпался."  +/
Сообщение от redd on 05-Апр-18, 19:00 
Это не просто тетрис, это верх тетрисостроения ...)))
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

2. "Получить код клавиши, в фоне ..."  +/
Сообщение от redd on 05-Апр-18, 16:35 
А нашел .....

void input()
{

    if(_kbhit())
    {
        switch(_getch())
        {
            case 'a':
            dir = LEFT;
            break;
        case 'w':
            dir = UP;
            break;
        case 'd':
            dir = RIGHT;
            break;
        case 's':
            dir = DOWN;
            break;
        case 'x';
            gameover = true;    
        }

    }
}

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Получить код клавиши, в фоне ..."  +/
Сообщение от redd on 05-Апр-18, 16:59 
Следующий фрагмент является циклом, выход из которого осуществляется по нажатию клавиши:

while(!kbhit ()); /* ожидание нажатия клавиши */

Вот еще нашел, но .... но пока никак .....

Можь кто подскажет ?, не пойму в чем дело,

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Получить код клавиши, в фоне ..."  +/
Сообщение от redd on 05-Апр-18, 17:18 
Не работает, у меня TURBO C 3.2 ...

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Получить код клавиши, в фоне ..."  +/
Сообщение от redd on 05-Апр-18, 17:20 
Не так не сяк, наверное поспать нужно, пошел СПАТЬ ....
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Получить код клавиши, в фоне ..."  +/
Сообщение от redd on 05-Апр-18, 18:46 
Вот так вот вроде работает , нужно остальные клавиши проверить только ...

А на сегодня спать, ....

#include <stdio.h>
#include <conio.h>

#define ESC 27

int main(void)
{
    int cnt = 0;

    while (1) {

    if (kbhit() && getch() == ESC) {
        cputs("\r\nYou Hit Esc-Key!!\r\n");
        break;
    }

    printf("%d\r", ++cnt);
    }

    return 0;
}

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Получить код клавиши, в фоне ..."  +/
Сообщение от redd on 05-Апр-18, 19:40 
Методом научного тыка, выяснил, что из табличных значений совпали только ESC, и SPACE ..(27 и 32)

Остальные не совпали с табличными, придется самому получить эти коды ....

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

10. "Получить код клавиши, в фоне ..."  +/
Сообщение от redd on 06-Апр-18, 17:29 
#include <stdio.h>
#include <ctype.h>
#include <conio.h>

union CODE
{
    struct
    {
        unsigned char ascii;
        unsigned char scan;
    } c;
    unsigned int i;
};


int main()
{
    clrscr();
    CODE code;
    printf("Press key to get scan and ascii codes. Press ESC to exit\n\n");
    do
    {
        asm mov ah, 0x10
        asm int 0x16
        asm mov code.i, ax
        printf("scan code  : %x\nascii code : %x\n\n", code.c.scan, code.c.ascii);
    }
    while (code.c.ascii != 27);

    return 0;
}
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Получить код клавиши, в фоне ..."  +/
Сообщение от redd on 06-Апр-18, 17:39 
В интернете нашел несколько вариантов таблиц скан кодов, и прогнал по программе, не с одной не совпало на 100%, наверное потому что у меня DOS через эмулятор работает ...
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Получить код клавиши, в фоне ..."  +/
Сообщение от redd on 06-Апр-18, 17:42 
А С++ то вещь оказывается, а в связке с asm чудеса творить может ))) ...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Получить код клавиши, в фоне ..."  +/
Сообщение от redd on 06-Апр-18, 17:48 
Пойду я учебник С++ читать, заинтересовало ...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

14. "Получить код клавиши, в фоне ..."  +/
Сообщение от redd on 06-Апр-18, 18:09 
Вот ещё что выдернул из tetris ASCII for Linux ....

while ((cmd=getchar())>0) {
            switch (cmd) {
                case 'q':
                    t.x--;
                    if (tetris_hittest(&t))
                        t.x++;
                    break;
                case 'd':
                    t.x++;
                    if (tetris_hittest(&t))
                        t.x--;
                    break;
                case 's':
                    tetris_gravity(&t);
                    break;
                case ' ':
                    tetris_rotate(&t);
                    break;
            }
  

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру