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
0