Hàm Kbhit() – Lệnh kiểm tra có sự kiện nhấn phím trong C/C++

Làm thế nào để phát hiện được khi nào thì có phím nhấn từ bàn phím trong lập trình C/C++, vậy bài viết này hãy cùng TUI CÓ CÁCH tìm hiểu nhé!

Hàm Kbhit()

Phát hiện có sự kiện phím nhấn trong C/C++ ta sử dụng hàm kbhit() trong thư viện conio.h.

Như tiêu đề đã đề cập là hàm phát hiện sự kiện phím nhấn thì tất nhiên nhiệm vụ của hàm này sẽ là phát hiện khi nào thì có sự kiện người dùng nhấn phím.

Nếu hiểu đúng bản chất thì hàm này là hàm kiểm tra xem bộ nhớ đệm nếu bộ nhớ đệm còn lưu chữ ký tự thì hàm trả về true, và ngược lại nếu bộ nhớ đệm là rỗng thì sẽ trả về false.

Như vậy khi ta sử dụng kết hợp với hàm getch() trong bài viết trước thì chúng ta hoàn toàn có thể biến lệnh này thành một lệnh kiểm tra sự kiện nhấn phím.

Mình sẽ có code mẫu ví dụ minh họa như sau:

#include <stdio.h>
#include <conio.h>
#include <Windows.h> //Khai báo để dùng hàm Sleep
int main()
{
	int i = 0;
	while(true){
		if(kbhit()){ //Hàm kbhit kiểm tra bộ nhớ đệm

			getch();//Hàm lấy ký tự từ bộ nhớ đệm

           /* =>2 hàm này khi kết hợp với nhau hàm kbhit sẽ kiểm tra bộ nhớ đệm
 nếu còn ký tự hàm getch sẽ lấy nó ra lúc này nó sẽ trở thành sự kiện phát
 hiện có phím bấm */

			printf("\nPHAT HIEN NHAN PHIM\n");
			Sleep(1000);  //Hàm tạm dừng trong 1000ms
		}
		printf("%d ", i++);
		Sleep(200); //Hàm tạm dừng trong 200ms
	}
}

Chạy thử chương trình trên, nó sẽ in ra dãy số liên tục đến khi nào mà bạn nhấn 1 phấm bấm bất kì màn hình sẽ hiện lên dòng chữ là “PHAT HIEN NHAN PHIM” sau đó lại tiếp tục in dãy số.

Hàm Kbhit() - Lệnh kiểm tra có sự kiện nhấn phím trong C/C++

Và nếu bạn muốn biết ký tự vừa nhấn là gì, vậy ta chỉ cần gắn một biến vào hàm lấy ký tự(hàm getch), mình sửa lại một chút code như sau:

#include <stdio.h>
#include <conio.h>
#include <Windows.h>
int main()
{
	int i = 0;
	while(true){
		if(kbhit()){
			char c = getch(); //Lấy ký tự từ bộ nhớ đệm và gắn vào biến c
			printf("\nBAN vua bam phim: %c\n", c); //in biến c ra màn hình
			Sleep(1000);
		}
		printf("%d ", i++);
		Sleep(200);
	}
}  

Trong bài viết tiếp theo mình sẽ hướng dẫn tạo hiệu ứng chuyển động và điều khiển hướng đi của chuyển động dựa vào bài viết này kết hợp với bài viết Viết hàm thay đổi vị trí dấu nhái trong màn hình console C/C++. Tiếp theo dõi nhé!

Cảm ơn bạn đã đọc bài viết, chúc bạn học tốt! sớm trở thành một Pro Dev.

[Xem tất cả bài viết chủ đề C/C++ tại đây]

0

0

Phiếu bình chọn

Xếp hạng bài viết