Сохранение соотношения сторон в C (ncurses) - PullRequest
0 голосов
/ 03 июня 2018

Мне нужно сделать игру, используя ncurses в C. Игра должна быть 80 (char) x24 (char).Мне нужна строка состояния внизу (5 символов), поэтому я жестко закодировал ее.

Я сделал этот цикл, чтобы все было централизовано, но я не могу понять, как сохранить соотношение сторон, когда экран терминалаresized.

Есть ли способ сделать это с помощью ncurses?

Мне нужно, чтобы экран всегда оставался как минимум 80x24, возможно, всегда в полноэкранном режиме, мне не нужно изменять размер экрана.

Вот цикл, чтобы держать вещи на своих местах (строка состояния плохо прописана, соотношение сторон - беспорядок)

/* LOOP TO CENTRALIZE FOR ANY RESIZING */
  while (1){
    getmaxyx(stdscr, yMax, xMax);
    clear();
    mvprintw(yMax/24, xMax/80, "BEG");
    mvprintw(yMax/2, xMax/2, "CENTER %d %d", yMax, xMax);

    attron(COLOR_PAIR(1)); /* bottom status bar (5 lines) */
    int i, j;
    for ( j=(yMax-5) ; j <= yMax ; j++){

      for ( i=0 ; i <= xMax ; i++ ){
        mvprintw(j, i, " ");
      }

    }
    attroff(COLOR_PAIR(1));
    refresh();
  }

1 Ответ

0 голосов
/ 03 июня 2018

Если ваша программа не читает входные данные, например, вызовы getch, ncurses будет продолжать использовать исходный размер экрана (и выглядит растерянным).Когда вы вызываете getch после того, как ncurses получает SIGWINCH, он возвращает KEY_RESIZE, и в этот момент ncurses обновляет свой размер экрана.

...