Program Game Tic Tac Toe menggunakan c++

Program Game Tic Tac Toe menggunakan c++

Langsung aja yaaaaa,.....
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
char angka[3][3]={{‘7′,’8′,’9’},{‘4′,’5′,’6’},{‘1′,’2′,’3′}};
char kebalikanBentuk,salah,pilihan,ulang=’y’;
bool ada=0,menang=0;
int baris=20,kolom=1,langkah=1,x,y,ketemu,skor[3][2];
void judul();
void tampilSkor();
void garis1();
void garis2();
void warna(char input);
void garis3(char input1,char input2,char input3);
void papanPermainan();
void tampilMenang(char pilihan,bool menang);
void setVariabel();
int  merubahInputKeyboard(int input);
void merubahInputKeXY(int input);
void cetakKeLayar(char bentuk);
void pilihLangkah(char bentuk);
void cariPojokKosong(char bentuk);
void cariKesempatanMaksimal(char bentuk);
void terserah(char bentuk);
bool cekMenang();
main()
{
char bentuk;
int input;
skor[1][1]=0;
skor[2][1]=0;
do
{
clrscr();
cout<<“\a”;
judul();
tampilSkor();
papanPermainan();
tampilMenang(pilihan,menang);
if(ulang==’y’&&menang==1)
{
setVariabel();
clrscr();
judul();
tampilSkor();
papanPermainan();
}
input=getch();
input=merubahInputKeyboard(input);
merubahInputKeXY(input);
bentuk=’O’;
cetakKeLayar(bentuk);
if(salah!=’s’)
{
bentuk=’X’;
pilihLangkah(bentuk);
}
menang=cekMenang();
salah=’b’;
kolom=1;
}while(ulang==’y’);
}
void judul()
{
textcolor(15);
gotoxy(baris,kolom);
cprintf(“+===================================+ Dengan AI 1.0”);cout<<endl;
kolom++;
gotoxy(baris,kolom);cprintf(“|”);
kolom++;
textcolor(12);
cprintf(” TTT I  CC TTT  A   CC TTT  O  EEE “);
textcolor(15);cprintf(“|”);cout<<endl;
gotoxy(baris,kolom);cprintf(“|”);
kolom++;
textcolor(14);cprintf(”  T  I C    T  A_A C    T  O O EE  “);
textcolor(15);cprintf(“|”);cout<<endl;
gotoxy(baris,kolom);cprintf(“|”);
kolom++;
textcolor(2);cprintf(”  T  I  CC  T  A A  CC  T   O  EEE “);
textcolor(15);cprintf(“|”);cout<<endl;
gotoxy(baris,kolom);
cprintf(“+===================================+”);cout<<endl;
kolom++;
}
void tampilSkor()
{
gotoxy(60,7); cout<<“+————–+”;
gotoxy(60,8); cout<<“|     SKOR     |”;
gotoxy(60,9); cout<<“+————–+”;
gotoxy(60,10);cout<<“| Pemain O : “<<skor[2][1]<<” |”;
gotoxy(60,11);cout<<“| Pemain X : “<<skor[1][1]<<” |”;
gotoxy(60,12);cout<<“+————–+”;
}
void garis1()
{
textcolor(9);
gotoxy(baris,kolom);cputs(“+———–+———–+———–+”);
kolom++;
cout<<endl;
}
void garis2()
{
textcolor(9);
gotoxy(baris,kolom);cputs(“|           |           |           |”);
kolom++;
cout<<endl;
}
void warna(char input)
{
if(input==’X’)
{
textcolor(10);
}
else if(input==’O’)
{
textcolor(12);
}
else
{
textcolor(15);
}
cprintf(“%c”,input);
textcolor(9);
}
void garis3(char input1,char input2,char input3)
{
textcolor(9);
gotoxy(baris,kolom);cputs(“|     “);
kolom++;
warna(input1);
cputs(”     |     “);
warna(input2);
cputs(”     |     “);
warna(input3);
cputs(”     |”);
cout<<endl;
}
void papanPermainan()
{
garis1();garis2();garis2();
garis3(angka[0][0],angka[0][1],angka[0][2]);
garis2();garis2();
garis1();garis2();garis2();
garis3(angka[1][0],angka[1][1],angka[1][2]);
garis2();garis2();
garis1();garis2();garis2();
garis3(angka[2][0],angka[2][1],angka[2][2]);
garis2();garis2();garis1();
}
void tampilMenang(char pilihan,bool menang)
{
if(menang==1&&ketemu==2)
{
gotoxy(29,12);cout<<“+——————+”;
gotoxy(29,13);cout<<“|       HASIL      |”;
gotoxy(29,14);cout<<“+——————+”;
gotoxy(29,15);cout<<“|     Sama Kuat !  |”;
gotoxy(29,16);cout<<“| Ulangi ?[y/t] :  |”;
gotoxy(29,17);cout<<“+——————+”;
gotoxy(46,16);cin>>ulang;
}
else if(menang==1)
{
if(pilihan==’O’)
{
pilihan=’X’;
skor[1][1]++;
}
else
{
pilihan=’O’;
skor[2][1]++;
}
gotoxy(29,12);cout<<“+——————+”;
gotoxy(29,13);cout<<“|       HASIL      |”;
gotoxy(29,14);cout<<“+——————+”;
gotoxy(29,15);cout<<“| Pemain “<<pilihan<<” Menang !|”;
gotoxy(29,16);cout<<“| Ulangi ?[y/t] :  |”;
gotoxy(29,17);cout<<“+——————+”;
gotoxy(46,16);cin>>ulang;
}
}
void setVariabel()
{
langkah=1;
ada=0;
menang=0;
angka[0][0]=’7′;
angka[0][1]=’8′;
angka[0][2]=’9′;
angka[1][0]=’4′;
angka[1][1]=’5′;
angka[1][2]=’6′;
angka[2][0]=’1′;
angka[2][1]=’2′;
angka[2][2]=’3′;
kolom=1;
}
int merubahInputKeyboard(int input)
{
int i,j;
for(i=49,j=1;i<=57;i++,j++)
{
if(i==input)
{
input=j;
}
}
return(input);
}
void merubahInputKeXY(int input)
{
int i,j,k,l;
for(i=1,j=2,k=0,l=1;i<=9;i++,k++,l++)
{
if(k>2)
{
k=0;
}
if(l>3)
{
j–;
l=1;
}
if(input==i)
{
x=j;
y=k;
}
}
}
void cetakKeLayar(char bentuk)
{
if(angka[x][y]!=’X’&&angka[x][y]!=’O’)
{
angka[x][y]=bentuk;
}else{
salah=’s’;
}
}
void pilihLangkah(char bentuk)
{
if(langkah==1){
if(angka[1][1]==’O’)
{
cariPojokKosong(bentuk);
}
else
{
angka[1][1]=bentuk;
}
}
else if(langkah>=2&&langkah<=4)
{
ada=0;
if(ada==0)
{
kebalikanBentuk=’X’;
cariKesempatanMaksimal(bentuk);
}
if(ada==0)
{
kebalikanBentuk=’O’;
cariKesempatanMaksimal(bentuk);
}
if(ada==0)
{
cariPojokKosong(bentuk);
}
if(ada==0)
{
terserah(bentuk);
}
}
langkah++;
}
void cariPojokKosong(char bentuk)
{
int acak;
acak=random(10);
if(acak%2==1&&acak!=5)
{
merubahInputKeXY(acak);//mecari X dan Y
if(angka[x][y]!=’X’&&angka[x][y]!=’O’)
{
angka[x][y]=bentuk;
ada=1;
}
}
else
{
cariPojokKosong(bentuk);
}
}
void cariKesempatanMaksimal(char bentuk)
{
int i;
for(i=0;i<=2;i++)
{
if(angka[i][0]==kebalikanBentuk&&angka[i][1]==kebalikanBentuk&&angka[i][2]!=’X’&&angka[i][2]!=’O’&&ada==0)
{
angka[i][2]=bentuk;
ada=1;
}
else if(angka[i][0]==kebalikanBentuk&&angka[i][2]==kebalikanBentuk&&angka[i][1]!=’X’&&angka[i][1]!=’O’&&ada==0)
{
angka[i][1]=bentuk;
ada=1;
}
else if(angka[i][1]==kebalikanBentuk&&angka[i][2]==kebalikanBentuk&&angka[i][0]!=’X’&&angka[i][0]!=’O’&&ada==0)
{
angka[i][0]=bentuk;
ada=1;
}
else if(angka[0][i]==kebalikanBentuk&&angka[1][i]==kebalikanBentuk&&angka[2][i]!=’X’&&angka[2][i]!=’O’&&ada==0)
{
angka[2][i]=bentuk;
ada=1;
}
else if(angka[0][i]==kebalikanBentuk&&angka[2][i]==kebalikanBentuk&&angka[1][i]!=’X’&&angka[1][i]!=’O’&&ada==0)
{
angka[1][i]=bentuk;
ada=1;
}
else if(angka[1][i]==kebalikanBentuk&&angka[2][i]==kebalikanBentuk&&angka[0][i]!=’X’&&angka[0][i]!=’O’&&ada==0)
{
angka[0][i]=bentuk;
ada=1;
}
}
if(ada==0){
if(angka[0][0]==kebalikanBentuk&&angka[1][1]==kebalikanBentuk&&angka[2][2]!=’X’&&angka[2][2]!=’O’)
{
angka[2][2]=bentuk;
ada=1;
}
else if(angka[0][0]==kebalikanBentuk&&angka[2][2]==kebalikanBentuk&&angka[1][1]!=’X’&&angka[1][1]!=’O’)
{
angka[1][1]=bentuk;
ada=1;
}
else if(angka[1][1]==kebalikanBentuk&&angka[2][2]==kebalikanBentuk&&angka[0][0]!=’X’&&angka[0][0]!=’O’)
{
angka[0][0]=bentuk;
ada=1;
}
else if(angka[0][2]==kebalikanBentuk&&angka[1][1]==kebalikanBentuk&&angka[2][0]!=’X’&&angka[2][0]!=’O’)
{
angka[2][0]=bentuk;
ada=1;
}
else if(angka[2][0]==kebalikanBentuk&&angka[1][1]==kebalikanBentuk&&angka[0][2]!=’X’&&angka[0][2]!=’O’)
{
angka[0][2]=bentuk;
ada=1;
}
else if(angka[0][2]==kebalikanBentuk&&angka[2][0]==kebalikanBentuk&&angka[1][1]!=’X’&&angka[1][1]!=’O’)
{
angka[1][1]=bentuk;
ada=1;
}
}
}
void terserah(char bentuk)
{
int acak;
acak=random(10);
merubahInputKeXY(acak);// mencari nilai X Y
if(angka[x][y]!=’X’&&angka[x][y]!=’O’)
{
angka[x][y]=bentuk;
}
else
{
terserah(bentuk);
}
}
bool cekMenang()
{
int i,j=1;
ketemu=0;
while(j<=2)
{
if(j==1)
{
pilihan=’X’;
}
else
{
pilihan=’O’;
}
for(i=0;i<=2;i++)
{
if(angka[i][0]==pilihan&&angka[i][1]==pilihan&&angka[i][2]==pilihan)
{
menang=1;
ketemu=1;
}else if(angka[0][i]==pilihan&&angka[1][i]==pilihan&&angka[2][i]==pilihan)
{
menang=1;
ketemu=1;
}
}
if(ketemu==0)
{
if(angka[0][0]==pilihan&&angka[1][1]==pilihan&&angka[2][2]==pilihan)
{
menang=1;
ketemu=1;
}
else if(angka[2][0]==pilihan&&angka[1][1]==pilihan&&angka[0][2]==pilihan)
{
menang=1;
ketemu=1;
}
}
j++;
}
if(ketemu==0&&langkah==6)
{
menang=1;
ketemu=2;
}
return(menang);
}

Komentar