Make TicTacToe Game With C++

Rabu, 06 April 2011

Tic-tac-toe, also rendered wick wack woe (in some Asian countries), or noughts and crosses/Xs and Os as it is known in the UK, Australia and New Zealand, is a paper and pencil for two players, X and O, who take turns marking the spaces in a 3×3 grid. The X player usually goes first. The player who succeeds in placing three respective marks in a horizontal, vertical, or diagonal row wins the game.

The following example game is won by the first player, X:


This is the screenshoot of my program:



This is the Source Code :


#include
#include
#include
#include

/*######################################
# Created By:Dany Preistian D'Bokerz #
*/######################################
struct tictact{
int baris;
int kolom;
char hasil;
int jum;
struct tictact *prev;
struct tictact *next;
};
struct tictac1{
int baris;
int kolom;
char nilai;
};

main(){
char pemain1, pemain2;
char pilih;
int i = 0, j, k=0;
int coba[9];
int maen, baris, kolom;
int vertikal[3] = {0,0,0}, horizontal[3] = {0,0,0};
static int vertikal1[3], horizontal1[3];
static int diagonal[12];
int menang;

struct tictact *awal, *tampung, *ujung, *data;
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';
}
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){ //printf("%d %d %d||", tampung->kolom, tampung->baris, tampung->jum);
//Kondisi Ketika Vertikalnya sama X
if(tampung->jum==0){
if(tampung->kolom==0) vertikal[0]++;
else if(tampung->kolom==1) vertikal[1]++;
else if(tampung->kolom==2) vertikal[2]++;
}

//Kondisi Ketika Vertikalnya 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 Vertikalnya 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]++;
}

if(tampung->jum==1){
if((tampung->kolom==0) && (tampung->baris==0)) diagonal[3]++;
else if((tampung->kolom==1) && (tampung->baris==1)) diagonal[3]++;
else if((tampung->kolom==2) && (tampung->baris==2)) diagonal[3]++;
}
if(tampung->jum==1){
if((tampung->kolom==2) && (tampung->baris==0)) diagonal[4]++;
else if((tampung->kolom==1) && (tampung->baris==1)) diagonal[4]++;
else if((tampung->kolom==0) && (tampung->baris==2)) diagonal[4]++;
}

tampung=tampung->next;
}

//data = tampung;
tampung=ujung;
for(k=0;k<3;k++){
//printf("%d | ", vertikal[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;
}
for(k=0;k<4;k++){
//printf("%d | ", vertikal[k]);
if(diagonal[k] == 3)
menang=1;
else diagonal[k] = 0;
}

if(menang==1) {
if(i%2 == 0)
printf("\n\n Player1 MENANG\n\n");
else printf("\n\n Player2 MENANG\n\n");
break;
}
}
}
READ MORE - Make TicTacToe Game With C++

 
 
 

Label

Label