morales, guevara lab 10,11,12 c15 4adocx

19
PROGRAMACIÓN APLICADA I Laboratorio N° 10,11 y 12 Librerías, Clases y objetos, métodos INFORME Integrantes: Mike Morales Apesteguia Robert Guevara Cochachi Sección C15-04-A Profesor: Carlos Enrique Mendiola Mogollón Fecha de Realización: 29 de octubre

Upload: rubenperez

Post on 24-Sep-2015

218 views

Category:

Documents


2 download

DESCRIPTION

......

TRANSCRIPT

PROGRAMACIN APLICADA I

Laboratorio N 10,11 y 12

Libreras, Clases y objetos, mtodos

INFORME

Integrantes:Mike Morales ApesteguiaRobert Guevara Cochachi

Seccin C15-04-AProfesor: Carlos Enrique Mendiola Mogolln

Fecha de Realizacin: 29 de octubre Fecha de Entrega: 03 de noviembre

2014-II

Introduccin

Mediante este informe se mostrar paso a paso el desarrollo de una aplicacin del famoso juego Snake donde se puso en prctica los temas relacionados: a las clases, a los mtodos y a los objetos desarrollados de un modo conceptual y bsico por nuestro profesor de programacin de manera entendible y adems se vern algunos comandos el cual se tuvo que investigar qu funcin cumplan en el programa.Antes que nada, necesitamos saber C Bsico.Tener creatividad, imaginacin y sobre todo tener mucha paciencia.

LAB 10: CREACION DE LIBRERIAS .h Primero generamos las funciones que nos interesa todas juntas (cdigo y cabeceras) en un mismo archivo de texto(Puedes usar el editor de texto del compilador, el bloc de notas) Ejem:int multiplica(int A, int B);int suma(int A, int B);int resta(int A, int B);

int multiplica(int A, int B){ return(A*B);}int suma(int A, int B){ return(A+B);}int resta(int A, int B){ return(A-B);}Segundo lugar el fichero creado anteriormente, guardamos con la extensin.h, por ejemplo suma.h(importante no ejecutarlo para que no le pueda cambiar sola la extensin). Se deber guardar en la carpetaincludedel compilador. Esta carpeta se puede encontrar fcilmente en la misma carpeta del compilador., accediendo a Mi PC (Equipo) y en la carpeta donde se guardan todos los programas. Tercer lugar Llamar a la biblioteca en el programa. Deberemos colocar en la cabecera del programa, junto al llamamiento de otras bibliotecas:

#include Cuando el ficherosuma.hse encuentre en la carpeta include de nuestro compilador y estar en el mismo directorio que el archivo que queremos compilar.Finalmente ya podremos usar las funciones desuma.hsin necesidad de copiar el codigo, tal y como ilustra el programa siguiente:

#include #include

int main(void){ int X,Y; scanf("%d %d",&X,&Y); printf("X*Y=%d \n",multiplica(X,Y)); printf("X+Y=%d \n",suma(X,Y)); printf("X-Y=%d \n",resta(X,Y));}

LAB11: CLASES Y OBJETOSAtributos:Vienen a ser los elementos de gran importancia en la programacin, puesto que nos determinara de forma ms especfica el anlisis del contexto, determinndonos los atributos que sern utililes en un determinado momento por ejemplo: El objeto ave, puede tener los siguientes "atributos": alas, plumas, pico, patas, entre otros.Mtodos:Son las acciones que podemos realizar sobre determinado objeto, vindolo de manera funcional en un sistema de informacin.Los mtodos tambin se definen segn lo analizado en los problemas, es decir, segn las necesidades presentadas un ejemplo sera:.- objeto: cliente.- mtodos: dar de alta, dar de baja, modificar datos, consulta de datos.Miembros:A partir de este momento usaremos la palabramiembropara referirnos al hecho de que un mtodo o un atributo pertenece a tal o cual clase.Por Ejemplo, en el programa OOP01.CPP (visto anteriormente) la ClaseCRenderposee dos miembros, buffer que es un atributo; y m_Renderizar que es un mtodo.

class CRender {public: char buffer[256]; // atributo void m_Renderizar(const char *cadena); // mtodo};

LAB 12: USO DE LIBRERA conio2.h y windows en c++Primero realiz la instalacin que aparece el ficheroconio-2.0-1mol.DevPak,Una vez terminada la instalacin se presentan la siguiente pantalla indicndonos que le proceso ha sido exitoso. Ahora vamos a configurar la librera para poder usarla, para ello abre el compilador y ve aHerramientas->Opciones del compilador, en la fichaCompiladoractiva la casillaAadir estos comandos a la lnea de comandos del linkery el cuadro que est debajo escribe-lconio(Luego abre el compilador, vas aArchivo->Nuevo->Proyectoy en la pestaaBasicseleccionasConsole Applicationy das click enAceptar:

Selecciona en donde quieres guardar el archivo del proyecto y se te presentar a continuacin un cdigo de ejemplo. Reemplaza todo el cdigo escrito por el siguiente:

Cdigo:#include #include

int main(){ clrscr(); gotoxy(20,40); printf("Hola, esto es un mensaja de prueba"); getch(); return 0;}

Finalmente que para usar la librera, tienes que poner#include , esto es vital, caso contrario no funcionar.

RESULTADOS DEL LABORATORIO Ejercicio de aplicacin

Se pidi realizar un ejercicio de aplicacin el cual consista en realizar el juego del snake.

Solucin:

A. Cdigo en c++:

1. Libreras

En la figura 1, se muestran todas las libreras que se van a utilizar para esta aplicacin, donde de la librera conio2.h el comando gotoxy va a ser bastante utilizado. Tambin se observan las definiciones de variables con los nmeros que corresponden al cdigo ASCII y dichos numeros son las direcciones que van a servir para darle movimiento al gusano.Figura 1

2. Creacin de la clase gusano

Como se observa en la figura 2, se empieza a crear una clase el cual se va a llamar gusano, donde tendr atributos privados y uno de ellos es un arreglo, luego en public: se declaran las variables pblicas y los prototipos de los mtodos de la clase, donde dichas variables pblicas pueden ser utilizadas por cualquiera de los mtodos. Tambin se observa el prototipo del contructor el cual va a indicar cmo va a a iniciar la aplicacin.Figura 2

3. Definicin del constructor

Como se observa en la figura 3, dentro del contructor se empiezan a definir los valores de inicio de las variables, donde a los parmetros que contiene el constructor gusano se les va a asignar x e y, dichas variables van a servir luego para las coordenadas del gusano.

Figura 3

4. Definicin de los mtodos

4.1. Mtodo generarmarco ()

Como se observa en la figura 4, dentro de la definicin del mtodo se define una variable de tipo entero lado y adems dicho mtodo esde un tipo void que no retorna valor ni parmetro.

En el primer for desde 2 hasta menor que 78 incrementndose en uno, se ejecuta lo que est dentro, donde con el comando gotoxy se fijan dos coordenadas de inicio (extremos) y segn las condiciones en el for las imprime con lneas dobles horizontales, porque dichas lneas se imprimieron de tipo cadena y en cdigo ASCII es el 205.

En el segundo for, desde 4 hasta menor que 23, incrementndose en uno, se ejecuta lo que est dentro, donde con el comando gotoxy se fijan 2 coordenadas de inicio (extremos) y desde ah las imprime, pero en este caso con lneas dobles verticales, dichas lneas en cdigo ASCII representan el nmero 186 y se imprimieron como tipo cadena.

Finalmente, solo se fijan las posiciones con gotoxy y se empiezan a llenar las esquinas que sobraron, donde son lneas dobles y se imprimen como tipo carcter, ya que en cdigo ASCII dichas lneas representan nmeros fijos.

Figura 4

4.2. Mtodo guardar_posicion ()

Desde el valor inicial de n=1 que se defini en el constructor, se empieza a asignar x al arreglo cuerpo[n][0] , a y al arreglo cuerpo[n][1].Dicho valor de n va a ir en incremento de uno en uno (n=n+1), luego hay una condicin de que si n final, que es n+1, es igual a tamanio entonces n toma el valor de 1 nuevamente, es decir que como se puso el valor inicial de tamanio igual 4, entonces solo se va a ver 3 asteriscos en el cuerpo del gusano.

Figura 5

4.3. Mtodo borrar_cuerpo ()

Dentro de este mtodo se define un punto de coordenadas que viene a ser el del cuerpo de la serpiente y lo va a estar borrando por cada valor de n que tenga.

Figura 6

4.4. Mtodo cuerpo_gus ()

Luego de que ya se haya definido cmo va a ser el tamao del gusano con respecto a n, se empieza a imprimir el gusano con el smbolo *, donde para esto se declar una variable de tipo entero i que con una sentencia for iba a recorrer de espacio por espacio desde la posicin 1 del largo del cuerpo hasta que sea menor a tamanio, donde para esto dentro del for se us el comando gotoxy para fijar la ubicacin de la cabeza del gusano incrementndose hasta la cola, pintndola con asterisco *.

Figura 74.5. Mtodo teclear ()

En este mtodo se empieza a definir con una condicin que contiene kbhit() el cual va a servir para revisar si una tecla est disponible, donde dentro de ella la tecla pulsada va a ser recogida por el comando getch() y no va a cambiar hasta que pulsemos otra tecla.

Luego dentro de la sentencia switch se empiezan a definir lo que se ejecuta dentro de los casos que son arriba, abajo, derecha e izquierda y fueron definidos al empezar este cdigo con su respectivo nmero (en cdigo ASCII).

Dichos casos estn regidos por la variable de tipo char tecla, donde dentro de dichos casos se empiezan a poner condiciones para que el gusano cuando est en un sentido no se vaya por el sentido opuesto.Figura 84.6. Mtodo direccion ()

En este mtodo se empieza a definir el mtodo direccin, teniendo en cuenta que el punto (0,0) de la consola se encuentra en la parte superior izquierda. Si d es igual a 1, se va para arriba el gusano, si d=2, se va para abajo el gusano, si d es igual a 3, se va para la derecha y si d es igual a 4, se va hacia la izquierda el gusano.Figura 9

4.7. Mtodo come_crece ()

Como se defini en el constructor inicialmente xc,yc que vienen a ser la posicin en la que se va a ubicar la comida (rombito), a partir de ah define este mtodo.

Empieza con una condicin que si la cabeza del gusano (x, y) coincide con la posicin de la comida (xc, yc), es decir que si la cabeza del gusano come la comida, sucede lo siguiente:

La siguiente posicin de la comida, en este caso en el eje horizontal, va a estar dada por la funcin rand() que dice que desde la posicin 0 hasta 72, se va a ubicar pero sumado ms 4, para que est dentro del marco. Para el eje vertical (posicin), tambin va a estar dada por la funcin rand(), desde la posicin 0 a 18 se va a ubicar pero sumado ms 4, para que se ubique dentro del marco. Su velocidad por cada vez que coma la comida se va a aumentar, ya que el tiempo disminuye, dicho tiempo ha sido nombrado como variable pblica velocidad, donde en el constructor se dio su valor inicial. Cada vez que el gusano coma la comida (cabeza del gusano coincida con la posicin de la comida) va a aumentar en un * su tamao y se va a escuchar un sonido(printf(\a)). Finalmente se pintara nuevamente la comida en cualquier posicin, de pendiendo de las primeras condiciones que se coloc.

Figura 104.8. Mtodo game_over ()

En este mtodo se empiezan a definir las condiciones del juego para perder, si la posicin del gusano llega a coincidir con el marco entonces se limpia la pantalla (clrscr()) y con el comando gotoxy se define una posicin (35,13) para que en esa posicin se imprima GAME OVER y finalmente se coloca getch() para que al pulsar una tecla se ejecute return 0, como retorna nulo entonces se cierra la consola (juego).

Para la segunda condicin se declara una variable j que recorra todo el tamao del gusano desde la cabeza hasta la cola y de ah se dice que si una de las posiciones recorridas por j es igual a la posicin x, por otro lado igual a y (x,y son las coordenadas del cuerpo) entonces sucede lo mismo que en la primera parte se limpia la pantalla y se imprime en una posicin GAME OVER, donde se tiene que pulsar una tecla para salir de la consola (juego).Figura 115. Funcin global main()

En esta funcin es en donde se van a colocar la secuencia de la ejecucin de dicho juego.

Dentro de la funcin global main, se empieza a definir el color de la consola que va a ser rojo y el color del gusano y la comida va a ser verde.

Luego, se inicializa la posicin inicial del gusano, que es un objeto (punto A), el cual se va a ejecutar en esa posicin. Luego a este objeto se le empiezan a aplicar los mtodos dentro de un while que tiene las condiciones del trmino de juego.

Primero se ejecuta el mtodo A.borrar_cuerpo() para borrar la posicin mientras avanza, luego mientras avanza va guardando la posicin con el mtodo A.guardar_posicion(), despus se ejecuta el mtodo A.cuerpo_gus(), el cual va a pintar con asterisco (*) el cuerpo del gusano, se ejecuta el otro mtodo A.come_crece() el cual al comer la comida va a cumplir ciertas condiciones que se definieron, seguidamente se ejecuta el mtodo A.teclear() dos veces para disminuir el retardo y el movimiento, es decir, para que los cambios con las flechas del teclado sean rpidos, finalmente se ejecuta el mtodo A.direccion(), el cual sirve para definir el movimiento del gusano, donde seguidamente se ejecuta una variable velocidad que fue declarado como variable pblica, junto con los mtodos.

Figura 12

B. Consola:

Finalmente, en la figura 13 se muestra el resultado del cdigo hecho en lenguaje c++, dicho resultado sera la aplicacin del juego del snake.Figura 13

OBSERVACIONES

Se observa que al poner dos ves en el main() el mtodo teclear del objeto A (A.teclear()) al cambiar de direccin al gusano con las flechas del teclado se disminua un retardo que haba.

El comando khbit() que est en la figura 8, sirvi para que con un solo toque de la tecla, por ejemplo arriba el gusano se valla en esa direccin sin necesidad de quedarnos pulsando la tecla, ya que dicha tecla se guarda despus en un getch().

En este caso se defini un constructor, para poder colocar ah los valores iniciales de las variables el cual describen al gusano y en el main() se coloca su posicin de inicio y se define un objeto A el cual va a tener todos sus mtodos.

No se us using namespace std, ya que no estaban los comandos cin.get() ni tampoco cout que son propios de la librera del c++.

CONCLUSIONES

Gracias a los conocimientos adquiridos de los laboratorios 10,11 y 12, pero sobre todo del laboratorio 11 y 12 que habla sobre la programacin orientado a objetos (lenguaje c++) se pudo realizar esta aplicacin del snake.

Se concluye que el uso de clases y objetos es muy importante, ya que los mtodos que estn en una clase, no solo se puede aplicar para un objeto sino para varios.

Se concluye que gracias al cdigo ASCII, conociendo el significado de los nmeros, se puede realizar como por ejemplo en este caso generar el marco, luego para el movimiento del gusano y adems para la forma de la comida que es de un rombo pequeo.

El uso del comando gotoxy de la librera fue primordial para esta aplicacin, ya que sirvi para dar las posiciones (coordenadas) al gusano, comida, para el mensaje del GAME OVER y adems para generar el marco.

BIBLIOGRAFA Cherre A, Rafael (2002) Lenguaje de Programacin C++.Net. Lima: s.n. (005.13/CH54).

Cherre A, Rafael (2002) Lenguaje de Programacin C++.Net. Lima: s.n. (005.13/CH54).

Cevallos F. J.(1997). C++ Aplicaciones. Mxico: Ed. Pellegrini, A. D. & Bjorklund D. F. (1998). Applied Chile Study: A