Documentos de Académico
Documentos de Profesional
Documentos de Cultura
OPTATIVA I
“CARRITO CONTROLADO CON TURBO C++”
DOCENTE:
ING. JOSE ALBERTO GARCIA CHAVEZ
CARRERA:
INGENIERIA EN MECATRÓNICA
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
ABRIL DE 2011.
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
INDICE
INTRODUCCION 3
CONDICIONES 5
CICLOS DE CONTROL
6
SENTENCIAS 6
7
PROYECTO REALIZADO: CARRITO EN TURBO C++
- INFORMACION ADICIONAL 8
Puerto paralelo en un PC 17
- PROGRAMA 30
- EVIDENCIAS 65
- IMAGEN VISUAL DE PANTALLA (Librería LAW)
68
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
INTRODUCCION
Actualmente, debido a sus características, puede ser utilizado para todo tipo de
programas.
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Estructuras de Decisión o Selección
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
PROYECTO:
“EL CARRITO EN
TURBO C++”
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
INFORMACION ADICIONAL
CONCEPTOS BÁSICOS DE GRAFICACIÓN
Tal como un artista selecciona diversos medios para representar sus pinturas, los
programadores, escogen un modo y formato especial para habilitar el monitor para
graficar. Cada modo proporciona ciertas características como la resolución, número
posible de colores, modo texto o modo gráfico y otros elementos donde cada modo
requiere de cierto equipo (hardware).
Resolución
Las imágenes gráficas mostradas en un monitor de computadora se componen de
pequeños puntos llamados píxeles, los cuales están distribuidos en la pantalla en filas;
existe una cantidad específica de filas y cada fila tiene una cantidad específica de
píxeles. La cantidad de píxeles usada en la pantalla se conoce como resolución. Cada
modo gráfico tiene una resolución particular.
La función initgraph()
Una vez declaradas las variables monitor y modo que controlarán la resolución
identificando el tipo de pantalla o monitor y su modo de operación respectivamente, se
utiliza la función initgraph() para habilitar el monitor seleccionado en modo gráfico.
La función initgraph() tiene 3 parámetros o argumentos:
1) La variable que identifica el monitor.
2) El modo de operación gráfico.
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
3) Subdirectorio que contiene los controladores de los monitores (archivos con
extensión BGI) y los archivos con los tipos de letra (extensión CHR) como lo muestra
la Fig.3.
Si se desea usar el directorio actual por defecto, se utiliza la función initgraph() como
lo indica la Fig. 4
La función closegraph()
Para terminar de usar el monitor en modo gráfico y devolverlo a su modo de texto
normal se usa la función closegraph().
Uso de coordenadas
Una vez que se inicializa el monitor en modo gráfico, las coordenadas tienen al píxel
como unidad de medida. La función getmaxx() calcula la cantidad de píxeles por
renglón y la función getmaxy() calcula la cantidad de renglones de la pantalla.
FUNCIONES DE GRAFICACIÓN
Sería muy difícil considerar todas las opciones posibles de todas las funciones de
graficación; sin embargo, en esta antología se tratan los temas fundamentales para
implementar este tipo de funciones. Básicamente mostraremos que antes de utilizar un
color, un tipo de línea, de relleno, etc. es necesario definirlo.
La función putpixel()
Tal como se mencionó en la sección anterior, al habilitar el monitor en modo gráfico, la
pantalla se divide en pequeños puntos llamados pixeles. La función putpixel() coloca
un punto o píxel de un color específico en determinada coordenada de la pantalla.
Esta función requiere 3 argumentos (Fig. 5):
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
La función line()
Esta función se utiliza para dibujar una línea entre 2 puntos. Para ello, la función
requiere 4 parámetros que representan las coordenadas (en pixeles) de los dos
puntos que se desea unir mediante una línea recta. La Fig. 7 muestra un ejemplo que
une los puntos 50,100 y 300,200 (columna, renglón respectivamente).
/*
Programa para inicializar el monitor en modo grafico
Tecnicas avanzadas de programacion en Lenguaje C++
*/
#include <graphics.h> // Encabezado con declaraciones de
graficos
#include <conio.h> // Para el uso de kbhit()
#include <stdlib.h> // Para el uso de random()
#include <dos.h> // Para el uso de delay
void main(void)
{
int monitor=VGA, modo=VGAHI; // Declaracion de tipo de monitor y modo
initgraph(&monitor,&modo,"\\tc\\bgi");
// Inicializa el modo grafico indicando el monitor y modo utilizado
// El subdirectorio \\tc\\bgi indica la ruta de localizacion de los
// archivos *.BGI (monitores) y *.CHR (tipos de letras)
while(!kbhit()) // Mientras no se oprima cualquier tecla
{
putpixel(random(getmaxx()),random(getmaxy()),random(getmaxcolor
()));
// Coloca un pixel en la pantalla, seleccionando al azar la columna
// (1..getmaxx), el renglon (1..getmaxy) y el color (1..getmaxcolor) delay(5);
}
closegraph(); // Termina el modo grafico (vuelve a su modo normal)
}
La función setlinestyle()
Esta función se utiliza para determinar el tipo de línea o trazo que se desea. Se
pueden utilizar trazos con línea continua, línea punteada, línea interrumpida, o un
patrón de línea definido por el usuario. Esta función requiere 3 argumentos:
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
La Fig. 8 muestra un ejemplo que une los puntos 50,100 y 300,200 con una línea
punteada.
La función circle()
La función rectangle()
Esta función dibuja un rectángulo indicando las coordenadas de las esquinas superior
izquierda e inferior derecha respectivamente. La Fig. 11 muestra un ejemplo de una
función que dibuja un rectángulo desde el punto 50,100 hasta el punto 400,250.
La función ellipse()
Se usa esta función para dibujar un arco elíptico o una elipse completa. Esta función
requiere 6 argumentos:
Se puede dibujar una elipse completa indicando el ángulo inicial como 0° (cero) y el
ángulo final como 359° . La Fig. 12 dibuja una elipse completa con centro en 100,150,
con radio horizontal de 25 y radio vertical de 40 pixeles.
La función arc()
Se usa esta función para dibujar un arco circular. Esta función requiere argumentos:
Los puntos de inicio y final del arco se especifican por medio de sus ángulos medidos
en el sentido de las manecillas del reloj; es decir, con 0° en las 3:00, 90° en las 12:00 y
así sucesivamente. La Fig. 13 dibuja un arco de 30° con centro en 100,150 y radio 40
pixeles.
La función setcolor()
Se utiliza esta función para definir el color de los trazos siguientes; es decir, antes de
dibujar un trazo de un color específico, éste debe definirse. Esta función sólo tiene un
argumento que representa el código del color deseado. P. ejem. BLACK, RED, BLUE,
GREEN, YELLOW, etc. o bien su número entero correspondiente. La Fig. 14 muestra
la tabla de colores y sus respectivos valores.
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
La Fig. 15 muestra un ejemplo del uso de la función setcolor() donde se dibuja un
circulo de color rojo y después un rectangulo de color azul.
Los antiguos circuitos integrados que se incluían en las tarjetas de interface del puerto
paralelo no permitían la recepción de datos, sólo estaban diseñados para el envío de
información al exterior. Las versiones recientes de estas tarjetas de interface de
puertos paralelo sí permiten la recepción de datos y dan la posibilidad, por ejemplo,
de intercambiar información entre PC a través del puerto paralelo, siempre que se
utilice el software adecuado.
Los cables comerciales para la conexión paralelo entre el PC y la impresora tienen una
longitud de 2 metros, aunque no es recomendable que tengan una longitud superior a
5 metros si se desea una conexión fiable y sin interferencias.
En la siguiente tabla se describen todas las líneas del estándar Centronics, con
indicación de su denominación y el número de pin que le corresponde, tanto en el
conector tipo Centronics de 36 pines como en el conector DB-25. En esa tabla se
indica que las 8 líneas correspondientes a los bits de datos (D0 a D7) son líneas de sal
ida, pues así lo establece el estándar Centronics, sin embargo y sobre todo en las
implementaciones más recientes, la circuitería asociada al interface del puerto paralelo
puede ser tal que las líneas de datos pueden ser leídas desde el PC y, por tanto, ser
consideradas como líneas bidireccionales, aunque sea en determinadas condiciones
y con el software adecuado.
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Descripción de los pines del Puerto paralelo:
El puerto paralelo en un PC
Todos los ordenadores tipo PC están equipados, al menos, con una tarjeta de
interface paralelo, frecuentemente junto a un interface serie. Como sistema operativo,
el DOS puede gestionar hasta cuatro interfaces de puertos paralelo, LPT1 , LPT2 ,
LPT 3 y LPT4, además, reserva las siglas PRN como sinónimo del LPT 1, de modo
que puede ser tratado como un archivo genérico. En el byte 0040:0011 del BIOS
almacena el número de interfaces de puertos paralelo que se hayan instalado en el
equipo. La dirección de entrada/salida de cada uno de los puertos paralelo y el número
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
de puertos instalados en un PC se muestra en la pantalla inicial de arranque del
equipo es frecuente, casi estandard que las direcciones de los dos primeros puertos
paralelos sean las siguientes:
Las tarjetas del puerto paralelo tiene una estructura muy simple; consta de tres
registros: de control, de estado y de datos. Todas las señales que intervienen en el
puerto tienen asociado un bit en uno de esos registros, de acuerdo con las funciones
asignadas a cada línea en particular.
· El registro de datos
Es de tipo latch de 8 bits, que puede ser leído y escrito desde el procesador. Es el
registro donde el procesador, en operaciones de salida (OUT), pone el dato que se
quiere enviar a la impresora y su dirección coincide con la dirección base del puerto
paralelo ( 0x 378 en LPT 1 ). En la Figura 32.1 se muestra la distribución de los bits
de este registro y los pines asociados a cada uno de ellos en el conector DB-25.
· El registro de estado
Error® es 11,10,12,12,15
Los bits de este registro se designan según se muestran en la Figura 32.2, en la que el
símbolo «/» delante del nombre del bit indica que es activo a nivel bajo.
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Pero el bit 7 además ( / BSY ) del registro de estado (bit 7) es invertido por el hardware
y, por tanto, la línea tiene un nivel complementado al que aparece en ese bit.
¨ Si el bit 7 (/BSY ® Busy) está a O, significa que la impresora está ocupada (buffer de
impresión lleno, procesando información, pendiente de inicializar, etc. ).
¨ El bit 4 (OF/ON ® Line Off) indica cuando está a 1, que la impresora no está en línea.
· El registro de control
El símbolo ( * ) indica que los bits STR, ALF y OSL del registro de control son
invertidos por el hardware con relación a las líneas correspondientes al cable de
conexión, por lo que el nivel de los bits 0,1 y 3 del registro es complementado con
relación a las líneas correspondientes.
¨Si el bit 1 (ALF) está a nivel alto, la impresora produce automáticamente un cambio de
línea (LF) cada vez que recibe un retorno de carro (CR).
¨El bit 0 (STR) controla la línea que permite validar el dato existente en el registro de
datos. La puesta a 1 del bit STR genera un impulso corto que indica a la impresora
que el carácter del registro de datos es válido y debe ser aceptado. Así pues, cada vez
que se precise enviar un carácter, no basta con ponerlo en el registro de datos, sino
que hay que hacer un reset en el bit STR del registro de control y validar el dato
volviendo a poner un 1 en ese bit.
Características E/S
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Esto hace del puerto paralelo un interface de comunicación con el exterior bastante
flexible.
El registro de estado es de sólo lectura. Cuando se lee este registro, lo que se recibe
es el estado lógico De los pines 10, 11, 12, 13 y 15 del conector DB-25 (el bit S 7
contiene el complemento del estado de la línea). Los tres bits de menor peso (SO-S2)
no se utilizan y, habitualmente, se encuentran a nivel alto
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
y las líneas asociadas del conector tienden a alcanzar la tensión correspondiente a
ese estado.
Las instrucciones en Turbo C que dan acceso a los puertos están en la librería
conio.h y son, para escribir, outp (puerto ,dato), y para leer inp (puerto).
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
En una memoria Eprom guardamos los datos y mediante un contador fijo vamos
leyendo las distintas posiciones. Este circuito simple tiene el inconveniente poder
realizar sólo una secuencia programada, aunque con alguna lógica adicional podemos
incluir varios programas y seleccionarlos a posteriori. Vemos que es necesario un
circuito contador y también presenta el problema de modificar el programa de la
secuenciación, que debe ser extraída la memoria, borrarla completamente, y re grabar
el nuevo programa y todos los anteriores.
Un ejemplos :
#include <conio.h>
{ char i=0;
for (i=0;i<256;i++)
outp (0x378,i);
durante 10 veces:
#include <conio.h>
{ char i;
for (i=0;i<10;i++)
outp (0x378,255);
outp (0x378,0);
#include <conio.h>
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
void main (void)
char i;
outp (0x378,0);
outp (0x378,datos[i]);
outp (0x378,0);
for (i=7,i<0,i--)
El integrado LTC 1092 comienza su ciclo cuando la línea de selección (CS) se pone a
cero. Después de unos 2 ciclos de estabilización el integrado proporciona una
conversión por aproximaciones sucesivas, para después transmitir el resultado
mediante 10 pulsos de reloj (1 por bit). Esta señal será generada ordenador. La forma
de hacerlo es fácil. Se pone una de las salidas del puerto paralelo alto, se espera un
poco, después se vuelve a poner a nivel bajo y volvemos a esperar otro poco; y así
sucesivamente. En medio de este proceso leemos el valor que nos proporciona el
convertidor. La frecuencia de muestreo debe ser entre 10KHz y 500Khz. El resto de
las líneas del puerto paralelo se situarán a nivel alto para que todas ellas en paralelo
puedan alimentar al circuito.
Otros componentes:
Todos los convertidores AD necesitan una tensión de referencia que es aquella que
equivale al fondo de escala del convertidor. Si el circuito es de 10 bits podemos
alcanzar hasta 210-1= 1023®Vref. y 0® 0voltios. Mediante el integrado LM336 de
National generamos una tensión estable y prácticamente inmune a cambios de
temperatura centrada en 2.49v y gracias a una resistencia ajustable regulamos a 1
voltio. (Técnicamente el circuito puede ajustarse hasta medir tensiones de 2.5v de
fondo de escala). Ya sólo nos queda por describir el último componente, que es el
sensor de temperatura. Se trata del LM35 que ofrece una tensión /ºC de 0.01 voltio,
así 0º ® 0 voltios y 25º ® 0,25 voltios. Como el fondo de escala es de 1 voltio la
temperatura máxima es de 100 grados.
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Ahora se requiriere de un programa en el PC con el fin de transformar las señales
analógicas en digitales. Como podemos ver en listado adjunto podemos direccionar el
puerto paralelo realizando una operación de salida (OUT) en puerto correspondiente,
que por defecto es 0x378h para el LPT1
Recordemos que todas las salidas deben ponerse a nivel alto, exceptuando
aquellas donde van a existir variaciones. La programación del chipLTC1092 es
relativamente sencilla.
Si seguimos el esquema, el bit 0 del puerto corresponde con la señal CS mientras que
el bit 1 corresponde con la señal de reloj. Para la entrada de datos se utiliza el bit 7 del
registro de estado (pin 11). Tenemos dos macros, denominadas HIGH y LOW que
determinan el estado del reloj.
En este ciclo no se realiza ninguna operación. A partir de este momento, todo está
preparado para recibir los bits uno a uno. En cada ciclo de reloj leeremos el puerto de
entrada recibiendo un bit. Dicho de otra manera, subimos el bit de reloj, lo bajamos y
leemos un bit en el puerto. Esta operación la realizaremos diez veces, obteniendo así
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
diez bits, de forma que nos llega primero el de mayor peso (D9) [en el programa
b=512 porque son 10 bits] y finalmente el de menor (Do).
Para minimizar estos problemas, se suele emplear algún algoritmo que obtenga la
media de tres o cuatro lecturas consecutivas, lo que suaviza la respuesta eliminado
picos indeseados.
Decidimos utilizar struct para las coordenadas en x, y para el inicio y fin de cada figura
(rectángulos).
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Lo siguiente fue la asignación de los movimientos adelante, atrás, derecha e izquierda
con las flechas del teclado, esto lo hicimos asignando un valor a 4 variables (DERE,
IZQ, ARRI, ABA).
#define ARRI 72
#define ABA 80
#define IZQ 75
#define DER 77
#define ESC 27
Realizamos case en el programa para cada uno de las direcciones que tomaría el carrito con
ayuda de una variable de tipo char llamada tecla el case deben de estar dentro de un do while
del cual solo podríamos salir con escape del teclado, esto fue asignado a una variable la cual
también definimos anteriormente.
Los casos ARRI y ABA fueron los más fácil de hacer ya que estos solo se incrementa o
decremento la posición en x, y de pendiendo el caso.
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Las opciones DERE e IZQ fueron las más complicadas ya en estas se tenía que hacer un arreglo
especial, dependiendo la posición en la que se encontrara la figura girara conforme a la
instrucción que sedaba y fuera capaz de identificar en donde se encuentra para poder moverse
a una nueva.
1 4
2 4 1 3
3 2
Esto se logro con ayuda de contadores y banderas que ayudaban a guardar la dirección en la
que se encontraba el carro.
Después de esto hicimos las restricciones de pantalla a si como las restricciones de los giros si
es que la pantalla no era suficiente.
La comunicación del puerto paralelo y el carrito fue nuestro siguiente paso, y en el que nos
dimos cuenta que pera activar nuestra señal a control remoto necesitábamos negar nuestras
salidas y hacer una placa con un integrado 74ls04.
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Para finalizar utilizamos nuestra propia librería y presentación al mismo tiempo, hacer un
pequeño menú para hacer posible la selección de un color (Rojo, Azul, Cyen, Maganta y Verde)
para el carro.
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
PROGRAMA REALIZADO EN EL PROYECTO
#include<LAW.h>
#define ARRI 72
#define ABA 80
#define IZQ 75
#define DER 77
#define ESC 27
void color();
struct
int x,y,x1,y1,x2,y2;
r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,v1,v2,l1,l2,l3,l4,l5,l6,lz1,lz2;
int main()
int aux1,y3,cont=0,cont2=0,b=0,aux2,aux3;
char tecla;
textcolor(7);
presentacion();
color();
cin>>aux3;
if(aux3>0&&aux3<6)
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
initgraph(&gdriver, &gmode, "c:\\tc\\bgi");
outportb(0x378,255);
r7.x=550; v1.x2=560;
r7.y=380; v1.x=530;
lz1.x=530; lz2.x=590;
lz1.y=295; lz2.y=295;
lz1.x1=540; lz2.x1=600;
lz1.y1=300; lz2.y1=300;
lz1.x2=532; lz2.x2=592;
lz1.y2=297; lz2.y2=297;
/* draw a rectangle */
while(tecla!=ESC)
clrscr();
//cleardevice();
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
setcolor(BLACK); setcolor(BLACK);
rectangle(r1.x,r1.y,r1.x1,r1.y1); rectangle(r2.x,r2.y,r2.x1,r2.y1);
setfillstyle(SOLID_FILL,aux3); setfillstyle(SOLID_FILL,BLACK);
floodfill(r1.x2,r1.y2,BLACK); floodfill(r2.x2,r2.y2,BLACK);
//R4
rectangle(r3.x,r3.y,r3.x1,r3.y1); rectangle(r4.x,r4.y,r4.x1,r4.y1);
setfillstyle(SOLID_FILL,BLACK); setfillstyle(SOLID_FILL,BLACK);
floodfill(r3.x2,r3.y2,BLACK); floodfill(r4.x2,r4.y2,BLACK);
//R5 //ventana1
rectangle(r5.x,r5.y,r5.x1,r5.y1); setcolor(6);
setfillstyle(SOLID_FILL,BLACK); rectangle(v1.x,v1.y,v1.x1,v1.y1);
floodfill(r5.x2,r5.y2,BLACK); setfillstyle(SOLID_FILL,BLACK);
floodfill(v1.x2,v1.y2,6);
//ventana2 //R6
rectangle(v2.x,v2.y,v2.x1,v2.y1); rectangle(r6.x,r6.y,r6.x1,r6.y1);
setfillstyle(SOLID_FILL,BLACK); setfillstyle(SOLID_FILL,BLACK);
floodfill(v2.x2,v2.y2,6); floodfill(r6.x2,r6.y2,6);
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
//R7
setcolor(6);
rectangle(r7.x,r7.y,r7.x1,r7.y1);
setfillstyle(SOLID_FILL,BLACK);
floodfill(r7.x2,r7.y2,6);
//lineas de ventana
//l1 //l4
line(l1.x,l1.y,l1.x1,l1.y1); line(l4.x,l4.y,l4.x1,l4.y1);
//l2 //l5
line(l2.x,l2.y,l2.x1,l2.y1); line(l5.x,l5.y,l5.x1,l5.y1);
//l3 //l6
line(l3.x,l3.y,l3.x1,l3.y1); line(l6.x,l6.y,l6.x1,l6.y1);
//lz1
if(b==1)
aux2=rand()%5;
else
aux2=4;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
setcolor(0); rectangle(lz2.x,lz2.y,lz2.x1,lz2.y1);
rectangle(lz1.x,lz1.y,lz1.x1,lz1.y1); setfillstyle(SOLID_FILL,aux2);
setfillstyle(SOLID_FILL,aux2); floodfill(lz2.x2,lz2.y2,0);
floodfill(lz1.x2,lz1.y2,0); delay(1);
outportb(0x378,255);
tecla=getch();
kbhit();
switch (tecla)
case ARRI:
if(r1.y>=0)
if(cont==0||cont==4)
outportb(0x378,1);
outportb(0x378,1);
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r7.y--; v1.y--; v2.y--;
lz1.y--; lz2.y--;
lz1.y1--; lz2.y1--;
lz1.y2--; lz2.y2--;
if(r1.x>0)
if(cont==1)
outportb(0x378,1);
outportb(0x378,1);
r1.x1--; r2.x1--;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r2.x2--; r3.x--; r3.x2--;
r3.x1--;
r7.x--;
r7.x1--;
r7.x2--;
v1.x--; v2.x--;
v1.x1--; v2.x1--;
v1.x2--; v2.x2--;
lz1.x--; lz2.x--;
lz1.x1--; lz2.x1--;
lz1.x2--; lz2.x2--;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
}
if(r1.x1<639)
if(cont==3)
outportb(0x378,1);
outportb(0x378,1);
r7.x++;
r7.x1++;
r7.x2++;
v1.x++; v2.x++;
v1.x1++; v2.x1++;
v1.x2++; v2.x2++;
lz1.x++; lz2.x++;
lz1.x1++; lz2.x1++;
lz1.x2++; lz2.x2++;
if(r1.y1<479)
if(cont==2)
outportb(0x378,1);
outportb(0x378,1);
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r7.y++;
r7.y1++;
r7.y2++;
v1.y++; v2.y++;
v1.y1++; v2.y1++;
v1.y2++; v2.y2++;
lz1.y++; lz2.y++;
lz1.y1++; lz2.y1++;
lz1.y2++; lz2.y2++;
break;
case ABA:
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
if(r1.y1<479)
if(cont==0||cont==4)
outportb(0x378,0x2);
outportb(0x378,0x2);
r7.y++;
r7.y1++;
r7.y2++;
v1.y++; v2.y++;
v1.y1++; v2.y1++;
v1.y2++; v2.y2++;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
l1.y++; l2.y++; l3.y++;
lz1.y++; lz2.y++;
lz1.y1++; lz2.y1++;
lz1.y2++; lz2.y2++;
if(r1.x1<639)
if(cont==1)
outportb(0x378,0x2);
outportb(0x378,0x2);
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r4.x++; r5.x++; r6.x++;
r7.x++;
r7.x1++;
r7.x2++;
v1.x++; v2.x++;
v1.x1++; v2.x1++;
v1.x2++; v2.x2++;
lz1.x++; lz2.x++;
lz1.x1++; lz2.x1++;
lz1.x2++; lz2.x2++;
}
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
if(r1.x>0)
if(cont==3)
outportb(0x378,0x2);
outportb(0x378,0x2);
r7.x--;
r7.x1--;
r7.x2--;
v1.x--; v2.x--;
v1.x1--; v2.x1--;
v1.x2--; v2.x2--;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
l1.x--; l2.x--; l3.x--;
lz1.x--; lz2.x--;
lz1.x1--; lz2.x1--;
lz1.x2--; lz2.x2--;
if(r1.y>0)
if(cont==2)
outportb(0x378,0x2);
outportb(0x378,0x2);
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r4.y--; r5.y--; r6.y--;
r7.y--;
r7.y1--;
r7.y2--;
v1.y--; v2.y--;
v1.y1--; v2.y1--;
v1.y2--; v2.y2--;
lz1.y--; lz2.y--;
lz1.y1--; lz2.y1--;
lz1.y2--; lz2.y2--;
}
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
}
break;
case IZQ:
cont++;
if(cont==1)
if(r1.x1-179>=0&&r1.y+184<=479)
outportb(0x378,0x4);
outportb(0x378,0x4);
outportb(0x378,0x4);
outportb(0x378,0x4);
r1.x=r1.x1-179;
r1.y=r1.y1-85;
lz1.x=r1.x; lz2.x=r1.x;
lz1.x1=lz1.x+5; lz2.x1=lz2.x+5;
lz1.y=r1.y1-20; lz2.y=r1.y+10;
lz1.y1=lz1.y+10; lz2.y1=lz2.y+10;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r5.x=r1.x1-60; r6.x=r1.x+75; r7.x=r1.x+85;
v1.x=r1.x+30; v2.x=r1.x1-60;
v1.y=r1.y+5; v2.y=r1.y+5;
v1.x1=v1.x+30; v2.x1=v2.x+30;
v1.y1=v1.y+75; v2.y1=v2.y+75;
else
cont=0;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
}
if(cont==2)
if(r1.y+179<=479&&r1.x+184<=639)
outportb(0x378,0x4);
outportb(0x378,0x4);
outportb(0x378,0x4);
outportb(0x378,0x4);
r1.x=r1.x1-85;
r1.y1=r1.y+179;
cont2=2;
lz1.x=r1.x+10; lz2.x=r1.x1-20;
lz1.x1=lz1.x+10; lz2.x1=lz2.x+10;
lz1.y=r1.y1-5; lz2.y=r1.y1-5;
lz1.y1=lz1.y+5; lz2.y1=lz2.y+5;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r5.x=r1.x-5; r6.x=r1.x+5; r7.x=r1.x+25;
v1.x=r1.x+5; v2.x=r1.x+5;
v1.y=r1.y+30; v2.y=r1.y1-60;
v1.x1=v1.x+75; v2.x1=v2.x+75;
v1.y1=v1.y+30; v2.y1=v2.y+30;
else
cont=1;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
}
if(cont==3)
if(r1.x+179<=639&&r1.y1-184>=0)
outportb(0x378,0x4);
outportb(0x378,0x4);
outportb(0x378,0x4);
outportb(0x378,0x4);
r1.x1=r1.x+179;
r1.y1=r1.y+85;
cont2=1;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r6.x=r1.x+75; r7.x=r1.x+85;
r6.y=r1.y+5; r7.y=r1.y+25;
r6.x1=r6.x+30; r7.x1=r7.x+10;
r6.y1=r6.y+75; r7.y1=r7.y+30;
v1.x=r1.x+30; v2.x=r1.x1-60;
v1.y=r1.y+5; v2.y=r1.y+5;
v1.x1=v1.x+30; v2.x1=v2.x+30;
v1.y1=v1.y+75; v2.y1=v2.y+75;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
}
else
cont=2;
if(cont==4)
if(r1.y1-179>=0&&r1.x1-184>=0)
outportb(0x378,0x4);
outportb(0x378,0x4);
outportb(0x378,0x4);
outportb(0x378,0x4);
r1.x1=r1.x+85;
r1.y=r1.y1-179;
lz1.x=r1.x+10; lz2.x=r1.x1-20;
lz1.x1=lz1.x+10; lz2.x1=lz2.x+10;
lz1.y=r1.y; lz2.y=r1.y;
lz1.y1=lz1.y+5; lz2.y1=lz2.y+5;
v1.x=r1.x+5; v2.x=r1.x+5;
v1.y=r1.y+30; v2.y=r1.y1-60;
v1.x1=v1.x+75; v2.x1=v2.x+75;
v1.y1=v1.y+30; v2.y1=v2.y+30;
cont=0;
else
{
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
cont=3;
break;
case DER:
cont2++;
if(cont==0)
if(r1.x+179<=639&&r1.y+184<=479)
outportb(0x378,0x8);
outportb(0x378,0x8);
outportb(0x378,0x8);
outportb(0x378,0x8);
r1.x1=r1.x+179;
r1.y=r1.y1-85;
cont=3;
cont2=1;
lz1.x=r1.x1-5; lz2.x=r1.x1-5;
lz1.x1=lz1.x+5; lz2.x1=lz2.x+5;
lz1.y=r1.y+10; lz2.y=r1.y1-20;
lz1.y1=lz1.y+10; lz2.y1=lz2.y+10;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r2.x=r1.x+136; r3.x=r1.x+27; r4.x=r1.x+27;
v1.x=r1.x+30; v2.x=r1.x1-60;
v1.y=r1.y+5; v2.y=r1.y+5;
v1.x1=v1.x+30; v2.x1=v2.x+30;
v1.y1=v1.y+75; v2.y1=v2.y+75;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
l4.x=r6.x1; l5.x=r6.x1-15; l6.x=r6.x1-15;
else
cont=0;
if(cont==1)
if(r1.y1-179>=0&&r1.x+184<=639)
outportb(0x378,0x8);
outportb(0x378,0x8);
outportb(0x378,0x8);
outportb(0x378,0x8);
r1.x=r1.x1-85;
r1.y=r1.y1-179;
cont=0;
lz1.x=r1.x+10; lz2.x=r1.x1-20;
lz1.x1=lz1.x+10; lz2.x1=lz2.x+10;
lz1.y=r1.y; lz2.y=r1.y;
lz1.y1=lz1.y+5; lz2.y1=lz2.y+5;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r2.x=r1.x1; r3.x=r1.x1; r4.x=r1.x-5;
v1.x=r1.x+5; v2.x=r1.x+5;
v1.y=r1.y+30; v2.y=r1.y1-60;
v1.x1=v1.x+75; v2.x1=v2.x+75;
v1.y1=v1.y+30; v2.y1=v2.y+30;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
l4.x=r6.x1; l5.x=r6.x1; l6.x=r6.x;
else
cont=1;
if(cont==2)
if(r1.x1-179>=0&&r1.y1-184>=0)
outportb(0x378,0x8);
outportb(0x378,0x8);
outportb(0x378,0x8);
outportb(0x378,0x8);
r1.x=r1.x1-179;
r1.y1=r1.y+85;
cont=1;
lz1.x=r1.x; lz2.x=r1.x;
lz1.x1=lz1.x+5; lz2.x1=lz2.x+5;
lz1.y=r1.y1-20; lz2.y=r1.y+10;
lz1.y1=lz1.y+10; lz2.y1=lz2.y+10;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r2.x=r1.x+27; r3.x=r1.x1-60; r4.x=r1.x+27;
v1.x=r1.x+30; v2.x=r1.x1-60;
v1.y=r1.y+5; v2.y=r1.y+5;
v1.x1=v1.x+30; v2.x1=v2.x+30;
v1.y1=v1.y+75; v2.y1=v2.y+75;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
l4.x=r6.x1; l5.x=r6.x1-15; l6.x=r6.x1-15;
else
cont=2;
if(cont==3&&cont2==2)
if(r1.y+179<=479&&r1.x1-184>=0)
outportb(0x378,0x8);
outportb(0x378,0x8);
outportb(0x378,0x8);
outportb(0x378,0x8);
r1.x1=r1.x+85;
r1.y1=r1.y+179;
cont=2;
cont2=0;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
lz1.x=r1.x+10; lz2.x=r1.x1-20;
lz1.x1=lz1.x+10; lz2.x1=lz2.x+10;
lz1.y=r1.y1-5; lz2.y=r1.y1-5;
lz1.y1=lz1.y+5; lz2.y1=lz2.y+5;
v1.x=r1.x+5; v2.x=r1.x+5;
v1.y=r1.y+30; v2.y=r1.y1-60;
v1.x1=v1.x+75; v2.x1=v2.x+75;
v1.y1=v1.y+30; v2.y1=v2.y+30;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
l4.x=r6.x1; l5.x=r6.x1; l6.x=r6.x;
else
cont=3;
cont2=0;
r1.x2=r1.x+2;
r1.y2=r1.y+2;
break;
case 'c':
b=1;
outportb(0x378,16);
outportb(0x378,16);
outportb(0x378,16);
outportb(0x378,16);
break;
cout<<b;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
//getch();
v1.x2=v1.x+2; lz1.x2=lz1.x+2;
v1.y2=v1.y+2; lz1.y2=lz1.y+2;
v2.x2=v2.x+2; lz2.x2=lz2.x+2;
v2.y2=v2.y+2; lz2.y2=lz2.y+2;
closegraph();
else
clrscr();
getch();
return 0;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
void color()
cout<<"1-AZUL\n";
cout<<"2-VERDE\n";
cout<<"3-CYAN\n";
cout<<"4-ROJO\n";
cout<<"5-MAGENTA\n";
EVIDENCIAS
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
DISEÑO DE PANTALLA
(Librería”LAW”)
#include <iostream.h>
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<dos.h>
presentacion()
NOTA:
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA