trabajo de aplicada

Upload: manuel-a-samaniego-lao

Post on 17-Jul-2015

71 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDAD TECNOLGICA DE PANAM FACULTAD DE INGENIERA DE SISTEMAS COMPUTACIONALES DEPARTAMENTO DE INGENIERIA DE SISTEMAS COMPUTACIONALES

CARRERA: Licenciatura en Ingenieria de Sistemas y Computacin

MODO GRAFICO EN C: PROGRAMACION APLICADA I

PERTENECE A: Girn, Juan 8-879-654 Prosper , Ren 8-855-1675 Samaniego, Manuel 8-850-487

FACILITADORA: ROSA DUTARI DE SAMANIEGO

SEMESTRE I PANAMA , 2011

Introduccin

En la actualidad, los programas, juego o cualquier aplicacin, contienen todos un detalle muy importante para que nuestro programa sea el mejor. La misma, es la tres cuarta parte del programa o juego,etc. En la comercializacin de stos, lo que llama la atencin de muchos clientes es la interfaz grfica. Un ejemplo de estos, es la famosa saga del juego para playstation 3, llamado Assassins Creed. En ste, su intefaz era mejorada con cada nueva versin del juego, sto impact a mucho de los jugadores, dandose una gran cantidad de ventas . Los movimientos de los personajes, asemejados a una realidad humana, lo hizo muy atractivo a todo amante del videogame. La programacin que el juego tiene, es muy extensa. Un programa sin una buena interfaz de grafica, no es tan interesante para el publico de hoy. Dentro de este documento, nos adentramos al abuelo de la programacin, el lenguaje C, conocermos como se conforma su interfaz, empezando con lo ms bsico. Tambin cuales son las funciones que nos permiten crear dibujos como circulos, cuadrados, lineas, etc. Incluimos ejemplos de como incializar y como utilizar colores dentro del cdigo. Por ltimo, presentamos una aplicacin realmente divertida. Un juego de 5 cartas usando las librerias grafica de este lenguaje. Donde la pantalla muestra la si el jugador tiene trio, par, doble par, etc. Deseamos que sea de su agrado este proyecto.

Bibliografa Modo grafico C: http://www.angelfire.com/alt2/www.cgrafico.com/Home.htm Inicializacin Modo grfico C: www.lcc.uma.es/~pscp/varios/graficos.doc Librerias Borland: Funciones y estructuras. Steven R. Davidson, diciembre 2003 www.conclase.net

Modo Grfico Qu es el modo grfico? Se entiende por Modo Grfico, toda aquella interfaz en computacin que involucre el uso de ventanas y ratn. En un principio las computadoras usaban solo modo texto, una vez que la tecnologa lo permiti, la compaa Xerox invento el dispositivo de ratn que en conjuncin con un sistema de ventanas permite una interaccin ms amigable para el usuario. En gran medida se le atribuye el boom de la computacin al desarrollo de entornos grficos y la facilidad de uso que ellos involucran. En la actualidad, la mayora de los sistemas operativos involucra la posibilidad de visualizacin de entornos grficos. Muchos usuarios avanzados, generalmente programadores, piensan en seguir usando el modo texto para todas o algunas de sus tareas, ya que, afirman que el trabajo en modo texto suele ser ms rpido, por medio de atajos y complejas combinaciones de teclas para realizar operaciones sencillas como imprimir un documento. Sin embargo, cabe destacar que el modo grfico ha mejorado la usabilidad de los sistemas computacionales.

Modo grafico en c En Turbo C, el paquete de control de la pantalla tiene dos partes: el control de la pantalla en modo texto y el control de la pantalla en modo grfico. Las funciones en modo texto dirigen la apariencia de la pantalla cuando el adaptador del video est en modo de visualizacin grfica. En Turbo C, todas las funciones requieren, en primer lugar, aadir la cabecera, conio.h en cualquier programa que se ha de utilizar. Las funciones en modo de texto esperan que la pantalla est en modo texto no grfico. Aunque conceptualmente estn relacionados, realmente quedan separados. En nuestro caso nos concentraremos en la pantalla en modo grfico. Grficos en Turbo C Ya vimos que el primer subsistema de control es el paquete de texto y el segundo, el cual veremos es el paquete de grficos. Contiene una gran cantidad de funciones que llevan a cabo tareas de dibujar lneas y crculos, y de construir grficosde tarta. Los prototipos de las funciones se encuentran en el archivo de cabecera graphics.h. Este se debe incluir en cualquier programa, que ha de utilizar una una funcin de grficos. Estas son funciones son de tipo far. Todas las funciones de grficos operan por medio de una ventana, estas se denomina puerta de visualizacin. La pantalla completa es un puerta de visualizacin por defecto.

Ejemplo de modo grfico en C.

Inicializacin del modo grfico. Es suficiente con incluir la librera grafica y con colocar las siguientes lneas dentro de la funcin main, aunque si se realiza lo siguiente saldrn como no definidos todas las funciones de la librera grafica ya que es necesario inicializarla en OPTIONS del men del turbo C dentro de OPTIONS seleccionaremos LINKER y en esta seleccionaremos LIBRARIES y colocaremos una X en donde aparezca Graphics Library y despus le damos a OK! , con lo cual ya tenemos habilitada la librera grafica. Antes de utilizar ninguna de las funciones de grficos es necesario poner al adaptador de video en cualquier modo grfico. La mayoria de los sistemas que tienen adaptadores de video utilizan para el DOS el modo texto de 80 columnas. Las funciones de Turbo C no pueden funcionar con stos, ya que no est en modo grfico. Para establecer al adaptador un modo grfico, utilizar la funcin initgraph(). Este es el siguiente: void far initgraph( int far *controlador int far *mode, char far *camino); La funcin initgraph() carga en memoria el controlador de grficos que corresponde al nmero que fue sealado. Sin ste, las funciones de grficos no podran funcionar. Los controladores de grficos se encuentran en los archivos.BGI proporcionados junto con Turbo C y de los que se pueden disponer en el sistema. El archivo cabecera graphics.h define varios macros, que se pueden utilizar con este propsito. El siguiente cuadro lo muestra: Macro DETECT CGA MCGA EGA EGA64 EGAMONO IBM8514 HERCOMONO ATT400 VGA PC3270 Equivalente 0 1 2 3 4 5 6 7 8 9 10

Cuando se usa DETECT, la funcin initgraph() detecta automticamente el hardware de video presente en el sistema, y selecciona el modo de video con las ms alta resolucin. El valor de mode debe ser uno de los modos grficos en esta tabla:

Controlador CGA

Modo CGA0 CGA1 CGA2 CGA3 CGAHI MCGAC0 MCGAC1 MCGAC2 MCGAC3 MCGAMED MCGAHI EGALO EGAHI EGA64LO EGA64HI EGAMONOHI ATT400C0 ATT400C1 ATT400C2 ATT400C3 ATT400CMED ATT400CHI VGALO VGAMED VGAHI PC327HI IBM8514LO IBM8514HI

Equivalencia 0 1 2 3 4 0 1 2 3 4 5 0 1 0 1 0 0 1 2 3 4 5 0 1 2 0 0 1

Resolucin 320x200 320x200 320x200 320x200 640x200 320x200 320x200 320x200 320x200 640x200 640x200 640x200 640x350 640x200 640x350 640x350 720x348 320x200 320x200 320x200 320x200 640x200 640x200 640x200 640x350 640x480 720x350 640x480 1024x768

MCGA

EGA EGA64 EGAMONO HERC ATT400

HERCMONOHI 0

VGA

PC3270 IBM8514

Salir del modo grfico Utilizaremos closegraph() o restorecrtmode() para dejar de usar el modo grfico y de esta manera regresar al modo texto. Los prototipos de estas funciones son: void far closegraph(void); void far retorecrtmode(void); closegraph(): Se usa cuando se va a seguir usando el programa en modo texto. Turbo C libera la memoria utilizada por las funciones de grficos, y restablece el modo video a lo que era antes de llamar a initgraph(). restorecrtmode(): S, el programa est terminado, establece otra vez el estado de antes de llamar

a initgraph().

Colores y paletas El adaptador de grficos que se ha conectado al sistema determina cuntos colores y el tipo de color disponible en modo grfico. CGA y EGA/VGA Los grficos en color CGA-4 da la opcin de acceder a cuatro colores por paleta y de poder elegir 4 paletas. stas se enumeran de 0 a 3, siendo 0 el color de fondo de pantalla. Las paletas tambin se enumeran de la misma forma. Para escoger una paleta, establecer mode igual a CGAx, donde x es el nmero de la paleta. En modo EGA/VGA 16-color, la paleta consta de 16 colores seleccionados de 64 colores posibles. Su prototipo es: void far setpallete(int index, int color); Paletas y colores en modo video 4 Color 0 0 1 2 3 Macro CGA (solo fondo) NEGRO AZUL VERDE CYAN ROJO MAGNETA MARRON GRIS CLARO GRIS OSCURO AZUL CLARO VERDE CLARO CYAN CLARO ROJO CLARO MAGNETA CLARO AMARILLO BLANCO De fondo De fondo De fondo De fondo Color 1 Verde cyan verde claro cyan claro Valor 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Color 2 Rojo magneta rojo claro magneta claro Color 3 Amarillo blanco amarillo blanco

EGA_NEGRO EGA_AZUL EGA_VERDE EGA_CYAN EGA_ROJO EGA_MAGNETA EGA_MARRON EGA_GRIS CLARO EGA_GRIS OSCURO EGA_AZUL CLARO EGA_VERDE CLARO EGA_CYAN CLARO EGA_ROJO CLARO EGA_MAGNETA CLARO EGA_AMARILLO EGA_BLANCO

0 1 2 3 4 5 20 7 56 57 58 59 60 61 62 63

Ejemplos de programas con modo grfico. Ejemplo#1: #include int gdriver = DETECT, gmode, errorcode;//Inicializacin del modo grafico initgraph(&gdriver, &gmode, "c:\\tc\\bgi"); Aunque con las dos lneas anteriores de cdigo es puede inicializar de otras formas con ms lneas de cdigo pero esta es una de las ms simples si la direccin de los bgi es otra ser necesario cambiarla por la que corresponda. Otra forma ms comn pero ms larga y que aparece en los ejemplos del turbo C es la siguiente (para dibujar un circulo en el centro de la pantalla ) #include #include #include #include int main(void) { /* Requiere auto deteccin */ int gdriver = DETECT, gmode, errorcode; int midx, midy; int radius = 100; /* Inicializa las variables locales y los graficas */ initgraph(&gdriver, &gmode, "");

/* Lee el resultado de la inicializacin */ errorcode = graphresult(); if (errorcode != grOk) /* Si ocurre algn error */ { printf("Error grafico: %s\n", grapherrormsg(errorcode)); printf("Presionar una tecla para salir:"); getch(); exit(1); /* Codigo de error */ } midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor()); /* Dibuja un circulo */ circle(midx, midy, radius); getch(); closegraph(); return 0; } Ejemplo#2: /* Color, rectangulo y relleno*/ #include #include main() { int driver, mode; register int i ; driver= VGA; mode= VGAMED; initgraph(&driver,&mode,); /*encuadra la pantalla*/ rectangle(0,0,639,349); setcolor(RED); line(0,0,639,349); setcolor(GREEN); rectangle(100,100,300,200); setcolor(BLUE);

floodfill(110,110,GREEN); /* Rellena parte de la caja*/ setcolor(CYAN) line(50,200,400,125); /*dibuja circulos */ setcolor(RED); for(i=0; i