2012-02-17 35 views
5

Tôi hiện đang viết một trò chơi bằng C++ trong cửa sổ. Tất cả mọi thứ đang diễn ra rất tốt cho đến nay, nhưng đơn của tôi trông như thế này:Làm thế nào để có được đầu vào bàn phím trực tiếp trong C + +?

1.Go Bắc

2.Go Nam

3.Go Đông

4.Go Bắc

5.Inventory

6.Exit

Chèn lựa chọn -

Nó hoạt động tốt, nhưng tôi đã sử dụng loại điều đó trong một thời gian và thay vào đó bạn có thể điều hướng bằng các mũi tên lên và xuống. Tôi sẽ đi đâu để tới đó?

Kính trọng trước

+0

Không chắc chắn nếu mũi tên được xử lý nền tảng trên cùng. Vậy, nền tảng nào? Ngoài ra, bạn đã thử những gì? –

+0

Câu hỏi tương tự gần đây: http://stackoverflow.com/questions/9324806/how-to-read-standard-input-continuously – BoBTFish

Trả lời

2

Trong Windows, bạn có thể sử dụng chức năng chung kbhit(). Hàm này trả về true/false tùy thuộc vào việc có một lần nhấn bàn phím hay không. Sau đó, bạn có thể sử dụng hàm getch() để đọc những gì có trên bộ đệm.

while(!kbhit()); // wait for input 
c=getch();  // read input 

Bạn cũng có thể xem mã quét. conio.h chứa các chữ ký cần thiết.

4

Bạn đã cân nhắc sử dụng thư viện giao diện người dùng bảng điều khiển chẳng hạn như ncurses?

0

Bạn có thể sử dụng GetAsyncKeyState. Nó cho phép bạn nhận được đầu vào bàn phím trực tiếp từ mũi tên, nút chức năng (F0, F1 và vv) và các nút khác.

Dưới đây là một thực hiện ví dụ:

// Needed for these functions 
#define _WIN32_WINNT 0x0500 
#include "windows.h" 
#include "winuser.h" 
#include "wincon.h" 

int getkey() { 

    while(true) { 
     // This checks if the window is focused 
     if(GetForegroundWindow() != GetConsoleWindow()) 
      continue; 

     for (int i = 1; i < 255; ++i) { 
      // The bitwise and selects the function behavior (look at doc) 
      if(GetAsyncKeyState(i) & 0x07) 
       return i; 

     } 

     Sleep(250); 
    } 
} 
Các vấn đề liên quan