Informe Proyecto

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 12

FACULTAD: TECNOLOGIA

Universitario: Luis Ernesto Jiménez Cruz


Carrera: Ingeniería Electrónica
Docente: ING Evans Balcázar Veizaga
Materia: Programación 1
I. Introduccion
Este proyecto trata básicamente de elaborar un programa que permita interactuar entre el
usuario computador con un juego llama RATON EN EL LABERINTO que este consta de 2
niveles en el modelo original había solo 1 nivel que consta un laberinto de una matriz de
4x4 u el objetivo es llegar a la salida y en este solo vamos a implementar otro nivel cuya
diferencia es una matriz de 5x5. También hemos implementado alguna mejora al código
orinal como el de no pasar las paredes y terminar la implementación del juego automático

II. Antecedentes y Justificación


 Con este proyecto vemos que mediante el uso de matrices aplicada en la
programación se diseñar un juego autodidacta simple pero funcional con el que el
usuario interactúa con el ordenador
 El proyecto tiene el fin de entender como acciones que parece fácil para al usuario
a diferencia en la implementación del código es más difícil de lo que parece.

III. Problema
 Situación problemática
Realizar una aplicación que mediante el uso de matrices permita jugar al RATON
EN EL LABERINTO.
 Formulación del problema
Realizamos el paso correspondiente para realizar la aplicación:
1. Análisis
1.1 Lógico/Matemático
 Usaremos una matriz cuadrada para el juego
 Usuremos un archivo tipo para el cambio de la posición

1.2 Abstracción
Juego/Atributos
 Lab:array[1..MAX_F,1..MAX_C]of integer;
 Fils,Cols:integer;
 Ini,Fin,raton:posicion;
 Cam:array[1..MAX_F*MAX_F]of posicion;
 dimcam,nivel:integer;

comportamientos
 Crear(Form:TLab);
 CrearLab(niv:integer);
 Automatico();
 Dibujar();
 MoverRaton(dir:Direccion)
2. Diseño
2.1 Diseño Formal
JUEGO

 Lab:array[1..MAX_F,1..MAX_C]of integer;
 Fils,Cols:integer;
 Ini,Fin,raton:posicion;
 Cam:array[1..MAX_F*MAX_F]of posicion;
 dimcam,nivel:integer;
 Crear(Form:TLab);
 CrearLab(niv:integer);
 Automatico();
 Dibujar();
 moverRaton(dir:Direccion);

2.2 Diseño procedimental

*Constructor: Crear
p/
fils:=0; Co
cols:=0;
f:=1 .. MAX_F
c:=1 .. MAX_C
Lab[f,c]:=-1;
ctx:=Form;
f:=1 .. MAX_F*MAX_C
Cam[f].fil:=-1;
Cam[f].col:=-1;
Ini.fil:=0;
Ini.col:=0;
Fin.fil:=0;
Fin.col:=0;
*CrearLab: CrearLab
P/( niv ) niv->
1://4x4
Po
fils:=4;
cols:=4;
f:=1 .. fils
c:=1 .. cols
Lab[f,c]:=LN1[f,c];
Ini.fil:=2;
Ini.col:=1;
Fin.fil:=4;
Fin.col:=3;
2:
fils:=5;
cols:=5;
f:=1 .. fils
c:=1 .. cols
Lab[f,c]:=LN2[f,c];
Ini.fil:=1;
Ini.col:=2;
Fin.fil:=4;
Fin.col:=5;
end;
end;
raton:=Ini;
dimcam:=0;
nivel:=niv;
Dibujar();
*Automático: Automático
P/
En la implementación. Po

*Dibujar: Dibujar
P/
En la implementación.
Po

*Mover Ratón:
P/ MoverRaton
En la implementación. dir->
Po

La implementación se verá más adelante.


3. Objetivos
3.1 Objetivo General
 Diseñar un juego simple pero funcional a partir de un lenguaje de
programación (pascal), este juego será desarrollado con matrices.
Dicho juego tendrá tres niveles cada nivel tendrá una matriz
cuadrada

 Objetivo destructivo: que los alumnos reemplacen la imagen


de "cerebro mágico" que tienen de la computadora, y entiendan que
es básicamente una máquina que responde (precisa y rápidamente)
a una serie de instrucciones simples.
 Objetivo constructivo: que los alumnos aprendan que aun
siguiendo simples instrucciones una computadora puede realizar
tareas sumamente complejas y mostrar un comportamiento
pseudointeligente
3.2 Objetivo Especifico
 Demostrar el uso de las matrices y archivos en una sola aplicación
de juego
 Explicar el uso del lenguaje de programación en la aplicación de un
juego

4. Metodología
 Para la realización de este proyecto usaremos la programación
orientada a objetos y eventos que siguen los pasos anteriormente
mencionados
 Definición de Programación Orientada a Objetos (POO) es un
paradigma de programación, es decir, un modelo o un estilo
de programación que nos da unas guías sobre cómo trabajar con él. Se
basa en el concepto de clases y objetos. ... Luego, se
crean objetos individuales a partir de la plantilla de clase
5. Marco Teórico
Es la aplicación de todo lo aprendido en clases como programación orientada
a objetos, arreglos de una dimensión, arreglos de dimensiones, y archivo tipo.
6. Desarrollo
6.1 Implementación
unit ujuego;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Graphics, ExtCtrls, Dialogs, flab;
const
MAX_F=25;
MAX_C=25;
Arriba=1;
Abajo=2;
Izquierda=3;
Derecha=4;
type
Direccion=integer;
Posicion=record
fil,col:integer;
end;
{ Juego }
Juego=class
private
Lab:array[1..MAX_F,1..MAX_C]of integer;
Fils,Cols:integer;
Ini,Fin,raton:posicion;
Cam:array[1..MAX_F*MAX_F]of posicion;
dimcam,nivel:integer;
//ctx es para interactuar con el Formulario
Ctx:TLab;
public
constructor Crear(Form:TLab);
procedure CrearLab(niv:integer);
procedure Automatico();
procedure Dibujar();
procedure MoverRaton(dir:Direccion);
end;
implementation
{ Juego }
constructor Juego.Crear(Form: TLab);
var
f,c:integer;
begin
fils:=0;
cols:=0;
for f:=1 to MAX_F do
for c:=1 to MAX_C do
Lab[f,c]:=-1;
ctx:=Form;
for f:=1 to MAX_F*MAX_C do
begin
Cam[f].fil:=-1;
Cam[f].col:=-1;
end;
Ini.fil:=0;
Ini.col:=0;
Fin.fil:=0;
Fin.col:=0;
end;
procedure Juego.CrearLab(niv: integer);
var
f,c:integer;
LN1:Array[1..4,1..4]of integer =((1,0,1,1),(1,0,0,1),(1,1,0,0),(1,1,1,1));
LN2:Array[1..5,1..5]of integer=((1,1,1,1,1),(0,0,1,1,1),(1,0,1,1,1),(1,0,0,0,1),(1,1,1,0,1));
begin
case niv of
1:begin //4x4
fils:=4;
cols:=4;
for f:=1 to fils do
for c:=1 to cols do
Lab[f,c]:=LN1[f,c];
Ini.fil:=2;
Ini.col:=1;
Fin.fil:=4;
Fin.col:=3;
end;
2:begin
fils:=5;
cols:=5;
for f:=1 to fils do
for c:=1 to cols do
Lab[f,c]:=LN2[f,c];
Ini.fil:=1;
Ini.col:=2;
Fin.fil:=4;
Fin.col:=5;
end;
end;
raton:=Ini;
dimcam:=0;
nivel:=niv;
Dibujar();
end;

procedure Juego.Automatico();
begin
//aqui debe ir codigo de juego automatico
case nivel of
1:begin
MoverRaton(4);
MoverRaton(2);
MoverRaton(4);
MoverRaton(2);
end;
2:begin
MoverRaton(2);
MoverRaton(4);
MoverRaton(4);
MoverRaton(2);
MoverRaton(2);
MoverRaton(4);
end;
end;
end;
procedure Juego.Dibujar;
var
f,c,dx,dy:integer;
img:TImage;
begin
case nivel of
1: begin
ctx.Caption:='Nivel :'+IntToStr(nivel);
ctx.Width:=500;
ctx.Height:=500;
dx:=80;
dy:=80;
for f:=1 to fils do
for c:=1 to cols do
begin
img:=TImage.Create(ctx);
img.Parent:=ctx;
if(lab[f,c]=1)then
img.Picture.LoadFromFile('images/ladrillo.jpg')
else
img.Picture.LoadFromFile('images/pasto.jpg');
img.Left:=f*dx;
img.Top:=c*dy;
img.Width:=dx;
img.Height:=dy;
img.Stretch:=true;
end;
img:=TImage.Create(ctx);
img.Parent:=ctx;
img.Picture.LoadFromFile('images/raton.jpg');
img.Left:=raton.col*dx;
img.Top:=raton.fil*dy;
img.Width:=dx;
img.Height:=dy;
img.Stretch:=true;
end;
2:begin
ctx.Caption:='Nivel :'+IntToStr(nivel);
ctx.Width:=500;
ctx.Height:=500;
dx:=80;
dy:=80;
for f:=1 to fils do
for c:=1 to cols do
begin
img:=TImage.Create(ctx);
img.Parent:=ctx;
if(lab[f,c]=1)then
img.Picture.LoadFromFile('images/ladrillo.jpg')
else
img.Picture.LoadFromFile('images/pasto.jpg');
img.Left:=f*dx;
img.Top:=c*dy;
img.Width:=dx;
img.Height:=dy;
img.Stretch:=true;
end;
img:=TImage.Create(ctx);
img.Parent:=ctx;
img.Picture.LoadFromFile('images/raton.jpg');
img.Left:=raton.col*dx;
img.Top:=raton.fil*dy;
img.Width:=dx;
img.Height:=dy;
img.Stretch:=true;
end;
end;
ctx.Show;
if(raton.fil=ini.fil)and(raton.col=ini.col)then
ShowMessage('En la Entrada ...!!!');
if(raton.fil=fin.fil)and(raton.col=fin.col)then
ShowMessage('Llegaste a la Salida...!!!');
end;

procedure Juego.MoverRaton(dir:Direccion);
begin
//el raton no puede pasar por las paredes
//Mejorar el Codigo
case nivel of
1:begin
case dir of
Arriba:begin
raton.fil:=raton.fil-1;
if ((raton.fil=2)and(raton.col=2))or((raton.fil=3)and(raton.col=2))or((raton.fil=3)and(raton.col=3))or((raton.fil=4)and(raton.col=3))
then
else
begin
ShowMessage('No puede pasar por las paredes');
raton.fil:=raton.fil+1;
end;
end;
Abajo :begin
raton.fil:=raton.fil+1;
if ((raton.fil=2)and(raton.col=2))or((raton.fil=3)and(raton.col=2))or((raton.fil=3)and(raton.col=3))or((raton.fil=4)and(raton.col=3))
then
else
begin
ShowMessage('No puede pasar por las paredes');
raton.fil:=raton.fil-1;
end;
end;
Derecha:begin
raton.col:=raton.col+1;
if ((raton.fil=2)and(raton.col=2))or((raton.fil=3)and(raton.col=2))or((raton.fil=3)and(raton.col=3))or((raton.fil=4)and(raton.col=3))
then
else
begin
ShowMessage('No puede pasar por las paredes');
raton.col:=raton.col-1;
end;
end;
Izquierda:begin
raton.col:=raton.col-1;
if ((raton.fil=2)and(raton.col=2))or((raton.fil=3)and(raton.col=2))or((raton.fil=3)and(raton.col=3))or((raton.fil=4)and(raton.col=3))
then
else
begin
ShowMessage('No puede pasar por las paredes');
raton.col:=raton.col+1;
end;
end;
end;
end;
2:begin
case dir of
Arriba:begin
raton.fil:=raton.fil-1;
if
((raton.fil=2)and(raton.col=2))or((raton.fil=2)and(raton.col=3))or((raton.fil=2)and(raton.col=4))or((raton.fil=3)and(raton.col=4))or((raton.fil=
4)and(raton.col=4))or((raton.fil=4)and(raton.col=5)) then
else
begin
ShowMessage('No puede pasar por las paredes');
raton.fil:=raton.fil+1;
end;
end;
Abajo :begin
raton.fil:=raton.fil+1;
if
((raton.fil=2)and(raton.col=2))or((raton.fil=2)and(raton.col=3))or((raton.fil=2)and(raton.col=4))or((raton.fil=3)and(raton.col=4))or((raton.fil=
4)and(raton.col=4))or((raton.fil=4)and(raton.col=5))then
else
begin
ShowMessage('No puede pasar por las paredes');
raton.fil:=raton.fil-1;
end;
end;
Derecha:begin
raton.col:=raton.col+1;
if
((raton.fil=2)and(raton.col=2))or((raton.fil=2)and(raton.col=3))or((raton.fil=2)and(raton.col=4))or((raton.fil=3)and(raton.col=4))or((raton.fil=
4)and(raton.col=4))or((raton.fil=4)and(raton.col=5)) then
else
begin
ShowMessage('No puede pasar por las paredes');
raton.col:=raton.col-1;
end;
end;
Izquierda:begin
raton.col:=raton.col-1;
if
((raton.fil=2)and(raton.col=2))or((raton.fil=2)and(raton.col=3))or((raton.fil=2)and(raton.col=4))or((raton.fil=3)and(raton.col=4))or((raton.fil=
4)and(raton.col=4))or((raton.fil=4)and(raton.col=5)) then
else
begin
ShowMessage('No puede pasar por las paredes');
raton.col:=raton.col+1;
end;
end;
end;
end;
end;
Dibujar();
end;
end.
1.1 EVENTOS.
unit flaberinto;
{$mode objfpc}{$H+}
Interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,ujuego,flab;
Type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
BDer: TButton;
BIzq: TButton;
BArr: TButton;
BAba: TButton;
Bauto: TButton;
Button2: TButton;
Bauto2: TButton;
procedure BAbaClick(Sender: TObject);
procedure BArrClick(Sender: TObject);
procedure Bauto2Click(Sender: TObject);
procedure BautoClick(Sender: TObject);
procedure BIzqClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure BDerClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ private declarations }
J:juego;
public
{ public declarations }
end;
var
Form1: TForm1;

implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
J:=Juego.Crear(Lab);
J.CrearLab(1);
end;
procedure TForm1.BIzqClick(Sender: TObject);
begin
J.MoverRaton(Izquierda);
end;
procedure TForm1.BArrClick(Sender: TObject);
begin
J.MoverRaton(Arriba);
end;
procedure TForm1.Bauto2Click(Sender: TObject);
begin
J.CrearLab(2);
J.Automatico();
end;
procedure TForm1.BAbaClick(Sender: TObject);
begin
J.MoverRaton(Abajo);
end;
procedure TForm1.BDerClick(Sender: TObject);
begin
J.MoverRaton(Derecha);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
J:=Juego.Crear(Lab);
J.CrearLab(2);
end;
procedure TForm1.BautoClick(Sender: TObject);
begin
J.CrearLab(1);
J.Automatico();
end;
end.
unit flab;
{$mode objfpc}{$H+}

interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;
type
{ TLab }
TLab = class(TForm)
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
private
{ private declarations }
public
{ public declarations }
end;
var
Lab: TLab;
implementation
{$R *.lfm}
{ TLab }
procedure TLab.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
case(key) of
38:begin
Caption:= 'Arriba'
end;
40:begin
Caption:= 'Abajo'
end;
39:begin
Caption:= 'Derecha'
end;
37:begin
Caption:= 'Izquierda'
end;
end;
end;
7. Interfaz Graficas

8. Resultados
Los resultados son los esperados la aplicación funciona correctamente.
9. Conclusiones
De acuerdo con los objetivos planteados el proyecto ha sido un éxito, y hemos
logrado aplicar los conocimientos aduridos a lo largo del semestre en un juego
autodidacta llamado “EL RATON EN EL LABERINTO” mediante el uso de un
lenguaje de programación y matrices.

10. Bibliografía
https://virtual.uagrm.edu.bo/pregrado/course/view.php?id=28094

También podría gustarte