Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нажатия клавиш в Turbo C++, Как отлавливать нажатия клавиш в Turbo C 
:(
    Опции темы
Flangie
Дата 7.7.2003, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.7.2003

Репутация: нет
Всего: нет



Кто нибудь знает, как можно отлавливать нажатия клавиш клавиатуры в Turbo C++? Заранее спасибо.
PM MAIL WWW   Вверх
Baa
Дата 7.7.2003, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Не понятен вопрос... надо отлавливать нажатие клавиш программиста, который пишет программу в середе разработки Turbo C++?
Или надо написать программу, которая будет протоколировать все клавиши нажатые юзером, а сама она будет висеть в фоновом режиме? (резидентная)
Или надо просто считать клавишу в своей программе?


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Flangie
Дата 8.7.2003, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.7.2003

Репутация: нет
Всего: нет



Ну, допустим, нужно создать НЕЧТО вроде змейки (игра такая есть), управление стрелками. Как можно ловить события нажатия этих стрелок?
PM MAIL WWW   Вверх
Step
Дата 8.7.2003, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



биоскей


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Flangie
Дата 8.7.2003, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.7.2003

Репутация: нет
Всего: нет



спасибо!!!!!!!!
PM MAIL WWW   Вверх
Step
Дата 8.7.2003, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



Flangie тебе что помогло??? я вообще так наугад сказал, где то когдато слышал


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Flangie
Дата 9.7.2003, 03:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.7.2003

Репутация: нет
Всего: нет



Да. Я нашел хелп по биоскею - это действительно то, что мне нужно. Правда не знаю, как там с производительностью, но он хотя бы ловит нажатия. Так что еще раз спасибо!
Кстати может кто знает, как за одно туда и мышь запихать? В смысле обработать движения мыши и поймать события нажатия кнопок мыши?
PM MAIL WWW   Вверх
Step
Дата 10.7.2003, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



это через прерывания(функции) дос или биоса, не помню спроси у ассемблеровщиков. или напомни мне сегодня вечером по пм, я у себя в книге посмотрю...


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
CrasyMen
Дата 11.3.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 19.12.2006

Репутация: нет
Всего: 3



я в Turbo С в хелпе не нашел
розтолкуйте пожалуйста
тоже интересует этот вопрос


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
Kuvaldis
Дата 11.3.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 11
Всего: 61



CrasyMen
Посмотри здесь

Добавлено @ 16:05 
Цитата

биоскей

Насколько я помню (а помню я хорошо smile ) это функция kbhit()


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
vinter
Дата 11.3.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(Kuvaldis @  11.3.2007,  16:03 Найти цитируемый пост)
это функция kbhit()

он тоько проверяет наличие или отсутствие чего-либо в буфере клавиатуры.
вот старая программка, че делает непомню, но тут как-раз работа с клавиатурой
Код

#include<conio.h>
#include<stdio.h>
#include<ctype.h>
#define BLINK 128
void main()
{
    textmode(C40);
    clrscr();
    struct text_info k;
    gettextinfo(&k);
    int ctrelka,x=1,y=1;

    for(x=1;x<=k.screenwidth;x++)
    {gotoxy(x,k.screenheight-3);printf("_");}
    gotoxy(1,1);x=1;y=1;
    do{
        ctrelka=getch();if(ctrelka==0)
        {
            ctrelka=getch();

            switch(ctrelka)
            {
            case 0x4B:{x--;if(x<1){y--;x=k.screenwidth;}gotoxy(x,y);break; }
            case 0x4D:{x++;if(x>k.screenwidth){x=1;y++;}gotoxy(x,y);break;}
            case 0x50:{y++;if(y>k.screenheight-3){y=1;x++;}gotoxy(x,y);break;}
            case 0x48:{y--;if(y<1){y=k.screenheight-3;x--;}gotoxy(x,y);break;}
            case 0x20: { x++;gotoxy(x,y);break;}
            }
        }

        else{
            if(islower(ctrelka)!=0){
                printf("%c",ctrelka);gotoxy(x,y);
                x++;   }
            if(x>80){x=1; y++; }
            if(islower(ctrelka)==0&&!iscntrl(ctrelka)) {
                gotoxy((k.screenwidth-30)/2,k.screenheight-2);
                textcolor(RED|BLINK);
                cprintf("\aThis is not latinish symbol!!!" );
                gotoxy(x,y);}
            if(islower(ctrelka)!=0)

            {
                gotoxy((k.screenwidth-30)/2,k.screenheight-2);
                textcolor(BLACK);
                delline();
                gotoxy(x,y);  }
        }
    }while(ctrelka!=0x1B);
    clrscr();

}


Цитата(Step @  8.7.2003,  14:45 Найти цитируемый пост)
Flangie тебе что помогло??? я вообще так наугад сказал, где то когдато слышал

 smile  smile  smile 



--------------------
Мой блог
PM MAIL WWW   Вверх
profispb
Дата 22.3.2007, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.12.2005
Где: Санкт - Петербург

Репутация: 1
Всего: 1



Все делается через getch() и оператор swith().
--------------------
В жизни, я люблю делать, то что я люблю. А не то что модно, престижно и выгодноЛюблю когда начинает работать, то что без меня не работало!
PM MAIL ICQ   Вверх
zkv
Дата 22.3.2007, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(profispb @  22.3.2007,  12:37 Найти цитируемый пост)
Все делается через getch() и оператор swith(). 

Цитата(vinter @  11.3.2007,  16:11 Найти цитируемый пост)
           ctrelka=getch();
         switch(ctrelka)
            {
            case 0x4B:{x--;if(x<1){y--;x=k.screenwidth;}gotoxy(x,y);break; }
            case 0x4D:{x++;if(x>k.screenwidth){x=1;y++;}gotoxy(x,y);break;}
            case 0x50:{y++;if(y>k.screenheight-3){y=1;x++;}gotoxy(x,y);break;}
            case 0x48:{y--;if(y<1){y=k.screenheight-3;x--;}gotoxy(x,y);break;}
            case 0x20: { x++;gotoxy(x,y);break;}
            }


Это сообщение отредактировал(а) zkv - 22.3.2007, 13:15
PM MAIL   Вверх
profispb
Дата 22.3.2007, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.12.2005
Где: Санкт - Петербург

Репутация: 1
Всего: 1



zkv, Молодца! Но с 16-ой системой загнул. Просто ANSI код.
--------------------
В жизни, я люблю делать, то что я люблю. А не то что модно, престижно и выгодноЛюблю когда начинает работать, то что без меня не работало!
PM MAIL ICQ   Вверх
Kuvaldis
Дата 22.3.2007, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 11
Всего: 61



zkvvinter!
имхо, 
Цитата

Ну, допустим, нужно создать НЕЧТО вроде змейки (игра такая есть), управление стрелками. Как можно ловить события нажатия этих стрелок?

Как раз тут и нужно, чтобы программа НЕ ЖДАЛА нажатия кнопок (как при getch()). "Змейка" должна ползать автоматически и иногда, по нажатию нужных кнопок, реагировать на них. Это и делается через kbhit()
ТАк у нас курсовые оформлялись. И это логично, так как тискать каждый раз кнопку, чтобы змеюка передвинулась на 1 позицию- это изврат

Это сообщение отредактировал(а) Kuvaldis - 22.3.2007, 13:31


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0782 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.