0

我正在用 C++ 编写一个简单的蛇游戏。但我有一个问题:我需要使用kbhit()getch()读取用户输入的内容。我需要使用它,conio.h但 Linux 上没有这个库。我试过用这个,但有一个问题:代码正在编译,但我不能使用程序,它只是停止。

那么我该如何使用kbhit()andgetch()呢?或者有什么替代方案吗?

我的代码:

#include <iostream>
#include <conio.h>
using namespace std;

bool GameOver;
const int height = 20;
const int width = 20;
int x, y, fruit_x, fruit_y, score;
enum eDirection { STOP, RIGHT, LEFT, UP, DOWN };
eDirection dir;

void setup() {
    GameOver = false;
    dir = STOP;
    x = width / 2 - 1;
    y = height / 2 - 1;
    fruit_x = rand() % width;
    fruit_y = rand() % height;
    score = 0;
}

void draw() {
    system("clear");

    for (int i = 0; i < width; i++)
    {
        cout << "#";
    }
    cout << endl;

    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < width; j++)
        {
            if (j == 0 || j == width - 1)
        {
            cout << "#";
        }
        if (i == y && j == x)
        {
            cout << "0";
        }
        else if (i == fruit_y && j == fruit_x)
        {
            cout << "F";
        }
        else
        {
            cout << " ";
        }
    }
    cout << endl;
    }

    for (int i = 0; i < width; i++)
    {
        cout << "#";
    }
    cout << endl;
}

void input() {
    if (_kbhit)
    {
        switch(getch())
    {
        case 'a':
            dir = LEFT;
            break;
        case 'd':
            dir = RIGHT;
            break;
        case 'w':
            dir = UP;
            break;
        case 's':
            dir = DOWN;
            break;
        case 'x':
            GameOver = true;
            break;
        }
    }
}

void logic() {
    switch(dir)
    {
    case LEFT:
        x--;
        break;
    case RIGHT:
        x++;
        break;
    case UP:
        y--;
        break;
    case DOWN:
        y++;
        break;
    }
}


int main() {
    setup();
    while(!GameOver)
    {
        draw();
        input();
        logic();
    }

}
4

1 回答 1

1

正如zoelabbb在此链接中所说,

第 1 步:打开终端 sudo apt-get update

sudo apt-get upgrade
sudo apt-get install git
git clone https://github.com/zoelabbb/conio.h.git
cd conio.h

第2步 :

sudo cp conio.h /usr/include/

(步骤 2)

在 GUI 中,使用 open-as-administrator包:

Copy file conio.h --> !! copy file not folder !!
Go to /usr/include/
Right click on folder /usr/include/
Choose Open as Administrator
Paste file conio.h

最后在第 1 步第 2 步之后,您可以#include <conio.h>在代码中使用。

于 2020-10-04T20:17:35.763 回答