#include <ncurses.h>
WINDOW *create_newwin(int height, int width, int starty, int startx);
void destroy_win(WINDOW *local_win);
int main(int argc, char *argv[])
{ WINDOW *my_win;
  int startx, starty, width, height;
  int ch;
  initscr();                      /* Curses kipini ilklendirme    */
  cbreak();                       /* Satır önbelleği etkisiz,     *
                                   * herşeyi bana gönder          */
  keypad(stdscr, TRUE);           /* Şu şeker F1'e ihtiyacım var  */
  height = 3;
  width = 10;
  starty = (LINES - height) / 2;  /* Pencerenin ortasına yazmak için */
  startx = (COLS - width) / 2;    /* hesaplama yapılıyor             */
  printw("Press F1 to exit");
  refresh();
  my_win = create_newwin(height, width, starty, startx);
  while((ch = getch()) != KEY_F(1))
  { switch(ch)
    { case KEY_LEFT:
        destroy_win(my_win);
        my_win = create_newwin(height, width, starty,--startx);
        break;
      case KEY_RIGHT:
        destroy_win(my_win);
        my_win = create_newwin(height, width, starty,++startx);
        break;
      case KEY_UP:
        destroy_win(my_win);
        my_win = create_newwin(height, width, --starty,startx);
        break;
      case KEY_DOWN:
        destroy_win(my_win);
        my_win = create_newwin(height, width, ++starty,startx);
        break;
    }
  }
  endwin();                       /* Curses kipi sonu */
  return 0;
}
WINDOW *create_newwin(int height, int width, int starty, int startx)
{ WINDOW *local_win;
  local_win = newwin(height, width, starty, startx);
  box(local_win, 0 , 0);          /* 0, 0 yatay ve düşey çizgiler    *
                                   * için öntanımlı karakteri verir  */
  wrefresh(local_win);            /* Kutuyu gösterir                 */
  return local_win;
}
void destroy_win(WINDOW *local_win)
{
  /* box(local_win, ' ', ' '); : Bu istenen pencere silme sonucunu
    * vermeyecektir. Pencerenin dört köşesi ve
    * çirkin küçük bir kısmı kalacaktır.
    */
  wborder(local_win, ' ', ' ', ' ',' ',' ',' ',' ',' ');
  /* Alınan parametreler şu şekildedir
    * 1. win: üzerinde çalışılacak pencere
    * 2. ls: pencerenin sol kenarı için kullanılacak karakter
    * 3. rs: pencerenin sağ kenarı için kullanılacak karakter
    * 4. ts: pencerenin üst kenarı için kullanılacak karakter
    * 5. bs: pencerenin alt kenarı için kullanılacak karakter
    * 6. tl: pencerenin sol üst köşesi için kullanılacak karakter
    * 7. tr: pencerenin sağ üst köşesi için kullanılacak karakter
    * 8. bl: pencerenin sol alt köşesi için kullanılacak karakter
    * 9. br: pencerenin sağ alt köşesi için kullanılacak karakter
    */
  wrefresh(local_win);
  delwin(local_win);
}