/* fungsi-fungsi prototipe yang akan kita gunakan untuk menjalankan keseluruhan program */
void aturan_main();
void inti_game_1();
void inti_game_2();
void inti_game_3();
void batas_garis_datar();
void batas_garis_tegak();
void tentang_pembuat();
/* fungsi ini akan memperlihatkan tampilan awal & sebuah tampilan grafis sebelum masuk ke menu
pilihan yang dapat dipilih sesuai keinginan kita */
int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR pszCmdLine, int iCmdShow)
/* tampilan awal */
printf("\n*****************************************************************************
***\n");
printf(" ******* * ****** ******* ****** ****** ******* ****** ****** \n");
printf(" * * * * * * * * * * * \n");
printf(" * * * * * * * * * * * \n");
printf(" * * * * * * * * * * * \n");
printf(" * * * * * * * * * * * \n");
printf("\n MENUNTUT ANDA BERPIKIR LEBIH DALAM SEBELUM MELANGKAH LEBIH JAUH\n");
printf("\n*****************************************************************************
***\n\n");
printf(" * * ** * *\n");
printf(" * * * * *\n");
printf(" * * ** * *\n");
MessageBox(NULL, " Selamat Datang!\nClick OK Untuk Masuk ke Menu Permainan.", "TIC TAC
TOE", MB_OK | MB_ICONEXCLAMATION);
int choice = 0;
while(1)
printf("\n\t\t\t------------------------------------");
printf("\t\t\t------------------------------------\n");
printf("\t\t\t------------------------------------\n");
printf("\t\t\t------------------------------------\n");
printf("\t\t\t------------------------------------\n");
printf("\t\t\t------------------------------------\n");
scanf("%d",&choice);
printf("\n\n");
switch(choice)
case 1:
aturan_main();
break;
case 2:
inti_game_1();
break;
case 3:
inti_game_2();
break;
case 4:
inti_game_3();
break;
case 5:
tentang_pembuat();
break;
case 6:
MessageBox(NULL, " Terima Kasih!\nClick OK Untuk Keluar dari Permainan ini.", "TIC TAC TOE",
MB_OK | MB_ICONEXCLAMATION);
exit(0);
default:
break;
void aturan_main()
printf(" 1. Permainan ini bisa Anda mainkan Vs Computer maupun Vs Player 2.\n\n");
printf(" 3. Player 1 memakai maskot 'X' untuk melangkah, Computer atau Player 2 \n\n");
printf(" 5. Pemain yang pertama kali dapat membuat sebuah baris dalam board permainan,\n\n");
getch();
system("cls");
/* Fungsi utama dari permainan tic tac toe, versi Player 1 vs Computer level 1 */
/* Fungsi ini akan menampilkan board untuk bermain, kemudian memerintahkan Player 1 dan Computer
untuk membuat langkah, dan mencari pemenangnya */
void inti_game_1()
tampilan_board(papan_utama);
board_deleted(papan_utama);
int hasil;
do
if(player == HUMAN_1)
langkah_human_1(papan_utama);
}
else
langkah_komputer_1(papan_utama);
tampilan_board(papan_utama);
player = change_1(player);
hasil = rampung(papan_utama);
while(hasil == 0);
hasil_main_1(hasil, player);
getch();
system("cls");
/* Fungsi utama dari permainan tic tac toe, versi Player 1 vs Computer level 2 */
/* Fungsi ini akan menampilkan board untuk bermain, kemudian memerintahkan Player 1 dan Computer
untuk membuat langkah, dan mencari pemenangnya */
void inti_game_2()
tampilan_board(papan_utama);
board_deleted(papan_utama);
char player = HUMAN_1;
int hasil;
do
if(player == HUMAN_1)
langkah_human_1(papan_utama);
else
langkah_komputer_2(papan_utama);
tampilan_board(papan_utama);
player = change_1(player);
hasil = rampung(papan_utama);
while(hasil == 0);
hasil_main_2(hasil, player);
getch();
system("cls");
/* Fungsi utama dari permainan tic tac toe, versi Player 1 vs Player 2 */
/* Fungsi ini akan menampilkan board untuk bermain, kemudian memerintahkan Player 1 & Player 2
untuk membuat langkah, dan mencari pemenangnya */
void inti_game_3()
tampilan_board(papan_utama);
board_deleted(papan_utama);
int hasil;
do
if(player == HUMAN_1)
langkah_human_1(papan_utama);
else
langkah_human_2(papan_utama);
tampilan_board(papan_utama);
player = change_2(player);
hasil = rampung(papan_utama);
while(hasil == 0);
hasil_main_2(hasil, player);
printf("\n TEKAN ENTER 2 KALI UNTUK KEMBALI KE MENU\n\n");
getch();
system("cls");
void batas_garis_datar()
void batas_garis_tegak()
printf("\t\t\t\t | | | | \n");
batas_garis_datar();
batas_garis_tegak();
batas_garis_tegak();
batas_garis_datar();
batas_garis_tegak();
batas_garis_tegak();
batas_garis_datar();
batas_garis_tegak();
batas_garis_tegak();
batas_garis_datar();
printf("\n\n");
int i;
board[i]=' ';
}
}
/* fungsi untuk bertukar kesempatan dalam melakukan sebuah langkah. setelah Player 1 melangkah
kemudian Computer, kemudian Player 1, lalu Computer, dst */
if(tictactoer == COMPUTER)
return HUMAN_1;
else
return COMPUTER;
/* fungsi untuk bertukar kesempatan dalam melakukan sebuah langkah. setelah Player 1 melangkah
kemudian Player 2, kemudian Player 1, lalu Player 2, dst */
if(tictactoer == HUMAN_2)
return HUMAN_1;
else
return HUMAN_2;
/* fungsi untuk mengecek apakah nilai yang dimasukkan Human ada dalam nilai-nilai yang tersedia */
/* fungsi untuk menampilkan perintah kepada Player 1 untuk memilih kotak yang ingin ditempati,
dengan syarat nilai yang dimasukkan sesuai dengan ketersediaan nilai */
int pilihan;
printf(" Dan Tentukan Nomor Kotak yang Ingin Anda Tempati : ");
scanf("%d", &pilihan);
printf("\n\n");
while(!nilai_utk_input(pilihan-1,kotak))
printf(" MAAF! Pilihan Anda Tidak Sesuai dengan Input yang Kami Inginkan.\n");
getchar();
scanf("%d", &pilihan);
printf("\n\n");
return (pilihan-1);
/* fungsi untuk menampilkan perintah kepada Player 2 untuk memilih kotak yang ingin ditempati,
dengan syarat nilai yang dimasukkan sesuai dengan ketersediaan nilai */
int pilihan;
printf(" Dan Tentukan Nomor Kotak yang Ingin Anda Tempati : ");
scanf("%d", &pilihan);
printf("\n\n");
while(!nilai_utk_input(pilihan-1,kotak))
printf(" MAAF! Pilihan Anda Tidak Sesuai dengan Input yang Kami Inginkan.\n");
getchar();
scanf("%d", &pilihan);
printf("\n\n");
return (pilihan-1);
/* fungsi bagi Player 1 untuk melakukan sebuah langkah dalam permainan, dengan mengisi kotak yang
telah dipilih melalui fungsi pilihanku */
int kotak_pilihan;
kotak_pilihan = pilihanku_1(kotak);
kotak[kotak_pilihan] = HUMAN_1;
}
/* fungsi bagi Player 2 untuk melakukan sebuah langkah dalam permainan, dengan mengisi kotak yang
telah dipilih melalui fungsi pilihanku */
int kotak_pilihan;
kotak_pilihan = pilihanku_2(kotak);
kotak[kotak_pilihan] = HUMAN_2;
/* fungsi untuk mencari sebuah kotak dalam board yang kosong untuk ditempati */
int i;
if(kotak[i]==' ')
return i;
/* fungsi untuk computer melakukan sebuah langkah dalam permainan, dengan mengisi kotak yang
kosong */
int kosong;
kosong = cari_kosong(kotak);
kotak[kosong] = 'O';
/* Sebelum mencari kotak kosong, computer akan mencari apakah dalam sebuah baris, baik horizontal,
vertikal, maupun diagonal, player 1 memiliki kemungkinan menang */
/* Player 1 memiliki kemungkinan menang jika dua dari 3 kotak dalam sebuah baris terisi maskot yg
sama, yaitu X */
int i;
int kosong;
kosong = cari_kosong(kotak);
{kotak[1]=COMPUTER;}
{kotak[0]=COMPUTER;}
{kotak[5]=COMPUTER;}
{kotak[4]=COMPUTER;}
{kotak[3]=COMPUTER;}
{kotak[8]=COMPUTER;}
else if (kotak[6] == kotak[8] && kotak[6]=='O' && kotak[7] == ' ')
{kotak[7]=COMPUTER;}
{kotak[6]=COMPUTER;}
{kotak[6]=COMPUTER;}
{kotak[3]=COMPUTER;}
{kotak[0]=COMPUTER;}
{kotak[7]=COMPUTER;}
{kotak[4]=COMPUTER;}
{kotak[1]=COMPUTER;}
{kotak[8]=COMPUTER;}
{kotak[5]=COMPUTER;}
{kotak[2]=COMPUTER;}
{kotak[8]=COMPUTER;}
{kotak[0]=COMPUTER;}
{kotak[6]=COMPUTER;}
{kotak[5]=COMPUTER;}
{kotak[2]=COMPUTER;}
{kotak[2]=COMPUTER;}
{kotak[2]=COMPUTER;}
{kotak[1]=COMPUTER;}
{kotak[0]=COMPUTER;}
{kotak[5]=COMPUTER;}
{kotak[4]=COMPUTER;}
{kotak[3]=COMPUTER;}
{kotak[8]=COMPUTER;}
else if (kotak[6] == kotak[8] && kotak[6]=='X' && kotak[7] == ' ')
{kotak[7]=COMPUTER;}
{kotak[6]=COMPUTER;}
{kotak[6]=COMPUTER;}
{kotak[3]=COMPUTER;}
{kotak[0]=COMPUTER;}
{kotak[7]=COMPUTER;}
{kotak[4]=COMPUTER;}
{kotak[1]=COMPUTER;}
{kotak[8]=COMPUTER;}
{kotak[5]=COMPUTER;}
{kotak[2]=COMPUTER;}
{kotak[8]=COMPUTER;}
{kotak[0]=COMPUTER;}
{kotak[6]=COMPUTER;}
{kotak[5]=COMPUTER;}
{kotak[2]=COMPUTER;}
{kotak[4]=COMPUTER;}
else
{kotak[kosong] = COMPUTER;}
/* Menentukan syarat kemenangan, yaitu membentuk garis horizontal, vertikal, atau diagonal, dalam
game board */
/* return akan bernilai benar jika ada salah satu syarat yang memenuhi */
}
/* fungsi untuk menentukan apakah dalam sebuah baris, entah horizontal, vertikal, atau diagonal, sudah
memenuhi syarat kemenangan */
/* syarat kemenangan : dalam baris itu kotak-kotaknya terisi penuh dengan nilai yg sama ('X' semua atau
'O' semua) */
/* fungsi untuk mengecek apakah kotak-kotak dalam board sudah terisi semua atau belum */
int i;
if(kotak[i]==' ')
return false;
return true;
//fungsi untuk menentukan bahwa permainan imbang, yaitu ketika semua kotak dalam board terisi
penuh tanpa ada pemain yang memenuhi syarat kemenangan */
return(penuh(kotak));
/* fungsi untuk menampilkan pemenang dari game tic tac toe versi Player 1 vs Computer , atau jika tidak
ada pemenang maka draw */
if (hasil == 1)
tictactoer = change_1(tictactoer);
else
/* fungsi untuk menampilkan pemenang game tic tac toe versi Player 1 vs Player 2, atau jika tidak ada
pemenang maka draw */
if (hasil == 1)
tictactoer = change_2(tictactoer);
else
/* return integer 1 jika sudah ada pemenang, return integer 2 jika permainan imbang, dan return 0 jika
permainan belum selesai */
if (champ(kotak))
return 1;
if (imbang(kotak))
return 2;
else
return 0;
void tentang_pembuat()
printf("--------------------------------------------------------------------------------");
printf(" 35285\n");
printf("--------------------------------------------------------------------------------\n\n");
getch();
system("cls");