ncurses новичок - начиная с GNU C - PullRequest
       13

ncurses новичок - начиная с GNU C

7 голосов
/ 27 октября 2009

Более простая жизнь

Я возвращаюсь в C, чтобы помочь оживить мою долю программирования. В последний раз, когда я учился программировать, я учился в колледже и работал с Turbo C на MSDOS. Простые ASCII-анимации стали навязчивой идеей, когда я обнаружил, что Borland дружественный <conio.h> один включает прочь Было очень весело с функциями gotoxy и textcolor, и вскоре я начал писать такие игры, как змея и понг. Это был очень полезный способ выучить язык, и каждая игра подталкивала меня дальше, когда я становился все более амбициозным.

Ncurses

Я бы хотел начать с подобных проектов типа игры. Сегодня, однако, я на Mac с пыльной машиной Linux в углу. Я мог бы запустить свой любимый Turbo C в dosbox (достаточно вездесущая платформа), но я хочу изучить C так, чтобы я мог разрабатывать то, что естественно компилируется на любой платформе BSD или unix. Мне сказали, что ncurses - это путь вперед, но сайт GNU в значительной степени зашёл мне в голову. В тот день у меня была дружеская функция textmode, и я был print выражением от понга. ncurses кажется намного более мощным.

Свист

Там должно быть много людей, которые были в этой ситуации. Я ищу соответствующий учебник или ресурс, который поможет мне разобраться, что такое ncurses и как с ним работать. Любые советы или похожие истории также будут представлять большой интерес!

Ответы [ 4 ]

5 голосов
/ 28 октября 2009

Да, ncurses - это библиотека, которую вы ищете. Например, вот (n) проклятия, эквивалентные gotoxy:

ИМЯ

move, wmove - перемещать курсор окна проклятия

1010 * СИНТАКСИС *

   #include <curses.h>

   int move(int y, int x);
   int wmove(WINDOW *win, int y, int x);

ОПИСАНИЕ

Эти процедуры перемещают курсор, связанный с окном, в строка у и столбец х. Эта процедура не перемещает физический курсор терминала, пока не будет вызвано обновление. Указанная позиция относительно верхнего левого угла окна, который равен (0,0).

Добавление:

В вашем комментарии вы спрашиваете о окнах curses - я не думаю, что смогу действительно улучшить то, что говорится в справочной странице ncurses, поэтому я просто процитирую это:

Разрешения библиотеки ncurses манипулирование структурами данных, называются окнами, о которых можно подумать из двухмерных массивов символы, представляющие все или часть ЭЛТ-экран. Окно по умолчанию называется stdscr, который является размером экран терминала, поставляется. другие может быть создан с помощью Newwin.

Обратите внимание, что проклятия не справляются перекрывающиеся окна, это делается панель (3CURSES) библиотека. это означает, что вы можете использовать stdscr или разделить экран на плиточный окна и не используя stdscr вообще. Смешивание двух приведет к непредсказуемый и нежелательный, эффекты.

Окна называются переменными объявлено как ОКНО *. Эти данные структуры манипулируют с процедуры, описанные здесь и в других местах в справочных страницах ncurses. среди те, самые основные процедуры переместить и добавить. Более общий версии этих процедур включается в имена, начинающиеся с w, позволяя пользователю указать окно. Процедуры не начинаются с W влияет на stdscr.

После использования подпрограмм для манипулирования окно, обновить называется, говорит проклятия, чтобы сделать экран ЭЛТ пользователя выглядеть как stdscr. Персонажи в окно на самом деле имеет тип chtype, (данные персонажа и атрибута), чтобы другая информация о персонаже может также храниться с каждым характер.

Итак, в итоге, вы можете безопасно игнорировать все окно и просто использовать окно stdscr.

2 голосов
/ 27 октября 2009

Что ж, в UNIX-подобных системах, таких как BSD и Linux, вы определенно хотите использовать ncurses, поскольку эмуляторы терминала делают вашу жизнь действительно несчастной, если вы этого не сделаете.

Вы, вероятно, должны написать себе простую оболочку, содержащую необходимую вам функциональность, и реализовывать ее по-разному для разных ОС. В Windows есть несколько консольных функций , которые можно использовать, чтобы часть не была слишком сложной.

1 голос
/ 16 ноября 2009

Существует библиотека, предоставляющая Turbo C, как консольный ввод / вывод для Linux: TurboC Также связано: CONIO для DevC ++

1 голос
/ 31 октября 2009

Вот небольшая программа, с которой можно начать.

#include <curses.h>

int main(void) {
  int ch;

  /* The whole program needs error-checking */
  initscr();
  noecho();
  cbreak();
  printw("Hit Ctrl+C to exit ...\n\n");
  for (;;) {
    ch = getch();
    printw("Value of char: %d (%02x)\n", ch, ch);
  }
  endwin();
  return 0;
}

Не забудьте указать компоновщику добавить библиотеку libcurses.

gcc ... -lcurses
...