Вы находитесь на странице: 1из 17

CARRERA

INGENIERÍA AUTOMOTRÍZ

TEMA:

Codificar un Juego Creativo mediante el uso de matrices, vectores e intrusiones y funciones

en DEV C++ para el complemento y desarrollo de las destrezas adquiridas en la materia de

Fundamentos de programación de la Universidad de las Fuerzas Armadas-ESPE en el

periodo octubre-febrero 2015-2016.

AÑO LECTIVO:

2015-2016
CAPÍTULO I

EL PROBLEMA
1.1 Planteamiento del problema

En Fundamentos de programación se desarrolla varios programas que ayuda a

comprender como funciona una instrucción o función, en este programa se necesita

desarrollar el código de un Juego Interactivo que utilice matrices y vectores,

demuestre la creatividad de los integrantes.

Es necesario motivar a los estudiantes a realizar estos proyectos, ya que en los

estudiantes se podría decir que falta el desarrollo de la creatividad y entusiasmo para

crear algo llamativo y divertido es por eso que mediante el uso de bibliografías se

codificará un Juego en el cual se visualice una interfaz con colores, posiciones, e

interacción con el usuario.

EFECTO

No desarrollar la
Desinterés de la materia Bajas calificaciones
creatividad

Falta de creatividad en Fundamentos de Programación

No entender los temas No aprender a pensar


Perder la materia
de clase mejor

CAUSA
1.2 Formulación del problema

¿De qué manera influye en los estudiantes no desarrollar su creatividad en la Materia de

Fundamentos de Programación de la Universidad de las Fuerzas Armadas “ESPE”?

1.3 Objetivos de la Investigación

Objetivo General

Codificar un Juego mediante el uso de vectores, matrices, intrusiones y funciones óptimas

en DEV C++ para el complemento y desarrollo de las destrezas adquiridas en la materia

de Fundamentos de Programación de la Universidad de las Fuerzas Armadas-ESPE en el

periodo octubre-febrero 2015-2016.

Objetivos Específicos:

 Investigar nuevas funciones en Dev C++ a través del uso de libros, páginas web, etc.

 Vincular el conocimiento del estudio de la materia de Fundamentos de Programación

con el desarrollo de un Juego creativo.

 Comprobar que el programa (Juego) funcione correctamente a través de pruebas de

computador y de escritorio.

1.4 Justificación

Codificar un programa que simule un Juego, porque al investigar como colocar

movimientos, sonidos, colores, y más funciones se adquirirá nuevos conocimientos, en

un futuro ayudara a de crear programas con mayor creatividad y mejor funcionabilidad.


CAPÍTULO II
MARCO TEÓRICO

2.1 Colores en Dev C++

Existen dos formas de obtener color en la pantalla de Dev:

system("color f2");

El cambio de color de la consola entera, siendo XX caracteres hexadecimales, cambia

totalmente el color de la consola.

SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE),X);

Con el comando se puede cambiar el color de texto y de fondo cuando el código del

programa se ejecute, siendo X un numero entre 0 y 255.

Numeración de colores de texto:

Numero o letra Color

0 negro

1 Azul

2 Verde

3 Aguamarina

4 Rojo

5 Purpura

6 Amarillo

7 Blanco

8 Gris

9 Azul claro
Numeración de colores de fondo de pantalla:

A Verde claro

B Aguamarina claro

C Rojo claro

D Purpura claro

E Amarillo claro

F Blanco brillante

Para calcular X es muy sencillo y se utiliza una fórmula:

𝑋 = 𝐴 ∗ 16 + 𝐵

Donde:

A=Color de Fondo

B=Color de Texto

Retardo en segundos

A diferencia del caso anterior, para poder hacer un retardo en segundos, se debe usar

la librería dos.h y usar el comando sleep; nótese que la s es minúscula en este caso.

#include <stdio.h>

#include <iostream.h>

#include <conio.h>

#include <time.h>
Como utilizar el código ASCII:

Sin saberlo lo utilizas todo el tiempo, cada vez que utilizas algún sistema informático;

pero si lo que necesitas es obtener algunos de los caracteres no incluidos en tu teclado

debes hacer lo siguiente, por ejemplo:

Como escribir con el teclado, o tipear:

WINDOWS: en computadoras con sistema operativo como Windows 8, Win 7, Vista,

Windows Xp, etc.

Para obtener la letra, caracter, signo o símbolo "å": ( Letra a minúscula con anillo )

en ordenadores con sistema operativo Windows:

 Presiona la tecla "Alt" en tu teclado, y no la sueltes.

 Sin dejar de presionar "Alt", presiona en el teclado numérico el número "134", que es

el número de la letra o símbolo "å" en el código ASCII.

 Luego deja de presionar la tecla "Alt"

Nuevas librerías:

La iostream

Es la biblioteca estándar en C++ para poder tener acceso a los dispositivos estándar

de entrada y/o salida. En la iostream se encuentran definidas las clases ios (misma

que es la base para las clases que implementen operaciones de entrada y/o salida de

datos), istream (para operaciones de entrada) y ostream (para operaciones de salida).

string.h

Es un archivo de la Biblioteca estándar del lenguaje de programación C que contiene

la definición de macros, constantes, funciones y tipos y algunas operaciones de

manipulación de memoria.
Además, las funciones para cadenas de caracteres sólo trabajan con conjuntos de

caracteres ASCII o extensiones ASCII compatibles.

Es por eso que al declarar esta librería se puede utilizar lo siguiente:

#define ARRIBA 72

#define IZQUIERDA 75

#define DERECHA 77

#define ABAJO 80

#define ESC 27

#define ENTER 13

Estas declaraciones nos utilizar los cuatro movimientos en la pantalla para poder

movernos con libertad por la misma salir y dar enter.


Función para ocultar el cursor

HANDLE pantalla;

pantalla=GetStdHandle(STD_OUTPUT_HANDLE);

CONSOLE_CURSOR_INFO opc;

Esta estructura tiene dos atributos q nos permite controlar la apariencia del cursor en

pantalla.

opc.dwSize = 30 ; es una variable tipo entera que puede tomar valores de 1 a 100
depende el valor es el estilo del cursor en la pantalla.

ENTRE MAS GRANDE ES EL NUMERO MAS GRANDE ES EL CURSOR

opc.bVisible = FALSE ; (SE ESCRIBE EN MAYÚSCULAS) este atributo puede


tomar valores de verdad o falsedad, si es verdadero el cursor se muestra en pantalla y
si es falso no se muestra.

SetConsoleCursorInfo(pantalla, &opc); es una función que nos permite contralar


las características del cursos q se muestra en pantalla.

MOVIMIENTO

Para mover se escoge una flecha mover para mover se lo asigna a una variable de tipo
char ejemplo:

char cTecla;
cTecla = getch(); lee el numero t
switch(cTecla)
{
case 72:
y-=2;break;
case 80:
y+=2;break;
case 75:
x-=2;break;
case 77:
x+=2;break;
CAPÍTULO III

DESARROLLO DEL TEMA

3.1 Problema:
Realizar un juego interactivo con el usuario, que permita la utilización de vectores,
matrices y funciones óptimas.
 Objetivo:
Realizar un programa que genere un juego que simule los carritos chocones y se
mueva dentro de la pantalla delimitada por líneas y se muestre su vida y el estado de
su salud (barra de vida) aplicando diferentes tipos de funciones uso de matrices y
vectores.
 Datos de entrada: pulsaciones de las techas de dirección.
 Datos de salida: 2 carritos que se chocan, vida, salud del carrito.
 Datos de proceso:
Definir librerías
Definir funciones
Programa principal
Instrucciones
Imprimir complementos del juego

 Diseño:
 Codificación:
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include<stdlib.h>
#include <windows.h>
#include<posicion.h>
// numeros de las teclas
#define ARRIBA 72
#define IZQUIERDA 75
#define DERECHA 77
#define ABAJO 80
#define ESC 27
#define ENTER 13
// FUNCIONES
void carro(int x, int y);
void calle(int x1, int x2, int y2);
void borrar(int x, int y);
void borrar1(int x, int y);
void explosion(int x, int y);
//void datos(int mat[1][4], int n, int m);
void mover(int vect[], int x, int y);
void mover_op(int vect2[],int x, int y);
void oponentes(int x, int y);
void ocultarcursor();
int choque(int x, int y, int x1, int y1, int salud);
void vidas_salud(int vid, int salud, int pun);
// PROGRAMA PRINCIPAL
main()
{
int x=60, y=23, m=4, cant=0, n=3, vector[2], x1=42, y1=2, vector2[2],j=40, i;
ocultarcursor();
pantalla(10,4,80,20);
ubicaxy(30,6);printf("BIENVINIDO A NUESTRO JUEGO");
ubicaxy(28,7);printf("******************************");
ubicaxy(15,10);printf("Este juego se trata de evitar chocar o colisionar con los");
ubicaxy(15,11);printf("obstaculos que se asomen en tu camino");
ubicaxy(30,15);printf("COMENCEMOS\n");
ubicaxy(15,17);printf(" ");
system("pause");
system("cls");
ubicaxy(45,6);printf("CARGANDO...");
for(i=1;i<=10;i++)
{
ubicaxy(j,8);printf("%c",219);
j+=2;
Sleep(700);
}
system("cls");
carro(x,y);
calle(39,81,28);
vidas_salud(n, m, cant); // 4 es el tamaño de la barra de salud y 3 las vidas q le otorga el juego
do
{
/*char cTecla;
cTecla = getch();*/
mover(vector, x, y);
Sleep(40);
borrar(x,y);
x=vector[0];
y=vector[1];
carro(x, y);
vidas_salud(n, m, cant);
mover_op(vector2,x1,y1);
borrar(x1,y1);
x1=vector2[0];
y1=vector2[1];
oponentes(x1,y1);
m=choque(x,y,x1,y1,m);
cant+=4;
Sleep(10);// para que no se sature el procesador por la gran cantidad de codigo
if (m==0)
{
n--;
m=4;
ubicaxy(20,15);printf(" ");
ubicaxy(20,16);printf(" ");
borrar(x,y);
explosion(x,y);
Sleep(400);
borrar1(x,y);
Sleep(500);
borrar(x,y);
x=60;y=23;
}
}while(n>0);
getch();
}
void carro(int x, int y)
{
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), 1);
ubicaxy(x,y); printf("*****");x--;y++;
ubicaxy(x,y); printf("*<+-+>*");y++;
ubicaxy(x,y); printf("*<+-+>*");y++;x++;
ubicaxy(x,y); printf("*****");
return;
}
void calle(int x1, int x2, int y2)
{
int fil,col;
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), 2);
for (fil=0; fil<=27; fil++)
{
ubicaxy(x1, fil); printf ("%c", 186);
ubicaxy(x2, fil); printf ("%c", 186);
}
ubicaxy(x1,y2);printf("%c",200);
ubicaxy(x2,y2);printf("%c",188);
for (col=(x1+1); col<=(x2-1); col++)
{
ubicaxy(col, 0 ); printf ("%c",205);
ubicaxy(col, y2 ); printf ("%c",205);
}
ubicaxy(x1,0);printf("%c",201);
ubicaxy(x2,0);printf("%c",187);
return;
}
void borrar(int x, int y)
{
ubicaxy(x,y); printf(" ");x--;y++;
ubicaxy(x,y);printf(" ");y++;
ubicaxy(x,y);printf(" ");y++;x++;
ubicaxy(x,y); printf(" ");
}
void oponentes(int x, int y)
{
ubicaxy(x,y); printf("***");x--;y++;
ubicaxy(x,y); printf("*****");y++;x++;
ubicaxy(x,y); printf("***");y++;
}
void ocultarcursor()
{
HANDLE pantalla;
pantalla=GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO opc; // esta estructura tiene dos atributos q nos permite
controlar la apariencia del cursor en pantalla
opc.dwSize = 30 ; // es una variable tipo entera que puede tomar valores de 1 a 100
depende el valor es el estilo del cursor en la pantalla
// ENTRE MAS GRANDE ES EL NUMERO MAS GRANDE ES EL CURSOR
opc.bVisible = FALSE ; // (SE ESCRIBE EN MAYSCULAS) este atributo puede tomar
valores de verdad o falcesad.. si es verdadero el cursor se muestra en pantalla y si es falso no se
muetra

SetConsoleCursorInfo(pantalla, &opc); // es una funcion que nos permite contralar las


caracteristicas del cursos q se muestra en pantalla
}
void vidas_salud(int vid, int salud, int pun)
{
int i, x=20, j;
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), 9);
ubicaxy(x,5);printf("%d", pun);
ubicaxy(x,13);printf("Salud:");
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), 2);
for (i=1; i<=salud; i++)
{
ubicaxy(x,15);printf("%c", 219);
x+=2;
}
x=20;
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), 9);
ubicaxy(x,17);printf("Vidas:");
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), 4);
for (j=1; j<=vid; j++)
{
ubicaxy(x,19);printf("%c", 207);
x++;
}
}
void explosion(int x, int y)
{
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), 6);
ubicaxy(x,y); printf("***");x--;y++;
ubicaxy(x,y); printf("*****");x++;y++;
ubicaxy(x,y); printf("***");y++;
return;
}
void borrar1(int x, int y)
{
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), 6);
ubicaxy(x,y); printf("* *");x--;y++;
ubicaxy(x,y); printf("* * *");x++;y++;
ubicaxy(x,y); printf("* *");y++;
return;
}
void mover(int vect[], int x, int y)
{
char cTecla;
cTecla = getch();// lee el numero t
switch(cTecla)
{
case 72:
y-=2;break;
case 80:
y+=2;break;
case 75:
x-=2;break;
case 77:
x+=2;break;
}
if(y==0 || y>=24)
{
y=23;
}
if(x<=41 || x==76)
{
x=60;
}
vect[0]=x; vect[1]=y;
return;
}
void mover_op(int vect2[],int x, int y)
{
y++;
if (y>=24)
{
x=rand()%34 +42;
y=3;
}
vect2[0]=x;
vect2[1]=y;
}
int choque(int x, int y, int x1, int y1, int salud)
{
int i=x1, j=y1;
x+=5; y+=3;
if (x1>=x & y1>=y)
{
salud--;
}
return(salud);
}
CAPÍTULO IV

CONCLUSIONES Y RECOMENDACIONES

4.1 Conclusiones

 Utilizar nuevas funciones en el programa hizo que se vea estéticamente mejor a la ves
transformar lo aprendido en el aula para aplicarlo en el programa.

 Las nuevas librerías permiten utilizar diferentes instrucciones para mejor un


programa como es el movimiento de una posición a otra, el tiempo, color, y el
tamaño.

4.2 Recomendaciones

 Estudiar diferentes librerías del lenguaje Dev C++ para decidir cuales se van a
emplear en la codificación del programa pues al momento de ejecutarlo evitemos
errores.

 Realizar los programas con funciones e instrucciones, matrices y vectores que se


puedan manejar y comprender para que al compilarlo no se tenga ningún problema
en el código, colocar nombres lógicos en las diferentes variables para que no ocurra
confusiones en el instante de la codificación.

 Investigar toda la información necesaria para hacer el programa requerido y fortalecer


el conocimiento del estudiante.