Skip to content

Instantly share code, notes, and snippets.

@mrluanma
Created June 7, 2010 02:40
Show Gist options
  • Save mrluanma/428151 to your computer and use it in GitHub Desktop.
Save mrluanma/428151 to your computer and use it in GitHub Desktop.
#include <stdlib.h>
#include <curses.h>
int r, c, // current row and column (upper-left is (0,0))
nrows, // number of rows in window
ncols; // number of columns in window
void draw(char dc)
{
move(r, c); // curses call to move cursor to row r, column c
// curses calls to replace character under cursor by dc
delch();
insch(dc);
refresh(); // curses call to update screen
r++; // go to next row
// check for need to shift right or wrap around
if (r == nrows) {
r = 0;
c++;
if (c == ncols) c = 0;
}
}
int main(int argc, char** argv)
{
int i;
char d;
WINDOW* wnd;
wnd = initscr(); // curses call to initialize window
cbreak(); // curses call to set no waiting for Enter key
noecho(); // curses call to set no echoing
getmaxyx(wnd, nrows, ncols); // curses call to find size of window
clear(); // curses call to clear screen, send cursor to position (0, 0)
refresh(); // curses call to implement all changes since last refresh
r = c = 0;
while (1) {
d = getch(); // curses call to input from keyboard
if (d == 'q') break; // quit?
draw(d); // draw the character
}
endwin(); // curses call to restore the original window and leave
return EXIT_SUCCESS;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment