Lệnh bắt phím trong lập trình c

** mọi người cho e hỏi,nếu trong c e muốn bấm nút esc để kết thúc thì e phải làm thế nào ạ?**

Theo mình thì mình sẽ sử dụng getch() để nhận mã ASCII của bàn phím. Mã ASCII của ESC là 27 :

char k;
do{
//your code here
cout<<"nhan esc de ket thuc";
k=getch();
}while(k!=27);
2 Likes
do
{
.........
key=getch();
}while(key!=27);
//27 là mã ASCII của ESC nhé 
nhưng nó sẽ hơi bất tiện trong trường hợp ví dụ bạn nhập vào gì đó thì sau khi nhập cần ấn 1 phím như enter để vòng lặp được tiếp tục nên mình khuyên nên cho điều kiện này nếu gặp trường hợp đó
if(bien_vua_nhap==27)//truong hop nay minh xét biết kiểu char nhé!
{
break;
}
2 Likes

Thế này nha.

Cách bắt key từ bàn phím để biết được là người dùng đang nhấn vào phím gì:

Có 2 cách:

Cách 1: Dùng hàm kbhit có trong thư viện #include <conio.h>

kbhit(void): Kiểm tra xem người dùng có nhấn vào 1 phím bất kỳ nào trên bàn phím hay không ?

=> Lấy giá trị của phím đó ra nhờ vào getch();

vd:

if(kbhit())
{
	char c = getch();
	printf("\nNguoi dung dang nhan vao phim %c", c);
}

Cách 2: Dùng hàm GetAsyncKeyState(<Key cần nhập>) có trong thư viện: #include <Windows.h>

vd:

GetAsyncKeyState(VK_UP); // Đang nhấn vào phím mũi tên đi lên.
GetAsyncKeyState(VK_DOWN); // Đang nhấn vào phím mũi tên đi xuống.
GetAsyncKeyState(VK_LEFT); // Đang nhấn vào phím mũi tên qua trái.
GetAsyncKeyState(VK_RIGHT); // Đang nhấn vào phím mũi tên qua phải.

Mã các phím: https://voer.edu.vn/m/ban-phim-trong-lap-trinh-c-tren-windows/9d383b57

2 Likes

A post was split to a new topic: Thắc mắc lệnh GetAsyncKeyState trong C

2 Likes

Ủa, mk thêm điều kiện vậy sao ấn esc sao nó ko in ra vậy bạn

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?