You are on page 1of 16

PROGRAMACIN APLICADA I

Laboratorio N 10,11 y 12
Libreras, Clases y objetos, mtodos
INFORME
Integrantes:

Mike Morales Apesteguia


Robert Guevara Cochachi
Seccin C15-04-A
Profesor: 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 carpeta include del 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 <suma.h> Cuando el fichero suma.h se 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 de suma.h sin necesidad de copiar el codigo,
tal y como ilustra el programa siguiente:
#include <stdio.h>
#include <suma.h>
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 OBJETOS


Atributos:
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 palabra miembro para 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
Clase CRender posee 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 fichero conio-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
a Herramientas -> Opciones del compilador, en la ficha Compilador activa la
casilla Aadir estos comandos a la lnea de comandos del linker y el cuadro que est
debajo escribe -lconio (
Luego abre el compilador, vas a Archivo -> Nuevo -> Proyecto y
pestaa Basic seleccionas Console Application y das click enAceptar:

en

la

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 <stdio.h>
#include <conio2.h>
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 <conio2.h>, 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 7
4.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 8
4.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 10
4.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 11
5. 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 <iostream> 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 <conio2.h> 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
(005.13/CH54).

(2002)

Lenguaje

de

Programacin

Cevallos F. J.(1997). C++ Aplicaciones. Mxico: Ed.


Pellegrini, A. D. & Bjorklund D. F. (1998). Applied Chile Study: A

C++.Net.

Lima:

s.n.