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 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; } } } |



0 komentar:
Posting Komentar