Терминальный интервал между строками и столбцами

Терминальный интервал между строками и столбцами

03.02.2020 10:09:40 Просмотров 3 Источник

Я пытаюсь создать игру 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. Есть ли в любом случае, чтобы изменить интервал, который он соответствует?

enter image description here

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/60045657/terminal-spacing-between-rows-and-column#comment106194733_60045657
Выведите два "# # " по горизонтали вместо одного. Это улучшает дистанцию. Если этого недостаточно, то терминал не является вашим окружением.
https://stackoverflow.com/questions/60045657/terminal-spacing-between-rows-and-column#comment106194986_60045657
хорошо, спасибо. это своего рода облом, потому что это не достаточно хорошо для меня. Скорость перемещения также меняется, если я двигаюсь вверх / вниз или вправо/влево.
https://stackoverflow.com/questions/60045657/terminal-spacing-between-rows-and-column#comment106195071_60045657
Скорость будет выровнена с расстоянием. Просто также используйте два символа горизонтально для вашей змеи.
https://stackoverflow.com/questions/60045657/terminal-spacing-between-rows-and-column#comment106195266_60045657
Или, может быть, в обоих случаях горизонтально один символ и Пробел дает более гладкое впечатление.
https://stackoverflow.com/questions/60045657/terminal-spacing-between-rows-and-column#comment106239508_60045657
предложите (используя проклятия) открыть окно пользователя. Затем перейдите по нему через пиксели, а не символы.
https://stackoverflow.com/questions/60045657/terminal-spacing-between-rows-and-column#comment106334048_60045657
@user3629249 звучит интересно и может быть тем, что хочет OP, без полного усилия графического подхода. Вы бы хотели, чтобы добавить ответ?

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

Является ответом!
Yunnosch

03.02.2020 10:36:44

Если вы используете одно и то же число вертикально и горизонтально в основном неквадратных "плиток", то результат будет неквадратным. То же самое относится и к скорости, если вы двигаетесь одинаковое количество шагов в секунду по горизонтали и вертикали, но длина шага отличается, потому что это ширина и высота неквадратной плитки, то воспринимаемая скорость будет другой.

Обратите внимание, что ширина двух символов по горизонтали гораздо ближе к высоте одного символа по вертикали, чем ширина одного символа.

Таким образом, вместо того, чтобы, например, представлять эту ситуацию (квадрат со змеей) с одинаковым количеством символов по горизонтали и вертикали

##########
#        #
#  ooO   #
#  o     #
#  o     #
#  o     #
#  o     #
#        #
#        #
##########

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

# # # # # # # # # #
#                 #
#     o o O       #
#     o           #
#     o           #
#     o           #
#     o           #
#                 #
#                 #
# # # # # # # # # #

Таким образом, вы получаете гораздо более квадратное впечатление, а также некоторую согласованную скорость по горизонтали и вертикали.

Если вам не нравятся пробелы, которые неизбежны по вертикали и преднамеренны по горизонтали, то нормальная терминальная среда не подходит для вашей игры, и вам нужно перейти к графической среде, которая позволяет вам пиксельно точно контролировать результат.

https://stackoverflow.com/questions/60045657/terminal-spacing-between-rows-and-column/60046028#comment106206064_60046028
Я думаю, что последняя часть вашего ответа верна. Похоже, что терминал-не самая подходящая среда для меня. Я думаю, что буду переключаться на графическую среду.
Закрыть X