#include <iostream>
#include <string>
#include <cmath>
using namespace std;
void myFonk(string bir,string iki,string uc,string dort,string bes,string alti,string yedi,string sekiz,string dokuz){
 cout<<" -------------\n";
 cout<<" | "<<bir<<" | "<<iki<<" | "<<uc<<" | \n";
 cout<<" -------------\n";
 cout<<" | "<<dort<<" | "<<bes<<" | "<<alti<<" | \n";
 cout<<" -------------\n";
 cout<<" | "<<yedi<<" | "<<sekiz<<" | "<<dokuz<<" | \n";
 cout<<" -------------\n\n";
}
void kapan(){
 cout<<"Kazandınız!!!\n";
 system("pause");
 exit(0);
}
void kontrol(bool kazan,string bir,string iki,string uc,string dort,string bes,string alti,string yedi,string sekiz,string dokuz){
 if(bir==iki&&bir==uc){
 kapan();
 }else if(bir==bes&&bes==dokuz){
 kapan();
 }else if(uc==bes&&bes==yedi){
 kapan();
 }else if(yedi==sekiz&&sekiz==dokuz){
 kapan();
 }else if(dort==bes&&bes==alti){
 kapan();
 }else if(bir==dort&&dort==yedi){
 kapan();
 }else if(iki==bes&&bes==sekiz){
 kapan();
 }else if(uc==alti&&alti==dokuz){
 kapan();
 }
}
void konusma(bool onl1,string kisi1,string kisi2){
 if(onl1){
 cout<<kisi1<<"\'in Hamlesi:";
 }else{
 cout<<kisi2<<"\'in Hamlesi:";
 }
}
void myFake(bool kazan,string av,bool onl1,string cev,string kisi1,string kisi2,string bir,string iki,string uc,string dort,string bes,string alti,string yedi,string sekiz,string dokuz,string kisim1,string kisim2){
 for (int sayim=0;sayim<10;sayim++){
 if(kazan){
 break;
 }
 if(sayim % 2 == 0){
 konusma(true,kisim1,kisim2);
 }else{
 konusma(false,kisim1,kisim2);
 }
 cin>>cev;
 if(sayim % 2 == 0){
 av=kisi1;
 }else{
 av=kisi2;
 }
 if (cev == bir) {
 bir = av;
 myFonk(bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 kontrol(kazan,bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 } else if (cev == iki) {
 iki = av;
 myFonk(bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 kontrol(kazan,bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 } else if (cev == uc) {
 uc = av;
 myFonk(bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 kontrol(kazan,bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 } else if (cev == dort) {
 dort = av;
 myFonk(bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 kontrol(kazan,bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 } else if (cev == bes) {
 bes = av;
 myFonk(bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 kontrol(kazan,bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 } else if (cev == alti) {
 alti = av;
 myFonk(bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 kontrol(kazan,bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 } else if (cev == yedi) {
 yedi = av;
 myFonk(bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 kontrol(kazan,bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 } else if (cev == sekiz) {
 sekiz = av;
 myFonk(bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 kontrol(kazan,bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 } else if (cev == dokuz) {
 dokuz = av;
 myFonk(bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 kontrol(kazan,bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 } else {
 for(int i=0;i<11112;i++){
 cout<<i<<"."<<"Yanlış Girmeyin!!! Bir nasihat,"<<11112-i<<" zorluktan iyidir.\n";
 }
 }
 }
}
int main(){
 setlocale(LC_ALL,"Turkish");
 string bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz,kisi1,kisi2,karakter1,karakter2,cev,av;
 bir="1";iki="2";uc="3";dort="4";bes="5";alti="6";yedi="7";sekiz="8";dokuz="9";
 cout<<"\n XOX oyununa hoşgeldiniz.Oyun Türkçe desteklidir.Ve 2 kişilidir.Hatalara cevap verir.\n \n";
 myFonk(bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz);
 cout<<"Birinci oyuncunun adı:";
 cin>>kisi1;
 cout<<"İkinci oyuncunun adı:";
 cin>>kisi2;
 if(kisi1==kisi2){
 while(kisi1==kisi2){
 cout<<"Lütfen 2.kisiye farklı ad girin!";
 cout<<"İkinci oyuncunun adı:";
 cin>>kisi2;
 if(kisi1!=kisi2){
 break;
 }
 }
 }
 cout<<kisi1<<", X\'mi O mu? ";
 cin>>karakter1;
 if(karakter1!="x" && karakter1!="X" && karakter1!="o" && karakter1!="O"){
 while(karakter1!="x" && karakter1!="X" && karakter1!="y" && karakter1!="Y"){
 cout<<"Lütfen \"X\" \"O\" sayılarından giriniz!";
 cout<<kisi1<<", X\'mi O mu? ";
 cin>>karakter1;
 if(karakter1=="x" || karakter1=="X" || karakter1=="o" || karakter1=="O"){
 break;
 }
 }
 }
 if(karakter1=="x"||karakter1=="X"){
 karakter1 = "X";
 }
 if(karakter1=="o"||karakter1=="O"){
 karakter1 = "O";
 }
 string sayi=(karakter1=="X"?"O":"X");
 karakter2=sayi;
 cout<<kisi2<<" zorunlu olarak \""<<karakter2<<"\" oldu.";
 cout<<"\n Oyun başladı... \n";
 cout<<"\n Şimdi ismi verilen kişiler hamlesini \"1\" gibi belirterek yazacak.Tırnak işareti olmadan! Eğer yanlış girerseniz oyuna baştan baslayın!\n";
 myFake(false,av,true,cev,karakter1,karakter2,bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz,kisi1,kisi2);
 system("pause");
 return 0;
}