2017-12-06 12 views
0

저는 게임에서 돈을 증가시키기 위해 키보드 스트로크를 얻기 위해 _getch를 사용하려고합니다. 돈을 더 빨리 증분하려면 10 초 동안 교대를 유지하고 100의 통제는 그 일을하는 가장 좋은 방법 일 것입니다. 만약 내가 교대조를 확인한다면 그것은 충분히 쉽다. 그러나 내가 교대조를 확인하고 싶다면 나중에 통제가 작동하지 않을 것이다. 100의에 대한 제어를 위해 작동하지 않을 경우 내가 다른 추가하면Shift 키를 누른 상태에서 각 입력에 대해 컨트롤을 누른 상태를 확인하는 방법이 있습니까?

는 1 또는 10로 증가하는 검사를 예를 들어 나는이

key = _getch(); 
if (key == 224) 
{ 
    key = _getch(); 
    if (key == 75) // left arrow 
    { 
     if (GetAsyncKeyState(VK_SHIFT) 
      for (int i = 0; i < 10; i++) // go left 10 times 
        left(); 
     else 
      left(); 
    } 
} 

같은 것을 할 것입니다. 대부분의 경우 GetAsyncKeyState 기능을 다시 실행하면 키 상태를 제대로 읽지 못하기 때문일 수 있습니다.

else if (GetAsyncKeyState(VK_CONTROL) 
    for (int i = 0; i < 100; i++) // go left 100 times 
     left(); 

가능한 모든 해결 방법은 있습니까? 감사!

+0

전체 사용 사례를 알려주면 여기 프로그래머가 GetAsyncKeyState()를 사용하는 것보다 더 나은 방법으로 도움을 줄 수 있습니다. –

+0

사람들이 내가하는 일을 오해하고있는 것처럼 보입니다. 프로그램에서 수정 자없이 1 씩 카운터를 증가시키고 시프트가 유지되면 10을, 컨트롤이 유지되면 100 씩 증가시킵니다. 키보드를 사용하지 않고 if, else if를 수행하고 else, shift 및 control을 점검합니다. 말이 돼? – Alex

답변

0

이 밝혀 제어와 같은 키의

시도 조합은 "세척"에서 콘솔을 방지 할 수 있습니다. 그래서, 오류 자체를 일으키는 컨트롤 자체에 문제가있었습니다. 10 초 동안 개최되는 while-shift와 100 초 동안 개최되는 while-tab을 사용하기로 결정했습니다. alt를 사용하는 방법이 있다면, 나는 거기에 있다고 생각하지 않는다. 나는 이것을 사용할 것이다. 이것은 바보 같고 문제를 유발하는 cmd 프롬프트와 상호 작용하는 키 바인드라는 것을 깨닫기 위해 3 시간이 걸리는 전형적인 경우입니다.

0

"if (GetAsyncKeyState (VK_SHIFT) & & GetAsyncKeyState (VK_CONTROL))"은 어떨까요? 하나의 GAKS 통화를 사용하여 여러 개의 키를 확인할 수는 없습니다.

+0

내 질문에 약간 이상한 말을하면 미안 해요. 나는 shift 키가 하나씩 10 개씩 증가하는 것을 확인하고, 그 체크가 실패하면 100을 증가시킬 제어를 위해 하나를 수행하고, 마지막으로 그렇지 않으면 1의 값만 증가합니다. – Alex

0

다음 코드를 사용하여 여러 개의 키를 함께 사용할 수 있는지 확인하십시오. 하드웨어가 여러 개의 키를 동시에 누르는 것을 인식하는 데는 한계가 있습니다.

주요 호출 함수

while(!keydown(VK_LCONTROL)) 
{ 
    if(keydown(VK_LCONTROL) && keydown(VK_NUMPAD1) && keydown(VK_UP)) 
    { 
     cout << "combo pressed!" << endl; 
    } 
    Sleep(10); 
} 

함수를 keyDown,

BOOL keydown(int key) 
{ 
    return (GetAsyncKeyState(key) & 0x8000) != 0; 
} 

(GetAsyncKeyState & 0x8000으로) (키)! = 0; 우리는 15 번째 비트에만 관심이 있으므로이 것을 확인하십시오. 자세한 내용은 해당 비트의 정보를 확인하십시오. 컨트롤 + numberpad1 + 위쪽 1의 증가에 대한 제어 + numberpad2 + 위쪽 (10)의 증가에 대한 등

+0

제 질문에 약간 이상한 말을해서 유감입니다. 한 번에 여러 입력을 검사하는 프로그램을 원하지 않았습니다. 나는 단지 두 개의 분리 된 shift 키를위한 것이 하나씩 10을 증가 시키는데 하나씩 유지한다면 그 check는 실패 할 것입니다. 그리고 그 check가 실패하면 100으로 증가 할 것입니다. 그리고 마지막으로 else가 단지 1만큼 증가 할 것입니다. – Alex