00:00
00:00
ORHX
No el mejor usuario de este sitio web

Robertototototototototototototototototototototototototototototototototototototototototo Higgs Xavier @ORHX

Pelotudo pero no tanto

Soy vago

E=mc^2

Peronistan

Joined on 1/17/21

Level:
17
Exp Points:
3,206 / 3,210
Exp Rank:
14,518
Vote Power:
5.94 votes
Rank:
Police Officer
Global Rank:
18,530
Blams:
246
Saves:
285
B/P Bonus:
10%
Whistle:
Normal
Medals:
27

ORHX's News

Posted by ORHX - 2 weeks ago


Jaja se fue a la mierda el pico day, pero bueno feliz CUMple Tomi Fulp


Posted by ORHX - 1 month ago


Dia de los hombres de tanque con mariguana


2

Posted by ORHX - April 3rd, 2022


Yo vengo aquí para votar cinco piezas de arte para tener mis 10xp diarios y presumir mi nivel de cuenta B)


Posted by ORHX - April 1st, 2022


Bromita


2

Posted by ORHX - February 26th, 2022


La trilogía de las guerras mundiales, ya quiero ver el final


1

Posted by ORHX - February 14th, 2022


Del espacio le llego algo muy especial,

lo atrapo y todos sus secretos el sabrá,

con super poderes el cambió y ahora es...


¡Ben 10!


Si lo vez prepárate pues te sorprenderá,

en extraterrestre él se convertirá,

y en un segundo en su forma cambiará es...


¡Ben 10!


y cualquier caso resolverán ben será el bueno en cualquier lugar,

el miedo nunca lo detendrá

y de los rufianes él nos salvará...


Ben 10


4

Posted by ORHX - February 7th, 2022


A las 3 se va para el beauty

A las 4 va pa' el mall

Para eso de las 5 esta a vapor

Se hizo las bubies y el booty viste de Christian Dior


Activa a todas sus amigas con un call


La bebecita bebe lean y bebe whisky

Fuma marihuana y también se mete picky

Senda bellacona, frikitona, friky friky

Es media salvaje, ella es adicta a mi dicky


Le mete al lean y le mete al whisky

Fuma marihuana y también se mete picky

Senda bellacona, frikitona, friky friky

En la cama una salvaje y la castigo con mi dicky


Baby toma, dos chollys, en un vaso de lean

Dando más vueltas que un patín

En la cama ya tiene el swing

Con el pelo sayayin

En el lexus dando vueltas con mi Quenn

No la mires, evitate el motín

Whisky, toma, toma, va quedar en coma

Ojos chiquititos, falta que hable en otro idioma

Con sus posiciones parece de goma, a mi me encanta

Cuando llama, para que llegue y me la coma


Le mete al lean y le mete al whisky

Fuma marihuana y también se mete picky

Senda bellacona, frikitona, friky friky

En la cama una salvaje y la castigo con mi dicky


La bebecita bebe lean y bebe whisky

Fuma marihuana y también se mete picky

Senda bellacona, frikitono, friky friky

Es media salvaje, ella es adicta a mi dicky


Tags:

5

Posted by ORHX - January 23rd, 2022


Unidad básica de una imagen digitalizada en pantalla a base de puntos de color o en escala de grises dia


3

Posted by ORHX - December 2nd, 2021


Lo que dice en el titulo


Posted by ORHX - October 28th, 2021


Se que a nadie le interesa esto, pero es mi cuenta y publico lo que se me cante

Programe Ajedrez en C++

A ver, deberia conseguir un motor grafico, programar una IA que juegue contra ti, cambiar el programa casa la mitad para que funcione con mouse, y probablemente agrege fichas que nunca se hallan visto,blablabla

Pueden descargarlo en este archivo drive o copiarlo de este post, y por si se lo prenguntan, si, tengo pensado crear juegos y subirlos aqui

Ah, y cualquier recomendacion o error que encuentren me lo dicen ok?

Ahora si, aqui esta el (desastre de) codigo:

#include<iostream>

#include<stdlib.h>

using namespace std;

char tabla[8][8];//nos servira para la ubicacion de las fichas

char f_elims[7][2];//fichas eliminadas

bool comprobarpos(int,int,int,int,int);//necesaria para el movimiento

int cambiarcolpos(int,int);

int cambiarcol(int);

bool buscar(int,int,int,bool);//elimina las fichas

bool moverf(int &,int &,int &,bool &,int,int);//mueve las fichas

bool moverf_c(int &,int &,int &,bool &,int,int);//movimiento para el caballo

int moverf_c_v(int);

bool moverf_r(int &,int &,int &,bool &,int,int);//para el rey

int cambiarv(int);

class ficha{

public:

int color;

int px;//posicion vertical

int py;//posicion horizontal

bool elim;//eliminado o no

ficha(int,int,int,bool);

};

ficha::ficha(int _color,int _px,int _py,bool _elim){

color=_color;

px=_px;

py=_py;

elim=_elim;

}

class torre:public ficha{

public:

char sim;

  torre(int,int,int,bool,char);

  bool mostrarop(int);

  bool movert();

};

torre::torre(int _color,int _px,int _py,bool _elim,char _sim):ficha(_color,_px,_py,_elim){

sim=_sim;

}

bool torre::mostrarop(int n){

int op;

 bool romper=false;

 do{

  cout<<"Opciones para la torre "<<n<<":\n1-Comer y/o mover torre\n2-Volver atras\nElija una opcion:\n";

  cin>>op;

  switch(op){

   case 1:romper=movert();break;

   case 2:return false;

   default:cout<<"No ha ingresado una opcion correcta\n";

  }

 }while((op<1)||(op>2));

 return romper;

}

bool torre::movert(){//las funciones en cada ficha son practicamente las mismas

 int op,op2;

 while(true){

  cout<<"Seleccione de que lado se desea mover(1 hacia arriba,2 hacia la derecha,3 hacia abajo,4 hacia la izquierda) o ingrese 0 para salir: ";cin>>op;

  if(op==0)return false;

  if((op<1)||(op>4)){

  cout<<"Opcion incorrecta. Intentelo de nuevo\n";

}else break;

 }

 while(true){

  cout<<"Ingrese la cantidad de casillas que se desea mover, o ingrese 0 para salir: ";cin>>op2;

  if(op2==0)return false;

  if((op2<0)||(op2>7)){

   cout<<"Movimiento ilegal. Intentelo de nuevo\n";

  }else{

   switch(op){

    case 1:return moverf(color,px,py,elim,op2,0);break;

case 2:return moverf(color,px,py,elim,0,op2);break;

case 3:return moverf(color,px,py,elim,0-op2,0);break;

case 4:return moverf(color,px,py,elim,0,0-op2);break;

}

  }

 }

}

torre *t[4];//prefiero declararlas globalmente para su uso en otras funciones

class alfil:public ficha{

public:

char sim;

alfil(int,int,int,bool,char);

bool mostrarop(int);

bool movera();

};

alfil::alfil(int _color,int _px,int _py,bool _elim,char _sim):ficha(_color,_px,_py,_elim){

sim=_sim;

}

bool alfil::mostrarop(int n){

 int op;

 bool romper=false;

 while(true){

  cout<<"Opciones para el alfil "<<n<<":\n1-Comer y/o mover alfil\n2-Volver atras\nElija una opcion:\n";cin>>op;

  switch(op){

   case 1:romper=movera();break;

   case 2:return false;

   default:cout<<"No ha ingresado una opcion correcta\n";

  }

  if(op==1)break;

 }

 return romper;

}

bool alfil::movera(){

int op,op2;

while(true){

cout<<"Ingrese 1 para moverse hacia arriba a la derecha, 2 para arriba a la izquierda, 3 para abajo a la izquierda, 4 para abajo a la derecha, o 0 para salir:\n";cin>>op;

if(op==0){

return false;

}

if((op<1)||(op>4)){

cout<<"No ha seleccionado una opcion posible.\n";

}else{

while(true){

cout<<"Elija cuantas casillas se desea mover, o seleccione 0 para salir:\n";cin>>op2;if(op2==0)return false;

switch(op){

case 1:return moverf(color,px,py,elim,op2,op2);break;

case 2:return moverf(color,px,py,elim,op2,0-op2);break;

case 3:return moverf(color,px,py,elim,0-op2,0-op2);break;

case 4:return moverf(color,px,py,elim,0-op2,op2);break;

}

}

}

}

}

alfil *a[4];

class caballo:public ficha{

public:

char sim;

caballo(int,int,int,bool,char);

bool mostrarop(int);

bool moverc();

};

caballo::caballo(int _color,int _px,int _py,bool _elim,char _sim):ficha(_color,_px,_py,_elim){

sim=_sim;

}

bool caballo::mostrarop(int n){

int op;

 bool romper=false;

 do{

  cout<<"Opciones para el caballo "<<n<<":\n1-Comer y/o mover caballo\n2-Volver atras\nElija una opcion:\n";

  cin>>op;

  switch(op){

   case 1:romper=moverc();break;

   case 2:return false;

   default:cout<<"No ha ingresado una opcion correcta\n";

  }

 }while((op<1)||(op>2));

 return romper;

}

bool caballo::moverc(){

int op,op2;

while(true){

cout<<"Ingrese 1 para moverse hacia arriba, 2 hacia la derecha, 3 para abajo, 4 para la izquierda, o 0 para salir:\n";cin>>op;

if(op==0){

return false;

}

if((op<1)||(op>4)){

cout<<"No ha seleccionado una opcion posible.\n";

}else{

while(true){

switch(op){

case 1:cout<<"Seleccione 1 para moverse a la izquierda, 2 para la derecha o 0 para salir: ";cin>>op2;return moverf_c(color,px,py,elim,2,moverf_c_v(op2));

case 2:cout<<"Seleccione 1 para moverse hacia arriba, 2 hacia abajo o 0 para salir: ";cin>>op2;return moverf_c(color,px,py,elim,moverf_c_v(op2),2);

case 3:cout<<"Seleccione 1 para moverse a la izquierda, 2 para la derecha o 0 para salir: ";cin>>op2;return moverf_c(color,px,py,elim,-2,moverf_c_v(op2));

case 4:cout<<"Seleccione 1 para moverse hacia arriba, 2 hacia abajo o 0 para salir: ";cin>>op2;return moverf_c(color,px,py,elim,moverf_c_v(op2),-2);

}

}

}

}

}

caballo *c[4];

class dama:public ficha{

public:

char sim;

dama(int,int,int,bool,char);

bool mostrarop(int);

bool moverd();

};

dama::dama(int _color,int _px,int _py,bool _elim,char _sim):ficha(_color,_px,_py,_elim){

sim=_sim;

}

bool dama::mostrarop(int n){

int op;

 bool romper=false;

 do{

  cout<<"Opciones para la dama "<<n<<":\n1-Comer y/o mover dama\n2-Volver atras\nElija una opcion:\n";

  cin>>op;

  switch(op){

   case 1:romper=moverd();break;

   case 2:return false;

   default:cout<<"No ha ingresado una opcion correcta\n";

  }

 }while((op<1)||(op>2));

 return romper;

}

bool dama::moverd(){

int op,op2;

while(true){

cout<<"Ingrese 1 para moverse hacia arriba, 2 para arriba a la der, 3 hacia la der, 4 para abajo a la der, 5 hacia abajo, 6 hacia abajo a la izq, 7 hacia la izq, 8 hacia arriba a la izq, o 0 para salir:\n";cin>>op;

if(op==0){

return false;

}

if((op<1)||(op>8)){

cout<<"No ha seleccionado una opcion posible.\n";

}else{

while(true){

cout<<"Elija cuantas casillas se desea mover, o seleccione 0 para salir:\n";cin>>op2;if(op2==0)return false;

switch(op){

case 1:return moverf(color,px,py,elim,op2,0);break;

case 2:return moverf(color,px,py,elim,op2,op2);break;

case 3:return moverf(color,px,py,elim,0,op2);break;

case 4:return moverf(color,px,py,elim,0-op2,op2);break;

case 5:return moverf(color,px,py,elim,0-op2,0);break;

case 6:return moverf(color,px,py,elim,0-op2,0-op2);break;

case 7:return moverf(color,px,py,elim,0,0-op2);break;

case 8:return moverf(color,px,py,elim,op2,0-op2);break;

}

}

}

}

}

dama *d[2];

class rey:public ficha{

public:

char sim;

rey(int,int,int,bool,char);

bool mostrarop(int);

bool moverr();

};

rey::rey(int _color,int _px,int _py,bool _elim,char _sim):ficha(_color,_px,_py,_elim){

sim=_sim;

}

bool rey::mostrarop(int n){

int op;

 bool romper=false;

 do{

  cout<<"Opciones para el rey "<<n<<":\n1-Comer y/o mover rey\n2-Volver atras\nElija una opcion:\n";

  cin>>op;

  switch(op){

   case 1:romper=moverr();break;

   case 2:return false;

   default:cout<<"No ha ingresado una opcion correcta\n";

  }

 }while((op<1)||(op>2));

 return romper;

}

bool rey::moverr(){

int op,op2;

while(true){

cout<<"Ingrese 1 para moverse hacia arriba, 2 para arriba a la der, 3 hacia la der, 4 para abajo a la der, 5 hacia abajo, 6 hacia abajo a la izq, 7 hacia la izq, 8 hacia arriba a la izq, o 0 para salir:\n";cin>>op;

if(op==0){

return false;

}

if((op<1)||(op>8)){

cout<<"No ha seleccionado una opcion posible.\n";

}else{

while(true){

switch(op){

case 1:return moverf(color,px,py,elim,1,0);

case 2:return moverf(color,px,py,elim,1,1);

case 3:return moverf(color,px,py,elim,0,1);

case 4:return moverf(color,px,py,elim,-1,1);

case 5:return moverf(color,px,py,elim,-1,0);

case 6:return moverf(color,px,py,elim,-1,-1);

case 7:return moverf(color,px,py,elim,0,-1);

case 8:return moverf(color,px,py,elim,1,-1);

}

}

}

}

}

rey *r[2];

class peon:public ficha{//posiblemente la ficha peor programada

 public:

  char sim;

  bool movido;

  peon(int,int,int,bool,char,bool);

  bool mostrarop(int);

  bool movpe();

  bool movpeon();

  bool comerpe();

  bool cambiarf();

};

peon::peon(int _color,int _px,int _py,bool _elim,char _sim,bool _movido):ficha(_color,_px,_py,_elim){

 sim=_sim;

 movido=_movido;

}

bool peon::mostrarop(int n){

 int op;

 bool romper=false;

 do{

  cout<<"Opciones para el peon "<<n<<":\n1-Mover peon 1 espacio hacia delante\n2-Comer una ficha\n";

  if(movido==false){

   cout<<"3-Mover dos casillas\n";

  }

  if((color==0)&&(px==7)){

  cout<<"4-Volver atras\n5-Cambiar peon por una ficha eliminada\nElija una opcion:\n";

}else if((color==1)&&(px==0)){

cout<<"4-Volver atras\n5-Cambiar peon por una ficha eliminada\nElija una opcion:\n";

}else{

cout<<"4-Volver atras\nElija una opcion:\n";

}

  cin>>op;

  switch(op){

   case 1:romper=movpe();break;

   case 2:romper=comerpe();break;

   case 3:if(movido==true){cout<<"No puede hacer eso.\n";system("pause");}else romper=movpeon();break;

   case 4:return false;

   case 5:if(((color==0)&&(px!=7))||((color==1)&&(px!=0))){cout<<"No puede hacer eso.\n";system("pause");return false;}else{romper=cambiarf();}break;

   default:cout<<"No ha ingresado una opcion correcta\n";

  }

 }while((op<1)||(op>4));

 return romper;

}

bool peon::movpe(){

 if(comprobarpos(color,px,py,cambiarcolpos(color,1),0)==true){

  cout<<"Movimiento ilegal, hay una ficha de tu equipo en ese lugar.\n";system("pause");return false;

 }else{

  if(color==0){

   if((px+1)>7){

    cout<<"Movimiento ilegal, se sale del tablero.\n";system("pause");return false;

   }

   px++;

   movido=true;

  }else{

   if((px-1)<0){

    cout<<"Movimiento ilegal, se sale del tablero.\n";system("pause");return false;

   }

   px--;

   movido=true;

  }

  return true;

 }

}

bool peon::movpeon(){

 if(comprobarpos(color,px,py,cambiarcolpos(color,2),0)==true){

  cout<<"Movimiento ilegal, hay una ficha obstruyendo el paso.\n";system("pause");return false;

 }else{

  if(color==0){

   px+=2;

   movido=true;

  }else{

   px-=2;

   movido=true;

  }

  return true;

 }

}

bool peon::comerpe(){

 int op=0;

 do{

  cout<<"Ingrese a que lado desea moverse(1-Izquierda, 2-Derecha),ingrese 3 para cancelar: ";cin>>op;

  if((op<1)||(op>3)){

   cout<<"No ha ingresado una opcion correcta.";

  }else if(op==3){

   return false;

  }else{

   break;

  }

 }while(true);

  if(color==0){

   if(op==1){

    if((px+1>7)||(py-1<0)){

     cout<<"Movimiento ilegal, se sale del tablero.\n";system("pause");return false;

    }

    if(buscar(cambiarcol(color),px+1,py-1,false)==false){

    cout<<"No hay una ficha enemiga en esa ubicacion.\n";system("pause");return false;

}

    px++;

    py--;

   }else{

    if((px+1>7)||(py+1>7)){

     cout<<"Movimiento ilegal, se sale del tablero.\n";system("pause");return false;

    }

    if(buscar(cambiarcol(color),px+1,py+1,false)==false){

    cout<<"No hay una ficha enemiga en esa ubicacion.\n";system("pause");return false;

}

    px++;

    py++;

   }

  }else{

   if(op==1){

    if((px-1<0)||(py-1<0)){

     cout<<"Movimiento ilegal, se sale del tablero.\n";system("pause");return false;

    }

    if(buscar(cambiarcol(color),px-1,py-1,false)==false){

    cout<<"No hay una ficha enemiga en esa ubicacion.\n";system("pause");return false;

}

    px--;

    py--;

   }else{

    if((px+1>7)||(py+1>7)){

     cout<<"Movimiento ilegal, se sale del tablero.\n";system("pause");return false;

    }

    if(buscar(cambiarcol(color),px-1,py+1,false)==false){

    cout<<"No hay una ficha enemiga en esa ubicacion.\n";system("pause");return false;

}

    px--;

    py++;

   }

  }

  movido=true;

  return true;

 }

bool peon::cambiarf(){

int op=0;

while(true){

for(int i=0;i<8;i++){

if(f_elims[i][color]!=' '){

cout<<"Ficha '"<<f_elims[i][color]<<"' disponible para intercambiar.\n";

}

}

cout<<"Elija una opcion, o ingrese 0 para salir:\n";cin>>op;

if(op==0)return false;

if(f_elims[op][color]==' '){

cout<<"Esta ficha no esta disponible.\n";system("pause");

}else{

switch(op){//se autoelimina y cambia los valores de la ficha seleccionada

case 1:buscar(color,px,py,false);t[0+color*2]->elim=false;t[0+color*2]->px=px;t[0+color*2]->py=py;f_elims[0][color]=' ';break;

case 2:buscar(color,px,py,false);t[1+color*2]->elim=false;t[1+color*2]->px=px;t[1+color*2]->py=py;f_elims[1][color]=' ';break;

case 3:buscar(color,px,py,false);a[0+color*2]->elim=false;a[0+color*2]->px=px;a[0+color*2]->py=py;f_elims[2][color]=' ';break;

case 4:buscar(color,px,py,false);a[1+color*2]->elim=false;a[1+color*2]->px=px;a[1+color*2]->py=py;f_elims[3][color]=' ';break;

case 5:buscar(color,px,py,false);c[0+color*2]->elim=false;c[0+color*2]->px=px;c[0+color*2]->py=py;f_elims[4][color]=' ';break;

case 6:buscar(color,px,py,false);c[1+color*2]->elim=false;c[1+color*2]->px=px;c[1+color*2]->py=py;f_elims[5][color]=' ';break;

case 7:buscar(color,px,py,false);d[color]->elim=false;d[color]->px=px;d[color]->py=py;f_elims[6][color]=' ';break;

default:cout<<"No ha ingresado una opcion posible.\n";

}

}

}

}

peon *p[16];

int main(){

 int op,x=0;

 bool romper=false;

 for(int i=0;i<8;i++){//se dan los valores a los punteros

  p[i]=new peon(0,1,i,false,'A',false);

 }

 for(int i=0;i<8;i++){

  p[i+8]=new peon(1,6,i,false,'B',false);

 }

 for(int i=0;i<2;i++){

  t[i]=new torre(0,0,i*7,false,'+');

 }

 for(int i=0;i<2;i++){

  t[i+2]=new torre(1,7,i*7,false,'*');

 }

 for(int i=0;i<2;i++){

 a[i]=new alfil(0,0,2+i*3,false,';');

 }

 for(int i=0;i<2;i++){

 a[i+2]=new alfil(1,7,2+i*3,false,':');

 }

 for(int i=0;i<2;i++){

 c[i]=new caballo(0,0,1+i*5,false,'?');

 }

 for(int i=0;i<2;i++){

 c[i+2]=new caballo(1,7,1+i*5,false,'!');

 }

 d[0]=new dama(0,0,3,false,'&');

 d[1]=new dama(1,7,3,false,'@');

 r[0]=new rey(0,0,4,false,'$');

 r[1]=new rey(1,7,4,false,'#');

 for(int i=0;i<8;i++){

  for(int j=0;j<2;j++){

   f_elims[i][j]=' ';

  }

 }

 for(int i=0;i<8;i++){//se "vacia" la tabla y se vuelven a colocar las fichas en sus nuevas posiciones

  for(int j=0;j<8;j++){

   tabla[i][j]=' ';

  }

 }

 for(int i=0;i<16;i++){

 if(p[i]->elim==true){

 tabla[p[i]->px][p[i]->py]=' ';

}else{

tabla[p[i]->px][p[i]->py]=p[i]->sim;

}

 }

 for(int i=0;i<4;i++){

 if(t[i]->elim==true){

 tabla[t[i]->px][t[i]->py]=' ';

}else{

tabla[t[i]->px][t[i]->py]=t[i]->sim;

}

 }

 for(int i=0;i<4;i++){

 if(a[i]->elim==true){

 tabla[a[i]->px][a[i]->py]=' ';

}else{

tabla[a[i]->px][a[i]->py]=a[i]->sim;

}

 }

 for(int i=0;i<4;i++){

 if(c[i]->elim==true){

 tabla[c[i]->px][c[i]->py]=' ';

}else{

tabla[c[i]->px][c[i]->py]=c[i]->sim;

}

 }

 for(int i=0;i<2;i++){

 if(d[i]->elim==true){

 tabla[d[i]->px][d[i]->py]=' ';

}else{

tabla[d[i]->px][d[i]->py]=d[i]->sim;

}

 }

 for(int i=0;i<2;i++){

 if(r[i]->elim==true){

 tabla[r[i]->px][r[i]->py]=' ';

}else{

tabla[r[i]->px][r[i]->py]=r[i]->sim;

}

 }

 cout<<"Ajedrez en C++\nLos peones blancos se caracterizan por la 'A', los negros por la 'B'\nLas torres blancas son los '+' y las negras los '*'\nLos caballos blancos son los '?' y los negros son '!'\nLos alfileres blancos son los ';' y los negros los ':'\nLa reina blanca es '&' y la negra es '@'\nEl rey blanco es '$' y el negro es '#'\n";

 system("pause");

 system("cls");

 while(true){

 do{

  cout<<"\t\t\t\t A B C D E F G H\n\n";

  for(int i=7;i>-1;i--){

   cout<<i+1<<"\t\t\t\t|";

   for(int j=0;j<8;j++){

    cout<<tabla[i][j]<<"|";

   }

   if(i==7){

   cout<<"\t";

   for(int k=0;k<8;k++){

   cout<<f_elims[k][1]<<" ";

 }

 }else if(i==0){

 cout<<"\t";

   for(int k=0;k<8;k++){

   cout<<f_elims[k][0]<<" ";

 }

 }

 cout<<endl;

  }

  cout<<endl;

  cout<<"Seleccionar peon ";

  for(int i=0;i<8;i++){

   if(p[i+x]->elim==true){

cout<<"Peon "<<i+x<<" eliminado,";

 }else{

 cout<<i+x<<"("<<p[i+x]->px+1;

   switch(p[i]->py){

    case 0:cout<<"A";break;

    case 1:cout<<"B";break;

    case 2:cout<<"C";break;

    case 3:cout<<"D";break;

    case 4:cout<<"E";break;

    case 5:cout<<"F";break;

    case 6:cout<<"G";break;

    case 7:cout<<"H";break;

   }

   cout<<"): "<<i<<", ";

 }

  }

  cout<<endl;

  for(int i=0;i<2;i++){

   if(t[i+x/4]->elim==true){

   cout<<"Torre "<<i+x/4<<" actualmente eliminada.\n";

 }else{

 cout<<"Seleccionar torre "<<i+x/4<<"(Posicion "<<t[i+x/4]->px+1;

   switch(t[i]->py){

    case 0:cout<<"A";break;

    case 1:cout<<"B";break;

    case 2:cout<<"C";break;

    case 3:cout<<"D";break;

    case 4:cout<<"E";break;

    case 5:cout<<"F";break;

    case 6:cout<<"G";break;

    case 7:cout<<"H";break;

   }

   cout<<"): "<<i+8<<endl;

}

  }

  for(int i=0;i<2;i++){

   if(a[i+x/4]->elim==true){

   cout<<"Alfil "<<i+x/4<<" actualmente eliminada.\n";

 }else{

 cout<<"Seleccionar alfil "<<i+x/4<<"(Posicion "<<a[i+x/4]->px+1;

   switch(a[i]->py){

    case 0:cout<<"A";break;

    case 1:cout<<"B";break;

    case 2:cout<<"C";break;

    case 3:cout<<"D";break;

    case 4:cout<<"E";break;

    case 5:cout<<"F";break;

    case 6:cout<<"G";break;

    case 7:cout<<"H";break;

   }

   cout<<"): "<<i+10<<endl;

}

  }

  for(int i=0;i<2;i++){

   if(c[i+x/4]->elim==true){

   cout<<"Caballo "<<i+x/4<<" actualmente eliminado.\n";

 }else{

 cout<<"Seleccionar caballo "<<i+x/4<<"(Posicion "<<c[i+x/4]->px+1;

   switch(c[i]->py){

    case 0:cout<<"A";break;

    case 1:cout<<"B";break;

    case 2:cout<<"C";break;

    case 3:cout<<"D";break;

    case 4:cout<<"E";break;

    case 5:cout<<"F";break;

    case 6:cout<<"G";break;

    case 7:cout<<"H";break;

   }

   cout<<"): "<<i+12<<endl;

}

  }

  if(d[x/8]->elim==true){

   cout<<"Dama "<<x/8<<" actualmente eliminada.\n";

 }else{

 cout<<"Seleccionar dama "<<x/8<<"(Posicion "<<c[x/8]->px+1;

   switch(d[x/8]->py){

    case 0:cout<<"A";break;

    case 1:cout<<"B";break;

    case 2:cout<<"C";break;

    case 3:cout<<"D";break;

    case 4:cout<<"E";break;

    case 5:cout<<"F";break;

    case 6:cout<<"G";break;

    case 7:cout<<"H";break;

   }

   cout<<"): "<<14<<endl;

}

cout<<"Seleccionar rey "<<x/8<<"(Posicion "<<r[x/8]->px+1;

   switch(r[x/8]->py){

    case 0:cout<<"A";break;

    case 1:cout<<"B";break;

    case 2:cout<<"C";break;

    case 3:cout<<"D";break;

    case 4:cout<<"E";break;

    case 5:cout<<"F";break;

    case 6:cout<<"G";break;

    case 7:cout<<"H";break;

   }

   cout<<"): "<<15<<endl;

  cin>>op;

  switch(op){

   case 0:

 case 1:

 case 2:

 case 3:

 case 4:

 case 5:

 case 6: 

   case 7:if(p[op+x]->elim==true){cout<<"Esta ficha no esta disponible.\n";system("pause");}else romper=p[op+x]->mostrarop(op+x);break;

   case 8:

   case 9:if(t[(op-8)+x/4]->elim==true){cout<<"Esta ficha no esta disponible.\n";system("pause");}else romper=t[(op-8)+x/4]->mostrarop((op-8)+x/4);break;

   case 10:

   case 11:if(a[(op-10)+x/4]->elim==true){cout<<"Esta ficha no esta disponible.\n";system("pause");}else romper=a[(op-10)+x/4]->mostrarop((op-10)+x/4);break;

   case 12:

   case 13:if(c[(op-12)+x/4]->elim==true){cout<<"Esta ficha no esta disponible.\n";system("pause");}else romper=c[(op-12)+x/4]->mostrarop((op-12)+x/4);break;

   case 14:if(d[(op-14)+x/8]->elim==true){cout<<"Esta ficha no esta disponible.\n";system("pause");}else romper=d[(op-14)+x/8]->mostrarop((op-14)+x/8);break;

   case 15:if(r[(op-15)+x/8]->elim==true){cout<<"Esta ficha no esta disponible.\n";system("pause");}else romper=r[(op-15)+x/8]->mostrarop((op-15)+x/8);break;

   default:cout<<"No ha seleccionado una ficha posible, intentelo de nuevo\n";system("pause");

   }

  system("cls");

  for(int i=0;i<8;i++){

  for(int j=0;j<8;j++){

   tabla[i][j]=' ';

  }

 }

 for(int i=0;i<16;i++){

 if(p[i]->elim==true){

 if(tabla[p[i]->px][p[i]->py]==' '){

 tabla[p[i]->px][p[i]->py]=' ';

 }

}else{

tabla[p[i]->px][p[i]->py]=p[i]->sim;

}

 }

 for(int i=0;i<4;i++){

 if(t[i]->elim==true){

 if(tabla[t[i]->px][t[i]->py]==' '){

 tabla[t[i]->px][t[i]->py]=' ';

 }

}else{

tabla[t[i]->px][t[i]->py]=t[i]->sim;

}

 }

 for(int i=0;i<4;i++){

 if(a[i]->elim==true){

 if(tabla[a[i]->px][a[i]->py]==' '){

 tabla[a[i]->px][a[i]->py]=' ';

 }

}else{

tabla[a[i]->px][a[i]->py]=a[i]->sim;

}

 }

 for(int i=0;i<4;i++){

 if(c[i]->elim==true){

 tabla[c[i]->px][c[i]->py]=' ';

}else{

tabla[c[i]->px][c[i]->py]=c[i]->sim;

}

 }

 for(int i=0;i<2;i++){

 if(d[i]->elim==true){

 tabla[d[i]->px][d[i]->py]=' ';

}else{

tabla[d[i]->px][d[i]->py]=d[i]->sim;

}

 }

 for(int i=0;i<2;i++){

 if(r[i]->elim==true){

 tabla[r[i]->px][r[i]->py]=' ';

}else{

tabla[r[i]->px][r[i]->py]=r[i]->sim;

}

 }

  }while(romper==false);

  if(r[0]->elim==true){

   cout<<"\nEl rey 1 ha sido elimnado, el ganador es el jugador de las fichas negras(B,!,:,*,@,#)\n";system("pause");system("cls");break;break;

 }else if(r[1]->elim==true){

 cout<<"\nEl rey 2 ha sido elimnado, el ganador es el jugador de las fichas blancas(A,?,;,+,&,$)\n";system("pause");system("cls");break;break;

 }

 romper=false;//la razon de que casi todas las funciones retornen un valor bool es para romper este bucle necesario para que cada jugador tenga su turno,lo cualtambien me llevo a la declaracion de la variable x

 if(x==0){

  x+=8;

 }else{

  x=0;

 }

}

}

bool comprobarpos(int color,int px,int py,int pxo,int pyo){//esta funcion recorre el camino que recorrera la ficha para saber si esta libre o no

 int aux=0,aux2=0;

 if(pxo>0){

  aux=1;

 }else if(pxo<0){

  aux=-1;

 }else{

 aux=0;

 }

 if(pyo>0){

  aux2=1;

 }else if(pyo<0){

  aux2=-1;

 }else{

 aux2=0;

 }

 for(int i=aux,i2=aux2;((((i<=pxo)&&(pxo>-1))||((i>=pxo)&&(pxo<0)))&&(((i2<=pyo)&&(pyo>-1))||((i2>=pyo)&&(pyo<0))));){

  switch(tabla[px+i][py+i2]){

   default:return true;

 case ' ':;//en caso de que este ocupado retorna verdadero

  }

  if(i<0){

   i--;

  }else if(i>0){

   i++;

  }

  if(i2<0){

   i2--;

  }else if(i2>0){

   i2++;

  }

 }

 return false;

}

int cambiarcolpos(int color,int n){

 if(color==0){

  return n;

 }else{

  return n*-1;

 }

}

int cambiarcol(int color){

 if(color==0){

  return 1;

 }else{

  return 0;

 }

}

bool buscar(int _color,int _px,int _py,bool _elim){

 for(int i=0;i<16;i++){//se busca y elimina la ficha en cuestion de eliminar

  if((p[i]->color==_color)&&(p[i]->px==_px)&&(p[i]->py==_py)&&(p[i]->elim==false)){

   p[i]->elim=true;return true;

  }

 }

 for(int i=0;i<4;i++){

  if((t[i]->color==_color)&&(t[i]->px==_px)&&(t[i]->py==_py)&&(t[i]->elim==false)){

   t[i]->elim=true;

   if(i>1){

   i-=2;

 }

   if(_color==0){

   f_elims[i][0]='*';

 }else{

 f_elims[i][1]='+';

 }

 return true;

  }

 }

 for(int i=0;i<4;i++){

  if((a[i]->color==_color)&&(a[i]->px==_px)&&(a[i]->py==_py)&&(a[i]->elim==false)){

   a[i]->elim=true;

   if(i>1){

   i-=2;

 }

   if(_color==0){

   f_elims[i+2][0]=';';

 }else{

 f_elims[i+2][1]=':';

 }

 return true;

  }

 }

 for(int i=0;i<4;i++){

  if((c[i]->color==_color)&&(c[i]->px==_px)&&(c[i]->py==_py)&&(c[i]->elim==false)){

   c[i]->elim=true;

   if(i>1){

   i-=2;

 }

   if(_color==0){

   f_elims[i+4][0]='?';

 }else{

 f_elims[i+4][1]='!';

 }

 return true;

  }

 }

  for(int i=0;i<2;i++){

  if((d[i]->color==_color)&&(d[i]->px==_px)&&(d[i]->py==_py)&&(d[i]->elim==false)){

   d[i]->elim=true;

   if(i>1){

   i-=2;

 }

   if(_color==0){

   f_elims[i+6][0]='&';

 }else{

 f_elims[i+6][1]='@';

 }

 return true;

  }

 }

 for(int i=0;i<2;i++){

  if((r[i]->color==_color)&&(r[i]->px==_px)&&(r[i]->py==_py)&&(r[i]->elim==false)){

   r[i]->elim=true;

 return true;

  }

 }

 return false;

}

bool moverf(int &color,int &px,int &py,bool &elim,int pxo,int pyo){//no preguntes

if((px+pxo>7)||(px+pxo<0)||(py+pyo>7)||(py+pyo<0)){cout<<"Movimiento ilegal, se sale del tablero.\n";system("pause");return false;}else{if((tabla[px+pxo][py+pyo]!=' ')&&(comprobarpos(color,px,py,cambiarv(pxo),cambiarv(pyo))==false)&&(buscar(cambiarcol(color),px+pxo,py+pyo,false)==true)){px+=pxo;py+=pyo;}else if(comprobarpos(color,px,py,pxo,pyo)==false){px+=pxo;py+=pyo;}else if((tabla[px+pxo][py+pyo]!=' ')&&((pxo==1)||(pxo==-1))&&((pyo==1)||(pyo==-1))&&(buscar(cambiarcol(color),px+pxo,py+pyo,false)==true)){px+=pxo;py+=pyo;}else{cout<<"Movimeinto ilegal, hay una ficha en el camino.\n";system("pause");return false;}}

return true;

}

bool moverf_c(int &color,int &px,int &py,bool &elim,int pxo,int pyo){

if((px+pxo>7)||(px+pxo<0)||(py+pyo>7)||(py+pyo<0)){

cout<<"Movimiento ilegal, se sale del tablero.\n";system("pause");return false;

}

if(tabla[px+pxo][py+pyo]==' '){

px=pxo;

py+=pyo;

}else if((tabla[px+pxo][py+pyo]!=' ')&&(buscar(cambiarcol(color),px,py,false))){

px=pxo;

py+=pyo;

}else{

cout<<"Movimiento ilegal, hay una ficha aliada en esa posicion.\n";system("pause");return false;

}

return true;

}

int moverf_c_v(int n){

if(n==1){

return -1;

}else{

return 1;

}

}

int cambiarv(int n){

if(n>1){

n-=1;

}else if(n<-1){

n+=1;

}

return n;

}


1