Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int main(){
- char xox[3][3];
- int pemain;
- int koordinatX,koordinatY;
- 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
- //loop ulang game
- do{
- //loop awal game buat selalu pastiin semua box _;
- for(koordinatX=0;koordinatX<3;koordinatX++)//loop buat ngerest biar semua balik _;
- for(koordinatY=0;koordinatY<3;koordinatY++)//loop buat ngerest biar semua balik _;
- xox[koordinatX][koordinatY]='_';
- //loop permainanya
- statusGame=-1;//set status masih bisa di maenin(belom semua keiisi)
- pemain=1;//set game dimulai dari pemain 1;
- do{
- printf("\n\n\n\n\n\n\n\n\n\n\n\n\n XOX GAME\n");
- printf("============\n");
- printf(" 1 2 3 (Y)\n");
- //loop print kotak xoxonya
- for(koordinatX=0;koordinatX<3;koordinatX++)
- printf(" %d %c %c %c\n",koordinatX+1,xox[koordinatX][0],xox[koordinatX][1],xox[koordinatX][2]);
- printf("(X)\n");
- //^sering2 copas loop ini buat print xox nya
- //loop buat nentuin mau di X/O in dimana, skelaian cek bisa ga disitu
- printf("Giliran Player %d\n",pemain);
- do{
- printf("Masukan Koordinat X & Y [contoh: 1 3]: ");
- scanf("%d %d",&koordinatX,&koordinatY);fflush(stdin);
- koordinatX--;//inget kalo array -1,mis input array pertama itu kan di index 0!
- koordinatY--;//idem diatas
- if(xox[koordinatX][koordinatY]!='_'){//cek kalo ga kosong loop ulang
- printf("Sudah terisi, coba koordinat yang lain!\n");
- koordinatX=-1;//supaya ngeloop ulang, dibikin -1 kan jadinya ibarat input tidak valid
- }
- }while(koordinatX<0||koordinatX>2||koordinatY<0||koordinatY>2);
- //selesai tentuin XO yg bisanya dimana dan udah pasti valid
- //udah sah semua ubah isi xox nya jadi X/O(pemain 1=x, pemain 2=o)
- if(pemain==1){
- xox[koordinatX][koordinatY]='X';
- pemain=2;//ganti ke pemain 2, kan giliran pemain 1 udah beres
- }
- else if(pemain==2){//copas semua if diatas ganti jadi if pemain==2 sama = jadi O
- xox[koordinatX][koordinatY]='O';
- pemain=1;//ganti ke pemain 1, kan giliran pemain2 udah beres
- }
- //selesai nandainya
- // sekarang cek kondisi kalo menang
- // menang itu saat 1 rata 3 XXX / OOO -> kalo ini array yang koordinat x nya sama dan koordinat y1,y2,y3 sama semua
- // vertical-> kalo ini array yang koordinat y nya sama dan koordinat x1,x2,x3 sama semua
- // X
- // X
- // X
- // miring nah ini array [0][0],array [1][1], array[2][2] (bentuk"\")
- //atau kebalik bentuk [/] itu array[2][0],[1][1],[1][3]
- //so ada 4 cara menang setiap kali abis loop harus cek udah menang apa belom, bikin 4 if
- koordinatY=0;
- for(koordinatX=0;koordinatX<3;koordinatX++){//cek menang XXX/OOO kan bisa di baris 1-3
- 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
- statusGame=1;//inget tadi di awal janjian kalo menang dikasih tanda 1
- }
- koordinatX=0;
- for(koordinatY=0;koordinatY<3;koordinatY++){//cek menang vertical kan bisa di kolom 1-3
- 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
- statusGame=1;//inget tadi di awal janjian kalo menang dikasih tanda 1
- }
- //kalo diagonal ga usah di loop kan udah pasti
- if(xox[0][0]==xox[1][1]&&xox[1][1]==xox[2][2]&&xox[2][2]!='_')
- statusGame=1;
- //satu lagi yg menang bentuk /
- if(xox[2][0]==xox[1][1]&&xox[1][1]==xox[0][2]&&xox[1][1]!='_')
- statusGame=1;
- //selesai cek menangnya
- //pastiin dulu masih ada yg bisa diisi ga sebelom loop ulang?
- if(statusGame!=1){//cek udah menang belom?
- statusGame=2;//bikin supaya draw, kalo tar di loop ada yg _ berati keubah jadi -1
- for(koordinatX=0;koordinatX<3;koordinatX++)//loop ini buat cek asal ada 1 aja yg masih bisa diisi
- for(koordinatY=0;koordinatY<3;koordinatY++)//status game balik dari draw(0) jadi masih bisa dilanjutin(-1)
- if(xox[koordinatX][koordinatY]=='_')
- statusGame=-1;//inget perjanjian? -1 tanda masih ada yg bisa diisi
- //selesai mastiinnya ^^ lanjut loop cek mau diisi kemana
- }
- }while(statusGame!=1&&statusGame!=2);//keluar loop cuma kalo draw atau menang
- //print1x lagi biar keliatan bukti menang ;p kotak xoxonya
- printf("\n");
- for(koordinatX=0;koordinatX<3;koordinatX++)
- printf(" %d %c %c %c\n",koordinatX+1,xox[koordinatX][0],xox[koordinatX][1],xox[koordinatX][2]);
- //selesai print cek hasilnya
- //cek dulu keluar loop karena draw bukan?
- if(statusGame==2)
- printf("\nPermainan Draw\n");
- else if(statusGame==1){
- //tingal print yg menang
- //INGET! tadi kan sempet diubah giliran, misalnya pas coret X giliran player 1 itu di ifnya
- //ada di ganti pemain=2; so ga bisa langsung ya! harus di balik lagi
- if(pemain==2)
- printf("\nPEMAIN 1 MENANG SELAMAT!\n");
- else if(pemain==1)
- printf("\nPEMAIN 2 MENANG SELAMAT!\n");
- }
- printf("Main lagi (YES=1,NO=0)? ");
- scanf("%d",&statusGame);
- }while(statusGame!=0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement