FLECHACONTROL.c



/* SE PINTA UNA "O" Y SE MUEVE CON LAS TECLAS DE FLECHAS */

/* SE ADAPTA A LAS DIMENSIONES DE LA VENTANA
	USANDO "LINES" Y "COLS" YA DEFINIDAS POR NCURSES
	LINES = RENGLONES
	COLS  = COLUMNAS
*/

#include <stdio.h>
#include <stdlib.h>
#include <curses.h>

void IniVideo( void );
void Exit( void );
void Ciclo( void );

#define DIM 200		// 200 RENGLONES DE 200 LETRAS CADA UNO
#define RENG 20		// 20 RENGLONES DE ALTO
#define COLS 80		// 80 LETRAS POR RENGLON

WINDOW *win;
int Ren = 0, Col = 0;						// POSICION INICIAL DEL CURSOR EN LA VENTANA


void IniVideo( void )
{
	win=initscr(); clear(); refresh(); cbreak(); keypad(win, TRUE);
	start_color( );
		init_pair(1, COLOR_BLUE, COLOR_YELLOW);
		init_pair(2, COLOR_BLUE, COLOR_YELLOW);
		bkgd(COLOR_PAIR( 2 )); attron(COLOR_PAIR( 1 )); 
}

void Exit( void )     { refresh( ); endwin( ); exit(1); }

int main ()						//   (#, FONT, BACKGROUND)
{
	IniVideo( );
	Ciclo( );
}


void Ciclo(void)
{
	int Tecla = 0, X=0, Y=0;
	getch();
	clear( );

	for(;;)
	{
		clear(); move(Y, X);  printw("O");
		Tecla = getch();

		switch ( Tecla )
		{
			case KEY_DOWN:
					Y = (Y > LINES) ? 1 : Y + 1;
				break;
			case KEY_UP:
					Y = (Y < 0) ? LINES : Y - 1;
				break;
			case KEY_LEFT:
					X = (X < 0) ? COLS : X - 1;
				break;
			case KEY_RIGHT:
					X = (X > COLS) ? 1 : X + 1;
				break;
		}
		refresh();
	}
	Exit();
}