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

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

Восстановить пароль Регистрация
 
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
31.03.2012, 11:39     "И" ведет себя как "ИЛИ" #1
Здраствуйте, помогите разобраться. Есть функция, кот. возвращает 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
 Аватар для 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
 Аватар для programina
1912 / 597 / 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
 Аватар для 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
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
31.03.2012, 11:56  [ТС]     "И" ведет себя как "ИЛИ" #7
Taras_Z, вы не поняли меня, мне надо что бы действие в условии IF происходило, если оба условия истинны, т.е. обе клавишы удерживаются нажатыми
Taras_Z
 Аватар для Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
31.03.2012, 11:57     "И" ведет себя как "ИЛИ" #8
извини не увидел что те надо токо на 1 и 2
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
31.03.2012, 11:59  [ТС]     "И" ведет себя как "ИЛИ" #9
Nekto, простите всё и в самом деле работает, я просто нажимала по одной клавише
Taras_Z
 Аватар для 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
 Аватар для programina
1912 / 597 / 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
 Аватар для Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
31.03.2012, 12:12     "И" ведет себя как "ИЛИ" #12
не увидел
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
31.03.2012, 12:14  [ТС]     "И" ведет себя как "ИЛИ" #13
Цитата Сообщение от Taras_Z Посмотреть сообщение
не увидел
Бывает
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 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++ Дана строка, в котором есть слово "да" или слово "нет". Если в нем есть слово "нет", то удалить его
C++ #include "Sales_item.h" - ошибка "включаемый файл включает самого себя"
"Чудеса типа float" или "Куда девалась информация?" C++

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

Или воспользуйтесь поиском по форуму:
programina
 Аватар для programina
1912 / 597 / 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     "И" ведет себя как "ИЛИ"
Ответ Создать тему
Опции темы

Текущее время: 03:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru