Sie sind auf Seite 1von 5

TRABAJO DE PROGRAMACION:

SE NECESITA DISEAR UN PROGRAMA QUE SIMULE EL COMPORTAMIENTO DE UN


CABALLO DE AJEDREZ, ESTE DEBE POSICIONARSE EN UN EXTREMO DE LA TABLA DE
AJEDREZ, Y LOGRAR QUE EL CABALLO LLEGE AL OTRO EXTREMO DIAGONAL, CUANDO
ESTO SUCEDA EL PROGRAMA SE DETIENE Y MUESTRA EN CUANTOS INTENTOS LOGRO
HACER DICHO MOVIMIENTO.

ANALISIS:
El caballo solo tiene 8 Posibles Movimientos Que son:

El tablero de ajedrez consta de 8 filas, y 8 columnas.

El caballo no puede salirse de los lmites del tablero.

SE PUDO RESOLVER EL PROBLEMA MEDIANTE EL SIGUIENTE CDIGO:


#include "iostream.h"
#include "conio.h"
#include "dos.h"
#include "windows.h"
/*En esta seccin se cargan las libreras estndares de C++ */
********************************
void main()
// se inicia el programa
{
int pf,pc,w[16][16],f,co,opc,npf,npc,c,k,l,d;
/*se declaran las variables*/
clrscr();
//limpia la pantalla del programa completamente
*/en esta seccin el programa comienza a mostrar una serie de mensajes*/
gotoxy(10,10); //se ubica en la posicion 10x,10y para escribir el, siguiente mensaje
cout<<"PROGRAMA PARA SIMULAR EL MOVIMIENTO DE UN CABALLO DE AJEDREZ";
sleep(1);//hace una pausa de 1 segundos antes de continuar la siguiente linea
*********************************************************************************
for(k=1;k<2;k++){
//primer bucle se creo este
for(l=36;l<52;l++){
//bucle con una sentencia de tipo for
gotoxy(35,22);cout<<"cargando";//para simular la carga del programa
sleep(7/5);
//es para darle estetica
gotoxy(l,22);cout<<".";
//y realidad
}
clrscr();
//sirve para limpiar la linea cout<<".".. anterior
}
cout<<"\n\n\t Esta es una guia rapida para que usted pueda entender\n\t\t como funciona
el programa.";
sleep(3);//hace una pausa de 3 segundos antes de continuar la siguiente linea
clrscr();//limpia la pantalla
cout<<"\n\n1.-EL TABLERO DE AJEDREZ CUENTA CON UNA MATRIZ DE 8 X 8.\n";
cout<<"----------------\n|_|_|_|_|_|_|_|_|\n|_|_|_|_|_|_|_|_|\n|_|_|_|_|_|_|_|_|\n|_|_|_|_|_|_|_|_|\n|_|_|_|_
|_|_|_|_|\n|_|_|_|_|_|_|_|_|\n|_|_|_|_|_|_|_|_|\n|_|_|_|_|_|_|_|_|";
getch();//espeera pulsacion de tecla
clrscr();//limpia la pantalla
cout<<"\n\n\n2.-EL CABALLO PUEDE MOVERSE UNICAMENTE DE 8 MANERAS.\n";
getch();
cout<<"----------------\n|_|_|_|_|_|_|_|_|\n|_|_|_|_|_|_|_|_|\n|_|_|8|_|1|_|_|_|\n|_|7|_|_|_|2|_|_|\n|_|_|_|c|
_|_|_|_|\n|_|6|_|_|_|3|_|_|\n|_|_|5|_|4|_|_|_|\n|_|_|_|_|_|_|_|_|";
getch();

clrscr();
cout<<"\n\n3.-SU MISION ES LLEVAR AL CABALLO DE\nUN EXTREMO AL OTRO EN POCOS
INTENTOS\n----------------\n|_|_|_|_|_|_|_|x|\n|_|_|_|_|_|_|_|_|\n|_|_|_|_|_|_|_|_|\n|_|_|_|_|_|_|_|_|\n|_|_|_|_
|_|_|_|_|\n|_|_|_|_|_|_|_|_|\n|_|_|_|_|_|_|_|_|\n|x|_|_|_|_|_|_|_|";
getch();
clrscr();
cout<<"\n\n\t\t\t\t!ESTAS LISTO!";
sleep(1);
clrscr();
cout<<"\n\n\t\tPRESIONE (1) PARA EMPEZAR, (2) PARA SALIR\n";
cin>>d;//pide ingresar al usuario si desea continuar o no
if (d==1){
clrscr();
pf=15;//posicion inicil filas
pc=1;//posicion inicial columnas
gotoxy(14,7);cout<<"";
//Se Dibuja la tablba de 8x8
gotoxy(14,8);cout<<" ";
gotoxy(14,9);cout<<"";
gotoxy(14,10);cout<<" ";
gotoxy(14,11);cout<<"";
gotoxy(14,12);cout<<" ";
gotoxy(14,13);cout<<"";
gotoxy(14,14);cout<<" ";
gotoxy(14,15);cout<<"";
gotoxy(14,16);cout<<" ";
gotoxy(14,17);cout<<"";
gotoxy(14,18);cout<<" ";
gotoxy(14,19);cout<<"";
gotoxy(14,20);cout<<" ";
gotoxy(14,21);cout<<"";
gotoxy(14,22);cout<<" ";
gotoxy(14,23);cout<<"";
gotoxy(15,22);cout<<"";
//posicin donde empieza el caballo

//se dibuja un tablero de ayuda


gotoxy(63,9);cout<<"MOVIMIENTOS";
gotoxy(60,10);cout<<"-----------------\n";
gotoxy(60,11);cout<<"|_|_|_|_|_|_|_|_|\n";
gotoxy(60,12);cout<<"|_|_|_|_|_|_|_|_|\n";
gotoxy(60,13);cout<<"|_|_|8|_|1|_|_|_|\n";
gotoxy(60,14);cout<<"|_|7|_|_|_|2|_|_|\n";
gotoxy(60,15);cout<<"|_|_|_|c|_|_|_|_|\n";
gotoxy(60,16);cout<<"|_|6|_|_|_|3|_|_|\n";
gotoxy(60,17);cout<<"|_|_|5|_|4|_|_|_|\n";
gotoxy(60,18);cout<<"|_|_|_|_|_|_|_|_|";
*****************************************************************************
for(f=1;f<16;f++){
for(co=1;co<16;co++){
w[f][co]=0;

c=0;

//ciclo para cargar las matrices


}

//se pone un contador a 0


while((pf>1)||(pc<15)){ /*aqui se define el ciclo ,mientra la matriz sea diferente a estos
valores el programa siga ejecutando*/
gotoxy(5,2);cout<<"ingrese opcion de movimiento: ";
gotoxy(36,2);
cin>>opc;
//LEE LAS POSICIONES
if(opc==1){
npf=pf-4;
//QUE TOMARA EL CABALLO
npc=pc+2;}
if(opc==2){
//Y SU NUEVA POSICION
npf=pf-2;
npc=pc+4;}
if(opc==3){
npf=pf+2;
npc=pc+4;}
if(opc==4){
npf=pf+4;
npc=pc+2;}
if(opc==5){
npf=pf+4;
npc=pc-2;}
if(opc==6){
npf=pf+2;

npc=pc-4;}
if(opc==7){
npf=pf-2;
npc=pc-4;}
if(opc==8){
npf=pf-4;
npc=pc-2;}
if((npf>=1&&npf<=16)&&(npc>=1&&npc<=16)){ //DEFINE LOS MARGENES DE LA MATRIZ
pf=npf;
pc=npc;
c=c+1;
gotoxy(14+pc,7+pf);cout<<"";

//ESTABLECE LA NUEVA POSICION DEL CABALLO


//CONTADOR DE MOVIMIENTOS
//dibuja la nueva posicion del caballo
}

else{
gotoxy(5,4);cout<<"Movimiento Erroneo Revise su Opcion";
sleep(1);
gotoxy(5,4);clreol();// borra linea y no pantalla como clrscr
}

}
gotoxy(45,1);cout<<"!..BIEN HECHO LO LOGRASTE..!";
//MENSAJE FINAL
gotoxy(47,2);cout<<"EN SOLO "<<" "<<c<<" MOVIMIENTOS"; //MUESTRA LOS N
MOVIMIENTOS REALIZADOS
getch();
}//pone fin al programa