Oyun iki kişi tarafından oynanmaktadır. X -> 1.kişi , O -> 2.kişidir.
Örnek olarak 1.kişinin oyunu kazanması için aşağıda belirtilen üç maddeden birini yapması gerekmektedir.
- Bir satırın tamamen X olması
- Bir sütunun tamamen X olması
- Esas köşegen veya yedek köşegen tamamen X olmalıdır.
// main.cpp
#include <cstdlib> #include <iostream> using namespace std; #include "oyun.h" int main() { Oyun oyna; int hYap; oyna.baslikYazdir(); while((oyna.genelKontrol())!=2013){ oyna.tahtaGoruntule(); cout << "\nHamlenizi giriniz: " ; cin >> hYap; oyna.hamleYap(hYap); oyna.kazanmaKontrol(); } //oyna.deneme(); system("PAUSE"); return EXIT_SUCCESS; }
//oyun.cpp
#include <iostream> using namespace std; #include "oyun.h" Oyun::Oyun(){ int dene[3][3]={{0,0,0},{0,0,0},{0,0,0}}; for(sayac=0;sayac<3;sayac++){ for (sayac2=0;sayac2<3;sayac2++) tahta[sayac][sayac2]=dene[sayac][sayac2]; // İki boyutlu dizideki tüm alanlar 0 verilerek hamlelere izin veriliyor. } tHamle = 0; } void Oyun::tahtaGoruntule(){ for(sayac=0;sayac<3;sayac++){ for (sayac2=0;sayac2<3;sayac2++){ if ((sayac2%3)==0) cout << "\n"; if (tahta[sayac][sayac2]==0) cout << (sayac*3)+(sayac2+1) << " "; else{ if(tahta[sayac][sayac2]==1) cout << "X "; else if (tahta[sayac][sayac2]==2) cout << "O "; else cout << "Hata" ; } } } } void Oyun::baslikYazdir (){ cout << "Bu program DELIMUHENDIS.COM tarafindan hazirlanmistir.\n" << "Programda numarali alanlar bos oldugunu gostermektedir.\n" << "(X) 1 numarali oyuncuyu, (O) ise 2 numarali oyuncuyu gostermektedir.\n" << endl; } void Oyun::hamleYap(int hamle){ tHamle++; sira=tHamle%2; // Geçersiz hamleler önleniyor. if (((hamle<0)||(hamle>9))){ cout << "Gecersiz hamle yaptiniz.\n" << "Yeni hamle yapiniz.\n"; while((hamle<0)||(hamle>9)){ cout << "Yeni hamleniz bekleniyor."; cin >> hamle; } } // Hamlenin yeri belirleniyor. if (hamle<=3){ if(tahta[0][hamle-1]==0){ cout << "Hamleniz gerceklestirildi." << endl; tahta[0][hamle-1]=sira+1; } else{ cout << "\nHamle yaptiginiz alan doludur.\n" << "Hamleniz gecersiz sayilacaktir.\n" << "Tahta goruntulendikten sonra yeni hamlenizi yapiniz.\n" << endl; tHamle--; } } else if (hamle <=6){ if(tahta[1][(hamle%4)]==0){ cout << "Hamleniz gerceklestirildi." << endl; tahta[1][(hamle%4)]=sira+1; } else{ cout << "\nHamle yaptiginiz alan doludur.\n" << "Hamleniz gecersiz sayilacaktir.\n" << "Tahta goruntulendikten sonra yeni hamlenizi yapiniz.\n" << endl; tHamle--; } } else{ if(tahta[2][((hamle%6)-1)]==0){ cout << "Hamleniz gerceklestirildi." << endl; tahta[2][((hamle%6)-1)]=sira+1; } else{ cout << "\nHamle yaptiginiz alan doludur.\n" << "Hamleniz gecersiz sayilacaktir.\n" << "Tahta goruntulendikten sonra yeni hamlenizi yapiniz.\n" << endl; tHamle--; } } } void Oyun::kazanmaKontrol(){ if (tHamle==9) cout << "\n\n***Oyun berabere bitmistir.***" << endl; else{ if((tahta[0][0]==1 && tahta[0][1]==1 && tahta[0][2]==1) ||(tahta[0][0]==1 && tahta[1][0]==1 && tahta[2][0]==1) ||(tahta[0][0]==1 && tahta[1][1]==1 && tahta[2][2]==1) ||(tahta[0][1]==1 && tahta[1][1]==1 && tahta[2][1]==1) ||(tahta[0][2]==1 && tahta[1][2]==1 && tahta[2][2]==1) ||(tahta[0][2]==1 && tahta[1][1]==1 && tahta[2][0]==1) ||(tahta[1][0]==1 && tahta[1][1]==1 && tahta[1][2]==1) ||(tahta[2][0]==1 && tahta[2][1]==1 && tahta[2][2]==1)) { cout << "\n\nOyunu 2 numarali kisi kazanmistir.Tebrikler!" << endl; tHamle=9; } else if ((tahta[0][0]==2 && tahta[0][1]==2 && tahta[0][2]==2) ||(tahta[0][0]==2 && tahta[1][0]==2 && tahta[2][0]==2) ||(tahta[0][0]==2 && tahta[1][1]==2 && tahta[2][2]==2) ||(tahta[0][1]==2 && tahta[1][1]==2 && tahta[2][1]==2) ||(tahta[0][2]==2 && tahta[1][2]==2 && tahta[2][2]==2) ||(tahta[0][2]==2 && tahta[1][1]==2 && tahta[2][0]==2) ||(tahta[1][0]==2 && tahta[1][1]==2 && tahta[1][2]==2) ||(tahta[2][0]==2 && tahta[2][1]==2 && tahta[2][2]==2)) { cout << "\n\nOyunu 1 numarali kisi kazanmistir.Tebrikler!" << endl; tHamle=9; }; } } int Oyun::genelKontrol(){ if (tHamle == 9) return 2013; else return 2012; }
//oyun.h
#ifndef OYUN_h #define OYUN_h class Oyun { public: Oyun(); void tahtaGoruntule(); void hamleYap(int); void kazanmaKontrol(); int genelKontrol(); void baslikYazdir(); private: int tahta[3][3]; int sayac, sayac2; int tHamle; int sira; }; #endif