#include <stdio.h>
#define cek(p,a,b,c) p[a]!=0&&p[a]==p[b]&&p[b]==p[c]
#define bolong1(p,a,b,c,X) !p[a]&&p[b]==X&&p[c]==X
#define bolong2(p,a,b,X) ((!p[a]&&p[b]==X)||(p[a]==X&&!
p[b]))&&a!=-1&&b!=-1
int gambardancek(int* petak, int giliran){
for(int i=0;i<9;i++){ // menggambar petak
if (!petak[i]){printf(".");}
else {printf("%c",petak[i]);}
if (i%3==2){printf("\n");}
else {printf(" ");}
}
int cekval=0; //memeriksa petak
for (int i=0;i<3&&!cekval;i++){
// baris ke-1
if (cek(petak,i*3,i*3+1,i*3+2)){cekval= 1;}
// kolom ke-i
if (cek(petak,i,i+3,i+6)){cekval= 1;}
}
if (cek(petak,0,4,8)){cekval= 1;}
if (cek(petak,2,4,6)){cekval= 1;}
if (cekval){
if(giliran%2==0)printf("Player 1 menang");
else {printf("Bot menang");}
} else if (giliran==8){ printf("Seri");}
return cekval;
}
void input(int *petak){
int i,j;
printf("Player 1 masukkan posisi: ");
while(1) {scanf(" %d %d",&i, &j);
if (i<3&&i>=0&&j<3&&j>=0&&petak[i*3+j]==0){
petak[i*3+j]='X';break;
}
printf("Posisi salah, masukkan lagi: ");
}
}
void bolongsatu(int* petak, int *n, int c){
*n=-1;
for(int j=0;j<3&&*n==-1;j++){//iterasi posisi
if(bolong1(petak,j%3*4,
(j+1)%3*4,
(j+2)%3*4,c)){
*n=j%3*4;} //diagonal 1
if(bolong1(petak,(j%3+1)*2,
((j+1)%3+1)*2,
((j+2)%3+1)*2,c)){
*n=(j%3+1)*2;} //diagonal 2
for(int k=0;k<3&&*n==-1;k++){//iterasi baris kolom k
if(bolong1(petak,j*3+k%3,
j*3+(k+1)%3,
j*3+(k+2)%3,c)){
*n=j*3+k%3;} //baris ke-k
if(bolong1(petak,j+k%3*3,
j+(k+1)%3*3,
j+(k+2)%3*3,c)){
*n=j+k%3*3;} //kolom ke-k
}
}
}
void hitungbolong(int* petak, int* wn, int* w, char c){
for(int j=0;j<9;j++){ //pivot
if (petak[j]==0){
int tb[8] = {-1,-1,-1,-1,-1,-1,-1,-1};