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

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

Войти
Регистрация
Восстановить пароль
 
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
#1

"И" ведет себя как "ИЛИ" - C++

31.03.2012, 11:39. Просмотров 521. Ответов 14
Метки нет (Все метки)

Здраствуйте, помогите разобраться. Есть функция, кот. возвращает true, если клавиша удерживается. Если вызвать эту функцию для проверки 2 клавиш ( кнопки нумерации 1 и 2 )
C++
1
if ( KeyPressed(0x031) == true && KeyPressed(0x032) == true ) { ... }
срабатывает только первое условие


Вот код с самой функцией:
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
#include <windows.h>
#include <stdio.h>
 
bool KeyPressed( int ButtonID );
 
//*********************************************************************
// Name: KeyPressed()
// Desc: ÂîçâðГ*Г№Г*ГҐГІ TRUE åñëè ГЄГ«Г*ГўГЁГёГ* ButtonID óäåðæèâГ*ГҐГІГ±Гї
//*********************************************************************
bool KeyPressed( int ButtonID )
{
    if ( GetKeyState( ButtonID ) < 0 )
        return true;        
}
 
//*********************************************************************
// Name: main()
// Desc: 
//*********************************************************************
int main()
{
    PBYTE   keys[256];
    int     i = 0;
    
    while( i != 100 ) 
    {
        if ( KeyPressed(0x031) == true && KeyPressed(0x032) == true ) 
        {
            printf( "true\n\n" );           
            i += 1;
                Sleep( 250 );
        }
    }
 
    system( "pause" );
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2012, 11:39     "И" ведет себя как "ИЛИ"
Посмотрите здесь:

C++ Вывести "Молодой" или "Старый" в зависимости от введенного возраста
Определить, каких букв в тексте больше: "м" или "н" C++
C++ Обчисление введенной строки любого формата(пример:"(2+3)/4*2"или"2+3"или ...)
C++ Реализовать условие "больше или равно", "меньше или равно" для простых дробей в классе
C++ Как сделать "Старт", "Пауза", Стоп"?
C++ Подскажите как перегрузить операторы ">>", "<<" и "="
"Точность вычислений" или "Элементарная погрешность" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 11:45     "И" ведет себя как "ИЛИ" #2
C++
1
2
3
4
5
6
bool KeyPressed( int ButtonID )
{
    if ( GetKeyState( ButtonID ) < 0 )
        return true;
    else return false;       
}
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
31.03.2012, 11:48     "И" ведет себя как "ИЛИ" #3
лови
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
 
#include <windows.h>
#include <stdio.h>
#include <conio.h>
 
bool KeyPressed( int ButtonID );
 
//*********************************************************************
// Name: KeyPressed()
// Desc: Возвращает TRUE если клавиша ButtonID удерживается
//*********************************************************************
bool KeyPressed( int ButtonID )
{
if ( GetKeyState( ButtonID ) < 0 )
return true; 
}
 
//*********************************************************************
// Name: main()
// Desc: 
//*********************************************************************
int main()
{
PBYTE keys[256]; /// зачем ето?
int i = 0;
char k;
while( i != 100 ) 
{ k=_getch();
if ( KeyPressed(k) == true) 
{
printf( "true\n\n" ); 
i += 1;
Sleep( 250 );
}
}
 
system( "pause" );
return 0;
}
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
31.03.2012, 11:51  [ТС]     "И" ведет себя как "ИЛИ" #4
Цитата Сообщение от Nekto Посмотреть сообщение
C++
1
2
3
4
5
6
    if ( GetKeyState( ButtonID ) < 0 ) { 
        return true; 
    }
    else { 
        return false; 
    }
так вообще ни одно условие не срабатывает
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
31.03.2012, 11:51     "И" ведет себя как "ИЛИ" #5
и можно делать не
C++
1
2
 
while( i != 100 )
а


C++
1
 for(int i=0;i<100;i++)
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 11:52     "И" ведет себя как "ИЛИ" #6
Цитата Сообщение от programina Посмотреть сообщение
так вообще ни одно условие не срабатывает
У меня отлично работает. Когда нажимаю 1, ничего не происходит. Нажимаю 1+2, выдаёт true.
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
31.03.2012, 11:56  [ТС]     "И" ведет себя как "ИЛИ" #7
Taras_Z, вы не поняли меня, мне надо что бы действие в условии IF происходило, если оба условия истинны, т.е. обе клавишы удерживаются нажатыми
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
31.03.2012, 11:57     "И" ведет себя как "ИЛИ" #8
извини не увидел что те надо токо на 1 и 2
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
31.03.2012, 11:59  [ТС]     "И" ведет себя как "ИЛИ" #9
Nekto, простите всё и в самом деле работает, я просто нажимала по одной клавише
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
31.03.2012, 12:02     "И" ведет себя как "ИЛИ" #10
тогда просто написать
C++
1
2
3
4
5
6
7
 
bool KeyPressed( int ButtonID )
{
    if ( GetKeyState( ButtonID ) < 0 )
        return true;
    else return false;       
}
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
31.03.2012, 12:10  [ТС]     "И" ведет себя как "ИЛИ" #11
Цитата Сообщение от Taras_Z Посмотреть сообщение
тогда просто написать
C++
1
2
3
4
5
6
7
 
bool KeyPressed( int ButtonID )
{
    if ( GetKeyState( ButtonID ) < 0 )
        return true;
    else return false;       
}
Да, Nekto уже написал выше, я вообще else убрала, так тоже работает.
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
31.03.2012, 12:12     "И" ведет себя как "ИЛИ" #12
не увидел
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
31.03.2012, 12:14  [ТС]     "И" ведет себя как "ИЛИ" #13
Цитата Сообщение от Taras_Z Посмотреть сообщение
не увидел
Бывает
Jupiter
Каратель
Эксперт С++
6550 / 3970 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.03.2012, 13:57     "И" ведет себя как "ИЛИ" #14
Цитата Сообщение от Taras_Z Посмотреть сообщение
C++
1
2
3
4
5
6
bool KeyPressed( int ButtonID )
{
* * if ( GetKeyState( ButtonID ) < 0 )
* * * * return true;
* * else return false; * * *
}
все проще)
C++
1
2
3
4
bool KeyPressed(int ButtonID)
{
    return (GetKeyState(ButtonID) < 0 );
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2012, 14:30     "И" ведет себя как "ИЛИ"
Еще ссылки по теме:

C++ #include "Sales_item.h" - ошибка "включаемый файл включает самого себя"
"Чудеса типа float" или "Куда девалась информация?" C++
Нужно сделать так, чтобы при вводе числа, выводило "рублей" или "рубль" C++
C++ Как сделать так, чтобы scanf в переменную double мог считывать с клавиатуры не только "0,01", но и "0.01"
бинарный "++": "Counter" не определяет этот оператор или преобразование к типу приемлемо к встроенному C++

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

Или воспользуйтесь поиском по форуму:
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
31.03.2012, 14:30  [ТС]     "И" ведет себя как "ИЛИ" #15
Цитата Сообщение от Jupiter Посмотреть сообщение
C++
1
2
3
4
bool KeyPressed(int ButtonID)
{
    return (GetKeyState(ButtonID) < 0 );
}
Работает и записывается кратко без else-условия
Yandex
Объявления
31.03.2012, 14:30     "И" ведет себя как "ИЛИ"
Ответ Создать тему
Опции темы

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