Не могу понять. Пытаюсь реализовать игровую змейку в терминале. Приведенный ниже код отлично работает в интегрированном терминале Visual Studio Code, но возвращает Error opening terminal: unknown.
, когда я запускаю ту же программу в терминале ОС Ma c. Не уверен, почему я получаю разные результаты на этих двух терминалах. Когда я проверяю переменную TERM с помощью printenv
в обоих терминалах, они говорят: TERM=xterm-256color
#include <stdio.h>
#include <ncurses.h>
#include <iostream>
#include <unistd.h>
enum direction { UP, DOWN, LEFT, RIGHT };
int main()
{
int ch;
int ** field;
direction snake_direction;
WINDOW *snake_window;
initscr();
clear();
noecho();
cbreak();
snake_window = newwin(0, 0, 0, 0);
keypad(snake_window, TRUE);
nodelay(snake_window, TRUE);
int x = 5;
int y = 5;
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 20; j++)
{
if (i == x && j == y)
{
mvwaddch(snake_window, i, j, 64);
}
else if ( i == 0 || i == 19)
{
mvwaddch(snake_window, i, j, 88);
}
else if (j == 0 || j == 19)
{
mvwaddch(snake_window, i, j, 88);
}
else
{
mvwaddch(snake_window, i, j, 32);
}
}
}
while (ch != 113)
{
usleep(1 * 1000000);
ch = wgetch(snake_window);
switch(ch)
{
case(KEY_UP):
snake_direction = UP;
break;
case(KEY_DOWN):
snake_direction = DOWN;
break;
case(KEY_LEFT):
snake_direction = LEFT;
break;
case(KEY_RIGHT):
snake_direction = RIGHT;
break;
case(ERR):
break;
}
if (snake_direction == UP) { x--; }
else if (snake_direction == DOWN) { x++; }
else if (snake_direction == LEFT) { y--; }
else if (snake_direction == RIGHT) { y++; }
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 20; j++)
{
if (i == x && j == y)
{
mvwaddch(snake_window, i, j, 64);
}
else if ( i == 0 || i == 19)
{
mvwaddch(snake_window, i, j, 88);
}
else if (j == 0 || j == 19)
{
mvwaddch(snake_window, i, j, 88);
}
else
{
mvwaddch(snake_window, i, j, 32);
}
}
}
wrefresh(snake_window);
}
endwin();
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(Snake)
find_package(Curses REQUIRED)
include_directories(${CURSES_INCLUDE_DIR})
add_executable(snake src/main.cpp)
target_link_libraries(snake ${CURSES_LIBRARIES})