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

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

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

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

31.03.2012, 11:39. Просмотров 533. Ответов 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++ Дан текст, хранящийся в текстовом файле f, каждый символ которого может быть малой буквой, цифрой или одним из знаков "+", "-", "*".
Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день","Суббота" или "Воскресенье" C++
Определить, какая из точек "В" или "С" расположены ближе к точке "А". C++
C++ #include "Sales_item.h" - ошибка "включаемый файл включает самого себя"
C++ Как отключить автоматическое добавление "_" "@" "number" к имени экстернального метода?
Наследование: "БГТУ", "Факультет", "Группа", "Подгруппа" 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
Каратель
Эксперт С++
6553 / 3973 / 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     "И" ведет себя как "ИЛИ"
Еще ссылки по теме:
Написать функцию поиска человека по полю "фамилия" в массиве структур "Note" ("Персональная информация") C++
C++ С++ консольное приложение win32, матерится на первое "pow" после "if", а на "system" говорит что неопределён.
C++ В массиве структур студент с полями "ИМЯ" "ВОЗРАСТ" "УСПЕВАЕМОСТЬ" выполнить сортировку по успеваемости по возрастанию
C++ Создать классы "Computer", "Software", "User" и реализовать взаимодействие объектов этих типов между собой
C++ Необработанное исключение в "0x013f2b22" в "123.exe": 0xC0000005: Нарушение прав доступа при записи "0xfdfdfdfd"

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

Или воспользуйтесь поиском по форуму:
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