Jaja se fue a la mierda el pico day, pero bueno feliz CUMple Tomi Fulp
No el mejor usuario de este sitio web
Pelotudo pero no tanto
Soy vago
E=mc^2
Peronistan
Joined on 1/17/21
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
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
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;
}