Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 5 của 5
  1. #1

    nhờ các bạn chỉ giúp mình đoạn code C++, chỗ bắt sự kiện bàn phím được ấn xuống

    mình viết 1 chương trình, khi ấn phím Left thì sẽ hiện ra số 0, ấn phím Right thì hiện ra số 1, nhưng sao khi ấn mà nó viết luôn 1 tràng dài số, mình muốn ấn 1 nút thì nó chỉ in 1 lần thôi thì phải làm sao?

    Mã:
    include<conio.h>
    #include<stdio.h>
    #include<iostream>
    using namespace std;
    #include<Windows.h>
    
    void main()
    {
    	int a;
    	while (true)
    	{
    		if (GetKeyState(VK_LEFT))
    		{
    			cout << "0";
    		}
    		if (GetKeyState(VK_RIGHT))
    		{
    			cout << "1";
    		}
    		Sleep(100);
    	}
    }

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    ai giúp mình được không?

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    sửa cái GetKeyState thành GetAsyncKeyState

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    muốn bấm trái phải để di chuyển à?

    cách này là chữa cháy: nhấn giữ phím trái 1 lúc (tầm 300ms = 0.3 giây) thì nó mới in ra liên tục. Hằng số SENSITIVITY có thể là biến cũng được, ko nhất thiết là hằng số. Ta đặt tên hơi kì đáng lẽ phải là wait intervals mới đúng. (Phím phải thì làm tương tự)


    Mã:
    #include <iostream>#include <windows.h> const double FPS = 60.0;const int MS_PER_FRAME = 1000 / FPS;const int SENSITIVITY = 300 / MS_PER_FRAME; int main(){    bool leftPressing  = false;    int leftWait = 0;     while (true)    {        if (GetAsyncKeyState(VK_RETURN)) break; //enter để kết thúc chương trình         leftPressing = GetAsyncKeyState(VK_LEFT);        if (!leftPressing)            leftWait = SENSITIVITY;        else {            if (leftWait == SENSITIVITY || !leftWait)                std::cout << "0";            if (leftWait)                --leftWait;        }          Sleep(MS_PER_FRAME);    }}
    cái Sleep(MS_PER_FRAME); thật ra cũng chưa chính xác lắm, nhưng tạm thời thế này đã =)

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    wao, hay quá, hàm đó đúng là hàm mình cần, nhưng có 1 chút vẫn chưa vừa ý là nó sẽ in ra khi có 1 phím đang được giữ. nếu mình để sleep time =0 thì khi mình ấn xuống 1 cái là 1 loạt số hiện ra.
    có cách nào để chỉ 1 số hiện ra sau 1 lần ấn ko?

    nhưng dù sao cũng cảm ơn các bạn nhiều, hàm này cug khá ổn rồi.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •