Как бы я сделал окно вокруг экрана, используя Ncurses

Я делаю простую программу для перемещения ящика на открытой местности. Теперь, когда все готово, я бы хотел сделать рамку вокруг экрана (не как окно Ncurses, а просто для отображения). Я просто не знаю, как это сделать. Я искал Google, а также ТАК для решения этой проблемы, но я не могу найти его. Кто-нибудь знает, как сделать такую ​​коробку вокруг экрана.

Вот иди

Столкновение уже есть, мне просто нужно сделать вокруг него коробку. Я думал об использовании символов, таких как обычный бокс, в Ncurses, но это может быть невозможно. Можно ли сделать бокс в блоке?

Здесь у меня есть пример коробки, которую я сделал с помощью Ncurses (хотя мое форматирование отстой, в реальной коробке нет точек)

+--------+
|........|
+--------+

Этот код является кодом для движения и также вычисляет столкновение с внешней частью поля (так, где должен быть ящик):

while((ch = getch()) != KEY_F(1))
{   switch(ch)
    {   case KEY_LEFT:
        if(win.startx>1){
            create_box(&win, FALSE);
            --win.startx;
            create_box(&win, TRUE);
        }
            break;
        case KEY_RIGHT:
        if(win.startx<122){
            create_box(&win, FALSE);
            ++win.startx;
            create_box(&win, TRUE);
        }
            break;
        case KEY_UP:
        if(win.starty>1){
            create_box(&win, FALSE);
            --win.starty;
            create_box(&win, TRUE);
        }
            break;
        case KEY_DOWN:
        if(win.starty<44){
            create_box(&win, FALSE);
            ++win.starty;
            create_box(&win, TRUE);
        }
            break;  
    }
}
endwin();
return 0;

Как вы можете видеть, большой блок находится в первой строке x и y (таким образом, первый столбец в терминале и первая строка в терминале), а также в строке № 44 и столбце № 122 (один самый нижний и самый правая строка и столбец в терминале). Столкновение уже существует. Если вы хотите получить полный код, вы можете нажать на эту ссылку, чтобы вставить и посмотреть, как он работает. (не забудьте скомпилировать с -lncurses после команды компиляции)

1 ответ

Решение

Посмотрите на код, он тут же. Функция даже называется create_box,

Подсказка: звонок mvaddch принимает 3 аргумента: позиция y, позиция x и символ, который вы хотите поместить в эту позицию. p_win->border.XX константы, каждый из которых определяет символ границы, как tl для верхнего левого.

Другие вопросы по тегам