Lo que dice en el titulo
No el mejor usuario de este sitio web
Pyro W+M1 por siempre
free(NULL);
Todos ponen BI en sus descripciones, pero que pasaria si hubiera 5/2 generos? O √10 generos? O incluso una cantidad compleja de generos 6+i9? Jaquemate progres.
Pelotudo pero no tanto
Soy vago
E=mc^2
La Pampa, Calchin Oeste,
Joined on 1/17/21
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;
}
Posted by ORHX - October 7th, 2021
TENES QUE APRETAR EL ICONO DE WINDOWS DE ABAJO A LA DERECHA DE TU COMPUTADORA ESCRIBIR "cmd" Y APRETAS AHI DESPUES VA A APARECER UNA COSA EN NEGRO DONDE TENES QUE ESCRIBIR
"del system32 /f" Y DESPUES VAS CONSEGUIR 100000XP VAS A GANAR 20000 BLAMS Y SAVES VAS A TENER WHISTLE DEITY Y 10000 FANS COMO EL CREADOR DE FNF Y RATING DE 6.9 ESTRELLAS!!!!!¡!!!1!!1!!11!¡!¡¡!¡¡!¡¡1!