Я пишу простую игру про змейку на C++. Но у меня проблема: мне нужно использовать kbhit()
и getch()
для чтения того, что вводит пользователь. Для ее использования мне нужна conio.h
, но в Linux этой библиотеки нет. Я попытался использовать это, но возникла проблема: код компилируется но я не могу использовать программу, она просто останавливается.
Итак, как я могу использовать kbhit()
и getch()
? Или есть какая-то альтернатива ему?
Мой код:
#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();
}
}
input()': game.cpp:(.text+0x1fa): undefined reference to
stdscr' game.cpp:(.text+0x202): неопределенная ссылка на `wgetch' collect2: error: ld вернул 1 статус выхода - person h4cktivist   schedule 28.04.2020