Advertisement
akevintg

TUTORIAL XOX in C

Nov 2nd, 2015
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.12 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.     char xox[3][3];
  5.     int pemain;
  6.     int koordinatX,koordinatY;
  7.     int statusGame;//penanda, kalo menang nilainya 1, kalo draw 2, kalo belom keiisi semua nilainya -1 ya.-2 kalo dia mau lanjut lagi,kalo exit 0
  8.     //loop ulang game
  9.     do{
  10.         //loop awal game buat selalu pastiin semua box _;
  11.         for(koordinatX=0;koordinatX<3;koordinatX++)//loop buat ngerest biar semua balik _;
  12.             for(koordinatY=0;koordinatY<3;koordinatY++)//loop buat ngerest biar semua balik _;
  13.                 xox[koordinatX][koordinatY]='_';
  14.         //loop permainanya
  15.         statusGame=-1;//set status masih bisa di maenin(belom semua keiisi)
  16.         pemain=1;//set game dimulai dari pemain 1;
  17.         do{
  18.             printf("\n\n\n\n\n\n\n\n\n\n\n\n\n XOX GAME\n");
  19.             printf("============\n");
  20.             printf("   1 2 3 (Y)\n");
  21.            
  22.             //loop print kotak xoxonya
  23.             for(koordinatX=0;koordinatX<3;koordinatX++)
  24.                 printf(" %d %c %c %c\n",koordinatX+1,xox[koordinatX][0],xox[koordinatX][1],xox[koordinatX][2]);
  25.             printf("(X)\n");
  26.             //^sering2 copas loop ini buat print xox nya
  27.            
  28.             //loop buat nentuin mau di X/O in dimana, skelaian cek bisa ga disitu
  29.             printf("Giliran Player %d\n",pemain);
  30.             do{
  31.                 printf("Masukan Koordinat X & Y [contoh: 1 3]: ");
  32.                 scanf("%d %d",&koordinatX,&koordinatY);fflush(stdin);
  33.                 koordinatX--;//inget kalo array -1,mis input array pertama itu kan di index 0!
  34.                 koordinatY--;//idem diatas
  35.                 if(xox[koordinatX][koordinatY]!='_'){//cek kalo ga kosong loop ulang
  36.                     printf("Sudah terisi, coba koordinat yang lain!\n");
  37.                     koordinatX=-1;//supaya ngeloop ulang, dibikin -1 kan jadinya ibarat input tidak valid
  38.                 }
  39.             }while(koordinatX<0||koordinatX>2||koordinatY<0||koordinatY>2);
  40.             //selesai tentuin XO yg bisanya dimana dan udah pasti valid
  41.            
  42.             //udah sah semua ubah isi xox nya jadi X/O(pemain 1=x, pemain 2=o)
  43.             if(pemain==1){
  44.                 xox[koordinatX][koordinatY]='X';
  45.                 pemain=2;//ganti ke pemain 2, kan giliran pemain 1 udah beres
  46.             }
  47.             else if(pemain==2){//copas semua if diatas ganti jadi if pemain==2 sama = jadi O
  48.                 xox[koordinatX][koordinatY]='O';
  49.                 pemain=1;//ganti ke pemain 1, kan giliran pemain2 udah beres
  50.             }
  51.             //selesai nandainya
  52.  
  53.             // sekarang cek kondisi kalo menang
  54.             // menang itu saat 1 rata 3 XXX / OOO -> kalo ini array yang koordinat x nya sama dan koordinat y1,y2,y3 sama semua
  55.             // vertical-> kalo ini array yang koordinat y nya sama dan koordinat x1,x2,x3 sama semua
  56.             // X
  57.             // X
  58.             // X
  59.             // miring nah ini array [0][0],array [1][1], array[2][2] (bentuk"\")
  60.             //atau kebalik bentuk [/] itu array[2][0],[1][1],[1][3]
  61.             //so ada 4 cara menang setiap kali abis loop harus cek udah menang apa belom, bikin 4 if
  62.             koordinatY=0;
  63.             for(koordinatX=0;koordinatX<3;koordinatX++){//cek menang XXX/OOO kan bisa di baris 1-3
  64.                 if(xox[koordinatX][koordinatY]==xox[koordinatX][koordinatY+1]&&xox[koordinatX][koordinatY]==xox[koordinatX][koordinatY+2]&&xox[koordinatX][koordinatY]!='_')//jangan lupa !='_' kalo ga tar langsung menang
  65.                     statusGame=1;//inget tadi di awal janjian kalo menang dikasih tanda 1
  66.             }
  67.             koordinatX=0;
  68.             for(koordinatY=0;koordinatY<3;koordinatY++){//cek menang vertical kan bisa di kolom 1-3
  69.                 if(xox[koordinatX][koordinatY]==xox[koordinatX+1][koordinatY]&&xox[koordinatX][koordinatY]==xox[koordinatX+2][koordinatY]&&xox[koordinatX][koordinatY]!='_')//jangan lupa !='_' kalo ga tar langsung menang
  70.                     statusGame=1;//inget tadi di awal janjian kalo menang dikasih tanda 1
  71.             }
  72.             //kalo diagonal ga usah di loop kan udah pasti
  73.             if(xox[0][0]==xox[1][1]&&xox[1][1]==xox[2][2]&&xox[2][2]!='_')
  74.                 statusGame=1;
  75.             //satu lagi yg menang bentuk /
  76.             if(xox[2][0]==xox[1][1]&&xox[1][1]==xox[0][2]&&xox[1][1]!='_')
  77.                 statusGame=1;
  78.             //selesai cek menangnya
  79.            
  80.             //pastiin dulu masih ada yg bisa diisi ga sebelom loop ulang?
  81.             if(statusGame!=1){//cek udah menang belom?
  82.                 statusGame=2;//bikin supaya draw, kalo tar di loop ada yg _ berati keubah jadi -1
  83.                 for(koordinatX=0;koordinatX<3;koordinatX++)//loop ini buat cek asal ada 1 aja yg masih bisa diisi
  84.                     for(koordinatY=0;koordinatY<3;koordinatY++)//status game balik dari draw(0) jadi masih bisa dilanjutin(-1)
  85.                         if(xox[koordinatX][koordinatY]=='_')
  86.                             statusGame=-1;//inget perjanjian? -1 tanda masih ada yg bisa diisi
  87.                 //selesai mastiinnya ^^ lanjut loop cek mau diisi kemana
  88.             }
  89.         }while(statusGame!=1&&statusGame!=2);//keluar loop cuma kalo draw atau menang
  90.        
  91.         //print1x lagi biar keliatan bukti menang ;p kotak xoxonya
  92.         printf("\n");
  93.         for(koordinatX=0;koordinatX<3;koordinatX++)
  94.             printf(" %d %c %c %c\n",koordinatX+1,xox[koordinatX][0],xox[koordinatX][1],xox[koordinatX][2]);
  95.         //selesai print cek hasilnya
  96.        
  97.         //cek dulu keluar loop karena draw bukan?
  98.         if(statusGame==2)
  99.             printf("\nPermainan Draw\n");
  100.         else if(statusGame==1){
  101.         //tingal print yg menang
  102.         //INGET! tadi kan sempet diubah giliran, misalnya pas coret X giliran player 1 itu di ifnya
  103.         //ada di ganti pemain=2; so ga bisa langsung ya! harus di balik lagi
  104.             if(pemain==2)
  105.                 printf("\nPEMAIN 1 MENANG SELAMAT!\n");
  106.             else if(pemain==1)
  107.                 printf("\nPEMAIN 2 MENANG SELAMAT!\n");
  108.         }
  109.         printf("Main lagi (YES=1,NO=0)? ");
  110.         scanf("%d",&statusGame);
  111.     }while(statusGame!=0);
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement