Терминальный интервал между строками и столбцами
Я пытаюсь создать игру snake terminal с C. я использую ncurses
, чтобы получить ввод от клавиш со стрелками.
Я рисую простую границу с белыми пробелами, чтобы получить "карту" для Змеи.
void draw(){
for(int i = 0; i < cols; i++){
for(int j = 0; j < rows; j++){
if(i == 0 || i == cols-1 || j == 0 || j == rows-1)
mvaddch(i,j,'#');
else
mvaddch(i,j,' ');
}
}
refresh();
}
Проблема у меня в том, что расстояние между столбцами и строками разное.
Строки и cols инициализируются значением 20. Поэтому я решил, что это должен быть квадрат. Скорость перемещения также меняется, если я двигаюсь вверх / вниз или вправо/влево.
Эта проблема возникает в терминале.приложение и iterm2. Есть ли в любом случае, чтобы изменить интервал, который он соответствует?






Ответы - Терминальный интервал между строками и столбцами / Terminal spacing between rows and column

03.02.2020 10:36:44
Если вы используете одно и то же число вертикально и горизонтально в основном неквадратных "плиток", то результат будет неквадратным. То же самое относится и к скорости, если вы двигаетесь одинаковое количество шагов в секунду по горизонтали и вертикали, но длина шага отличается, потому что это ширина и высота неквадратной плитки, то воспринимаемая скорость будет другой.
Обратите внимание, что ширина двух символов по горизонтали гораздо ближе к высоте одного символа по вертикали, чем ширина одного символа.
Таким образом, вместо того, чтобы, например, представлять эту ситуацию (квадрат со змеей) с одинаковым количеством символов по горизонтали и вертикали
##########
# #
# ooO #
# o #
# o #
# o #
# o #
# #
# #
##########
Попробуйте сделать это в той же ситуации, то есть вставить горизонтальный пробел после каждого непустого символа, что приведет к удвоению числа символов по горизонтали и вертикали. Их гораздо большая высота, чем ширина, и тот факт, что верхняя половина большинства печатаемых символов в основном пуста, приводит к ровному, гораздо более квадратному впечатлению в целом.
# # # # # # # # # #
# #
# o o O #
# o #
# o #
# o #
# o #
# #
# #
# # # # # # # # # #
Таким образом, вы получаете гораздо более квадратное впечатление, а также некоторую согласованную скорость по горизонтали и вертикали.
Если вам не нравятся пробелы, которые неизбежны по вертикали и преднамеренны по горизонтали, то нормальная терминальная среда не подходит для вашей игры, и вам нужно перейти к графической среде, которая позволяет вам пиксельно точно контролировать результат.
