Game tic tac toe adalah game yang sering dimainkan oleh anak - anak bahkan sekarang telah di kembangkan menjadi game online. Berikut adalah sebuah game tic tac toe yang saya dapat di google namun ada sedikit yang telah di edit agar lebih mudah di pahami. game ini menggunakan konsep struktur data dengan metode linked list. Ini sreenshootnya:
sekian saja mohon maaf mungkin ada salah penulisannya.
selamat mencoba !!!
sukses.....
menyusul....
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
struct tictact
{
int baris;
int kolom;
char hasil;
int jum;
tictact *prev;
tictact *next;
};
struct tictac1
{
int baris;
int kolom;
char nilai;
};
main()
{
char pemain1, pemain2;
char pilih;
int i = 0, j, k=0;
int maen, baris, kolom;
int vertikal[3] = {0,0,0}, horizontal[3] = {0,0,0};
static int vertikal1[3], horizontal1[3];
static int diagonal[3];
int menang;
struct tictact *awal, *tampung, *ujung, *data; //pointer bertype struct
struct tictac1 tc[9]={
{0,0,' '},{0,1,' '},{0,2,' '},
{1,0,' '},{1,1,' '},{1,2,' '},
{2,0,' '},{0,2,' '},{2,2,' '}
};
printf("+---+---+---+ \n");
printf("| 1 | 2 | 3 | \n");
printf("+---+---+---+ \n");
printf("| 4 | 5 | 6 | \n");
printf("+---+---+---+ \n");
printf("| 7 | 8 | 9 | \n");
printf("+---+---+---+ \n\n");
printf("Masukkan pilihan (x/o) = "); scanf("%c",&pilih);
if(pilih == 'x' || pilih=='X')
{
pemain1 = 'X';
pemain2 = 'O';
}
else if(pilih == 'o' || pilih=='O')
{
pemain1 = 'O';
pemain2 = 'X';
}
else if(pilih != 'x' || pilih != 'X' || pilih != 'o' || pilih != 'O')
{
return 0;
}
for(i=0;i<9;i++)
{
if(i%2 == 0)
printf("Pemain 1 = ");
else
printf("Pemain 2 = "); scanf("%d", &maen);
maen -=1;
baris = maen/3;
kolom = maen%3;
if(i==0)
{
awal = (struct tictact*)malloc(sizeof(struct tictact));
awal->baris = baris;
awal->kolom = kolom;
if(i%2==0)
{
tc[maen].nilai = pemain1;
awal->hasil=pemain1;
awal->jum=0;
}
else
{
tc[maen].nilai = pemain2;
awal->hasil=pemain2;
awal->jum=1;
}
awal->next = NULL;
awal->prev = NULL;
tampung = awal;
ujung = awal;
data = awal;
}
else
{
ujung = (struct tictact*)malloc(sizeof(struct tictact));
ujung->baris = baris;
ujung->kolom = kolom;
if(i%2==0)
{
tc[maen].nilai = pemain1;
ujung->hasil=pemain1;
ujung->jum=0;
}
else
{
tc[maen].nilai = pemain2;
ujung->hasil=pemain2;
ujung->jum=1;
}
ujung->next = NULL;
ujung->prev = tampung;
tampung->next = ujung;
tampung = ujung;
}
for(j=0;j<9;j++)
{
if(tc[j].nilai != ' ')
{
printf("| %c ", tc[j].nilai);
}
else
printf("| ", tc[i].nilai);
if(j==2 || j==5 || j==8) printf("|\n");
}
tampung = awal;
while(tampung!=NULL)
{
if(tampung->jum==0)
{
//Kondisi Ketika Horisontal sama X
if(tampung->kolom==0) vertikal[0]++;
else if(tampung->kolom==1) vertikal[1]++;
else if(tampung->kolom==2) vertikal[2]++;
}
//Kondisi Ketika Horisontal sama X
if((tampung->jum==0 && tampung->baris==0)) horizontal[0]++;
else if((tampung->jum==0 && tampung->baris==1)) horizontal[1]++;
else if((tampung->jum==0 && tampung->baris==2)) horizontal[2]++;
//Kondisi Ketika Vertikalnya sama O
if((tampung->jum==1 && tampung->kolom==0)) vertikal1[0]++;
else if((tampung->jum==1 && tampung->kolom==1)) vertikal1[1]++;
else if((tampung->jum==1 && tampung->kolom==2)) vertikal1[2]++;
//Kondisi Ketika Horisontal sama O
if((tampung->hasil==1 && tampung->baris==0)) horizontal1[0]++;
else if((tampung->jum==1 && tampung->baris==1)) horizontal1[1]++;
else if((tampung->jum==1 && tampung->baris==2)) horizontal1[2]++;
if(tampung->jum==0)
{
if((tampung->kolom==0) && (tampung->baris==0)) diagonal[1]++;
else if((tampung->kolom==1) && (tampung->baris==1)) diagonal[1]++;
else if((tampung->kolom==2) && (tampung->baris==2)) diagonal[1]++;
}
if(tampung->jum==0)
{
if((tampung->kolom==2) && (tampung->baris==0)) diagonal[2]++;
else if((tampung->kolom==1) && (tampung->baris==1)) diagonal[2]++;
else if((tampung->kolom==0) && (tampung->baris==2)) diagonal[2]++;
}
tampung=tampung->next;
}
tampung=ujung;
for(k=0;k<3;k++)
{
if(vertikal[k] == 3)
menang=1;
else vertikal[k] = 0;
if(vertikal1[k] == 3)
menang=1;
else vertikal1[k] = 0;
if(horizontal[k] == 3)
menang=1;
else horizontal[k] = 0;
if(horizontal1[k] == 3)
menang=1;
else horizontal1[k] = 0;
if(diagonal[k] == 3)
menang=1;
else diagonal[k] = 0;
}
if(menang==1)
{
if(i%1 == 0)
printf("\n\n Player1 MENANG\n\n");
else
if(i%2 == 0)
printf("\n\n Player2 MENANG\n\n");
getche();
break;
}
}
}
sekian saja mohon maaf mungkin ada salah penulisannya.
selamat mencoba !!!
sukses.....