Comments 9
Выглядит как школьный проект, выполненный человеком без опыта программирования, который только-только начал учить C++ (впрочем, это скорее C, так как от C++ тут только cout
, true
и false
).
int x = 5, y = 5;
Глобальные переменные — зло.
system("stty raw");
Ваша программа каждый раз дважды дёргает шелл только для управления терминалом. Намного проще и эффективнее воспользоваться библиотекой ncurses как для обработки ввода, так и для вывода.
cout << "\e[u " << "\e[0;0H";
Аналогично, ncurses. К тому же, дальше в коде тоже ESC-последовательности прямо в код вшиты. Смешивать представление и логику — плохая идея.
Можно сделать с помощью switch'a, но я ненавижу его.
Такой себе аргумент.
KEY 'a' I x-- ; pos = 1 J
По длине и сложности чтения как case ... break
, но читабельность нулевая для человека, который читает код. Плюс надо всё время в голове держать макрос, чтоб случайно чего не сделать. Если уж делать макрос, то параметризованный, хотя и он тут не нужен.
#define TOUCH if (x == ox[i] && y == oy[i] && pos ==
Это ужасно. Во-первых, в макросе упоминаются конкретные имена переменных. Во-вторых, нужно всегда помнить, что он не используется сам по себе. (Откройте для себя макросы с параметром.)
скачав
Не следует хранить бинарники в Git-репозитории, это плохая идея. Git для исходников (которых, кстати, в репозитории нет).
И так далее. К сожалению, такой код нельзя показывать другим как пример. Я думаю, его публикация на Хабре была несколько преждевременной. Хотя, конечно, порыв изучать программирование похвален.
Рогалики — это достаточно сложные программы. Я бы предложил сперва, чтоб набраться опыта в программировании и алгоритмах, начать с чего-то более простого.
Исключения:
— он открывает действительно что-то новое (решение сложной проблемы, более продвинутая архитектура...)
— требуется похожая реализация и нет желания или времени писать свой код
Консольные игры наврятли востребованны хоть как-то, особенно решения задачек
По своему опыту, сам подобное писал, когда начинал, и не думаю, что стоит такое распространять)
Тем не менее похвально такая работа, без этого никуда
Все начинается с чего-то малого
Если интересна тема, можно посмотреть как пример
https://github.com/thebracket/rltk
Консольный рогалик на С++