Pull to refresh

Comments 9

UFO just landed and posted this here

Выглядит как школьный проект, выполненный человеком без опыта программирования, который только-только начал учить 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 для исходников (которых, кстати, в репозитории нет).


И так далее. К сожалению, такой код нельзя показывать другим как пример. Я думаю, его публикация на Хабре была несколько преждевременной. Хотя, конечно, порыв изучать программирование похвален.


Рогалики — это достаточно сложные программы. Я бы предложил сперва, чтоб набраться опыта в программировании и алгоритмах, начать с чего-то более простого.

Я не совсем программист, просто любитель. Опубликовал статью т.к считаю, что это может быть полезно кому-нибудь.
Чужой хардкод никому не интересенполезен
Исключения:
— он открывает действительно что-то новое (решение сложной проблемы, более продвинутая архитектура...)
— требуется похожая реализация и нет желания или времени писать свой код
Консольные игры наврятли востребованны хоть как-то, особенно решения задачек
По своему опыту, сам подобное писал, когда начинал, и не думаю, что стоит такое распространять)
Тем не менее похвально такая работа, без этого никуда
Все начинается с чего-то малого
И вам спасибо. Но я всё-таки показал некоторые полезности, которые тщетно пытался найти в интернете. Например генерация.
Вы уверены что такой код, без комментариев кому нибудь поможет?
px[i] = rand() % 115 + 2;
py[i] = rand() % 34 + 2;
pl[i] = rand() % 5 + 5;
ph[i] = rand() % 5 +  5;

Два совета от меня — давайте переменным более понятные имена и используйте классы или структуры, а не параллельные массивы.
Не сказать что дифайны «I» и «J» сделали мой вечер это значит не сказать ничего!
Sign up to leave a comment.

Articles