01/10/2018, 10:53
Sự khác nhau giữa kbhit() và _kbhit(), getch() và _getch()?
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <windows.h>
#include <string.h>
#include <conio.h>
#define height 24
#define width 79
using namespace std;
void gotoXY(short x, short y)
{
static HANDLE h = NULL;
if(!h)
h = GetStdHandle(STD_OUTPUT_HANDLE);
COORD c = { x, y };
SetConsoleCursorPosition(h,c);
}
enum State
{
len,xuong
};
struct Chuchay
{
char s[31];
short x,y;
State tt;
};
int main()
{
Chuchay a;
a.x =0;
a.y =0;
a.tt = xuong;
strcpy(a.s,"hello world");
while (1)
{
system("cls");
gotoXY(a.x,a.y);
cout << a.s;
//xu ly cham bien
if(a.y >= height) a.tt = len;
else if(a.y <= 0) a.tt = xuong;
//xu ly nhap key
if (kbhit())
{
char key = getch();
if (key == 'W' || key == 'w') a.tt = len;
else if (key == 'S' || key == 's') a.tt = xuong;
}
//xu ly di xuong len
if (a.tt == len) a.y--;
else if (a.tt == xuong) a.y++;
Sleep(100);
}
return 0;
}
Em có một đoạn code để chạy một đoạn chữ lên và xuống khi chạm biên console, nhưng khi dùng kbhit() và getch() lại không như ý muốn. (Nhập W và S thì không có phản ứng gì cả)
Sau khi sửa lại thành _kbhit() và _getch() thì lại chạy ổn, mọi người cho em xin ý kiến về vấn đề này được không ạ ?
Em dùng ide code::blocks mới bị tình trạng trên ạ, dùng dev c++ thì lại bình thường.
Bài liên quan