2017-02-19 24 views
0

Я хочу сделать функцию, которая изменяет значение «y» только на каждом «пробеле», пока значение «x» увеличивается, пока не будет нажата клавиша. До сих пор я сделал программу, которая увеличивает «у» значения и «х» значения на каждом нажатии «» пробел ... но это еще не то, что я хочу ... Это моя программа:Есть ли способ изменить значение при нажатии клавиши при повышении другого значения?

#include <windows.h> 
#include <conio.h> 
#include <iostream> 

using namespace std; 

int key=getch(); 
int x,y; 

int main() 
{ 
    for(int z=1;z<200;z++){ 
     for(x,y;x<100,y<100;){ 

      if(x<100){ 
       x++; 
       system("cls"); 
       cout<<"x:"<<x<<endl; 
       cout<<"y:"<<y<<endl; 
       Sleep(100); 
      } 
      if(y<100){ 
       if(key == 32){ 
        y+=5; 
        system("cls"); 
        cout<<"x:"<<x<<endl; 
        cout<<"y:"<<y<<endl; 
        Sleep(100); 
        key=getch(); 
       } 
      } 
     } 
    } 
    cout<<"loop ended"<<endl; 
    Sleep(3000); 
    return 0; 

И я также хотите, чтобы пользователь не удержал «пробел» и сделал значение «y» только для увеличения количества ... Пожалуйста, помогите.

+2

Обнаружение взаимодействия с клавиатурой изначально зависит от ОС. Это не поддерживается стандартным C++. –

+0

Вам понадобится * изучить * API для вашей операционной системы для «Key press» и «Key Release». Некоторые операционные системы могут не иметь этой функции (например, в режиме консоли при работе с внешними терминалами). –

ответ

0

В вашем коде getch (даже до main) ждет нажатия клавиши. Попробуйте использовать функцию _kbhit() от <conio.h> для проверки того, нажата ли клавиша. Загляните в Справочник по библиотеке Runtime MSDN (где-то в пределах https://msdn.microsoft.com/en-us/library), чтобы узнать подробности API. Обратите внимание, что getch (рассмотрите использование предпочтительного имени _getch) может потребовать от вас сделать 2 вызова для некоторых ключей, чтобы вы могли правильно интерпретировать результаты.

Обратите внимание, что это специфичный для Windows (и C, а не C++). Как отмечали другие, возможно, не будет переносного стандарта C или C++ для достижения того, чего вы хотите; вам может понадобиться полагаться на определенные API платформы.