#include "stdafx.h"
#include<iostream>
using namespace std;
#include <string>
class gioco
{
public:
int campo[8][8][1];
int o,v,i;//definisco nel costruttore che gli indici della matrice campo sono a 0
gioco()
{
o=0;
v=0;
i=0;
}
~gioco()
{
cout<<"sono il distruttore di gioco"<<endl;
}
};
class dama:public gioco
{
public:
void ins1();
void ins2();
}dan;
class interfaccia
{
public:
//vi metto le funzioni delle pedine del giocatore 1
virtual void azione()=0;
//vi metto le funzioni del giocatore 2
virtual void azione2()=0;
virtual void vis()=0;
virtual void win()=0;
}l;
class cincout:public interfaccia
{
public:
void azione();
void azione2();
void vis();
void win(bool, bool);
};
namespace variabili
{
int vet[3]={1,2};
bool space=false;
int k=0,m=1,x=0,y=0,n=0,sas=0,mat=0,am=1,ma,sa,lk=0,as=0,g=0;;
bool flag=false;
}
using namespace variabili;
int main()
{
int o=0,v=0,s=0,i=0,da=0,ga=0,ka=0,sg=0,fg=0,h=0,mm=0,man=0,cas=0;
//richiamo le varie funzioni delle classi eseguendo il gioco.
bool vit2;
bool vit1;
dan.ins1();
dan.ins2();
//fine inserimento pedine
l.vis();
m=0;
vit1=false;
vit2=false;
do
{
l.azione();
int man=0;
l.vis();
//SECONDA PARTE DEL GIOCO FUNZIONI PER GIOCATORE 2
x=0,y=0,n=0,sas=0;
m=0;
l.azione2();
l.vis();
sas=0,cas=0,mat=0,man=0;
for(o=0;o<8;o++)
{
for(i=0;i<8;i++)
{
if(dan.campo[o][i][1]==2)
{
sas++;
}
else if(dan.campo[o][i][1]==15)
{
cas++;
}
}
}
for(o=0;o<8;o++)
{
for(i=0;i<8;i++)
{
if(dan.campo[o][i][1]==1)
{
mat++;
}
else if(dan.campo[o][i][1]==3)
{
man++;
}
}
}
if(sas==0)
{
if (cas==0)
{
vit1=true;
}
}
if(mat==0)
{
if(man==0)
{
vit2=true;
}
}
}
while((vit2==false)&&(vit1==false));
l.win(vit2,vit1);
system("pause");
}
void cincout:: vis()
{
system("cls");//visualizzazione damiera
cout<<"giocatore 1 hai le pedine "<<(char)vet[0]<<endl;
cout<<"giocatore 2 hai le pedine "<<(char)vet[1]<<endl;
cout << endl<< " ";
cout << endl<< " 0 1 2 3 4 5 6 7 ";
for (int v=0;v<8;v++)
{
cout <<endl << " |-|-|-|-|-|-|-|-|"<<endl;
if (v <=7) cout << "0" ;
cout << v <<"|";
for (int o=0 ;o<8; o++)
{
if(dan.campo[o][v][1]!=1&&dan.campo[o][v][1]!=2)
{
cout << char(dan.campo[o][v][1]) <<"|";
}
else
{
cout << char(dan.campo[o][v][1]) <<"|";
}
}
}
cout << endl<< " |-|-|-|-|-|-|-|-|"<<endl;
//fine visualizzazione damiera
}
void dama::ins1()
{
//inserimento
for(int i=0;i<1;i++)
{
for(int s=0;s<8;s=s+2)
{
dan.campo[i][s][1]=1;
}
}
for(int i=1;i<2;i++)
{
for(int s=1;s<8;s=s+2)
{
dan.campo[i][s][1]=1;
}
}
}
void dama::ins2()
{
for(int i=6;i<7;i++)//funzione visualizzA PER GLI 1
{
for(int s=0;s<8;s=s+2)
{
dan.campo[i][s][1]=2;
}
}
for(int i=7;i<=8;i++)
{
for(int s=1;s<=8;s=s+2)
{
dan.campo[i][s][1]=2;
}
}
}
void cincout::azione()
{
int am,as,m,n,fg,sg;
do//mangia per i 2
{
m=0;n=0;
fg=0;sg=0;
cout<<"inserisci le coordinate della pedina uno che vuoi muovere!"<<endl;
cin>>m;
cin>>n;
cout<<"inserisci dove vuoi spostare!!"<<endl;
cin>>fg;
cin>>sg;
if(dan.campo[m][n][1]==3)
{
if(dan.campo[fg][sg][1]==2||dan.campo[fg][sg][1]==15)
{
cout<<"dove vuoi andare dopo aver mangiato "<<endl;
cin>>am;
cin>>as;
space=true;
if(am==fg+1)
{
dan.campo[fg][sg][1]=0;
dan.campo[am][as][1]=3;
dan.campo[m][n][1]=0;
}
if(am==fg-1)
{
dan.campo[fg][sg][1]=0;
dan.campo[am][as][1]=3;
dan.campo[m][n][1]=0;
}
}
else if(dan.campo[m][n][1]==3)
{
if(dan.campo[fg][sg][1]==0)
{
dan.campo[fg][sg][1]=3;
dan.campo[m][n][1]=0;
}
}
}
if(dan.campo[m][n][1]==1)
{
if(dan.campo[fg][sg][1]==0)
{
if(fg==m+1)//leva
{
if(sg==n+1||sg==n-1)
{
if((dan.campo[m+1][n+1][1]!=1)||(dan.campo[m+1][n-1][1]!=1))
{
space=true;
dan.campo[fg][sg][1]=1;
dan.campo[m][n][1]=0;
}
}
}
}
else if(dan.campo[fg][sg][1]==2)
{
cout<<"dove vuoi mangiare "<<endl;
cin>>am;
cin>>as;
space=true;
if(am==fg+1)
{
dan.campo[fg][sg][1]=0;
dan.campo[am][as][1]=1;
dan.campo[m][n][1]=0;
}
else if(am==fg-1)
{
dan.campo[fg][sg][1]=0;
dan.campo[am][as][1]=1;
dan.campo[m][n][1]=0;
}
}
}
//tutto ok fino a qui
cout<<"rinserire le coordinate del luogo in cui è stata spostata la pedina\n per verificare se è dama"<<endl;
cin>>fg;
cin>>sg;
if(dan.campo[fg][sg][1]!=3)
{
if(fg==7)
{
space=true;
dan.campo[m][n][1]=0;
dan.campo[fg][sg][1]=3;
}
}
}
while (space==false);
}
void cincout::azione2()
{
int am,as,m,n,fg,sg;
do//mangia per i 2
{
cout<<"inserisci le coordinate della pedina due che vuoi muovere!"<<endl;
cin>>m;
cin>>n;
cout<<"inserisci dove vuoi spostare!!"<<endl;
cin>>fg;
cin>>sg;
if(dan.campo[m][n][1]==15)
{
if(dan.campo[fg][sg][1]==1)
{
cout<<"dove vuoi mangiare "<<endl;
cin>>am;
cin>>as;
space=true;
if(am==fg+1)
{
dan.campo[fg][sg][1]=0;
dan.campo[am][as][1]=15;
dan.campo[m][n][1]=0;
}
if(am==fg-1)
{
dan.campo[fg][sg][1]=0;
dan.campo[am][as][1]=15;
dan.campo[m][n][1]=0;
}
}
if(dan.campo[fg][sg][1]==3)
{
cout<<"dove vuoi mangiare "<<endl;
cin>>am;
cin>>as;
space=true;
if(am==fg+1)
{
dan.campo[fg][sg][1]=0;
dan.campo[am][as][1]=15;
dan.campo[m][n][1]=0;
}
else if(am==fg-1)
{
dan.campo[fg][sg][1]=0;
dan.campo[am][as][1]=15;
dan.campo[m][n][1]=0;
}
}
else if(dan.campo[m][n][1]==15)
{
if(dan.campo[fg][sg][1]==0)
{
dan.campo[fg][sg][1]=15;
dan.campo[m][n][1]=0;
}
}
}
if(dan.campo[m][n][1]==2)
{
if(dan.campo[fg][sg][1]==0)
{
if(fg==m-1)//leva
{
if(sg==n+1||sg==n-1)
{
if((dan.campo[m-1][n+1][1]!=1)||(dan.campo[m-1][n-1][1]!=1))
{
space=true;
dan.campo[fg][sg][1]=2;
dan.campo[m][n][1]=0;
}
}
else
{
cout<<"inserisci le coordinate x e y dove vuoi muovere!"<<endl;
scanf("%d %d",&x,&y);
}
}
}
else if(dan.campo[fg][sg][1]==1)
{
cout<<"dove vuoi mangiare "<<endl;
cin>>am;
cin>>as;
space=true;
if(am==fg+1)
{
dan.campo[fg][sg][1]=0;
dan.campo[am][as][1]=2;
dan.campo[m][n][1]=0;
}
else if(am==fg-1)
{
dan.campo[fg][sg][1]=0;
dan.campo[am][as][1]=2;
dan.campo[m][n][1]=0;
}
}
}
//tutto ok fino a qui
cout<<"riinserire le coordinate del luogo in cui è stata spostata la pedina\n per verificare se è dama"<<endl;
cin>>fg;
cin>>sg;
if(dan.campo[fg][sg][1]!=15)
{
if(fg==0)
{
space=true;
dan.campo[m][n][1]=0;
dan.campo[fg][sg][1]=15;
}
}
}
while (space==false);
}
void cincout::win(bool gagio,bool fagio)
{
if(gagio==true)
{
cout<<"-------------------------------------------"<<endl;
cout<<"|ha vinto il giocatore due complimenti!!!!! |"<<endl;
cout<<"-------------------------------------------"<<endl;
}
else if(fagio==true)
{
cout<<"--------------------------------------------------"<<endl;
cout<<"| ha vinto il giocatore uno complimenti!!!!! |"<<endl;
cout<<"--------------------------------------------------"<<endl;
}
}