› Foros › PC › Software libre
#ifndef _TABLERO_H_
#define _TABLERO_H_
struct Celda{
Celda *sig;
char pieza;
};
class Tablero{
private:
char **tablero;
Celda *perdidas;
bool turnoblancas;
public:
Tablero();
~Tablero();
Tablero(const Tablero& t);
Tablero& operator=(const Tablero& t);
bool Mover(char co,int fo,char cd,int fd);
void escribir();
};
#endif
#include <iostream>
#include "tablero.h"
using namespace std;
Tablero::Tablero(){
tablero=new char*[8];
for(int i=0;i<8;++i)
tablero[i]=new char[8];
tablero[0][0]=tablero[0][7]='T';
tablero[0][1]=tablero[0][6]='C';
tablero[0][2]=tablero[0][5]='A';
tablero[0][3]='D';
tablero[0][4]='R';
for(int i=0;i<8;i++){
tablero[1][i]='P';
tablero[6][i]='P';
}
tablero[7][0]=tablero[7][7]='t';
tablero[7][1]=tablero[7][6]='c';
tablero[7][2]=tablero[7][5]='a';
tablero[7][3]='d';
tablero[7][4]='r';
for(int i=2;i<6;i++)
for(int j=0;j<8;j++)
tablero[i][j]='v';
perdidas=0;
turnoblancas=true;
}
Tablero::~Tablero(){
for(int i=0;i<8;i++) //Borrado de la matriz de letras
delete[] tablero[i];
delete[] tablero;
Celda *aux1=perdidas,*aux2;
while(aux1->sig!=0){//Borrado de las piezas perdidas
aux2=aux1->sig;
delete aux1;
aux1=aux2;
}
delete aux1;
perdidas=0;
}
Tablero::Tablero(const Tablero& t){
turnoblancas=t.turnoblancas;
tablero=new char*[8];// Tablero apunta a un vector de 8 elementos del tipo char*
for(int i=0;i<8;++i)
tablero[i]=new char[8]; //Cada elemento del anterior vector apunta ahora a un vector de 8 char
for(int i=0;i<8;++i)
for(int j=0;j<8;++j)
tablero[i][j]=t.tablero[i][j];//Copiamos los valores
Celda *aux1,*aux2=t.perdidas;
if(aux2->sig!=0){
aux1=perdidas=new Celda;
while(aux2->sig!=0){
aux1->pieza=aux2->pieza;
aux1->sig=new Celda;
aux1=aux1->sig;
aux2=aux2->sig;
}
aux1->pieza=aux2->pieza;
aux1=0;aux2=0;
delete aux1;delete aux2;
}
else{
perdidas->sig=0;
perdidas->pieza=t.perdidas->pieza;
}
}
Tablero& Tablero::operator=(const Tablero& t){
if(t.tablero!=0){
for(int i=0;i<8;i++)
delete[] tablero[i];
delete[] tablero;
tablero=new char*[8];
for(int i=0;i<8;i++)
tablero[i]=new char[8];
for(int i=0;i<8;i++)
for(int j=0;j<8;j++)
tablero[i][j]=t.tablero[i][j];
}
else
tablero=0;
if(t.perdidas->sig!=0){
Celda *aux1=t.perdidas,*aux2;
aux2=perdidas=new Celda;
while(aux1->sig!=0){
aux2->pieza=aux1->pieza;
aux2->sig=new Celda;
aux2=aux2->sig;
aux1=aux1->sig;
}
aux2->pieza=aux1->pieza;
aux2->sig=0;
}
else
perdidas=0;
turnoblancas=t.turnoblancas;
return *this;
}
bool Tablero::Mover(char co,int fo,char cd,int fd){
bool band=true;
//band=EsPosible(co,fo,cd,fg);
if(band=true){
char letra='a';
char cad[8];
cad[0]=letra;
for(int i=1;i<8;i++){
letra=letra+1;
cad[i]=letra;
}
bool b=true;
int x,y,cont=0;
while(b==true){
if(cad[cont]==co){
x=cont;
b=false;
}
cont++;
}
cont=0;b=true;
while(b!=false){
if(cad[cont]==cd){
y=cont;
b=false;
}
cont++;
}
tablero[y][fd]=tablero[x][fo];
}
return band;
}
void Tablero::escribir(){
for(int i=0;i<8;i++){
cout<<endl;
for(int j=0;j<8;j++)
cout<<tablero[i][j]<<" ";
}
}
#include <iostream>
#include "tablero.h"
using namespace std;
int main(){
Tablero t,x;
t.escribir();
x.escribir();
t=x;
}