# include # include # include # include # include # include # include # include # include # include using namespace std; class yaris { public: const string f1yariscilari[8] = {"Hamilton", "Bottas", "Perez", "Verstappen", "Ricciardo", "Leclerc", "Sainz", "Albon"}; const string motoyariscilari[8] = {"Dovizioso", "Zarco", "Petrucci", "Quartararo", "Morbidelli", "Lecuona", "Nakagami", "Rossi"}; int sure = 0; int adim1; int adim2; int f1ilkyarisci; int f1ikinciyarisci; int ilkyarisci; int ikinciyarisci; int a; ifstream kayitoku; fstream fkaydet; ifstream mkayitoku; fstream mkaydet; void f1sirala(); void msirala(); static int yarisma; void sayac(); void adimtopla(); }; template < class T> T adim(T n1, T n2) { return (n1 + n2); } void yaris::adimtopla() { cout << adim(adim1, adim2) << endl; } int yaris::yarisma; void yaris::sayac() { cout << " " << yarisma << " " << endl; cout << " " << endl; cout << " NOT: Program her kapanip acildiginda bu sayi sifirlanir." << endl; } void yaris::f1sirala() { for (int i = 0; i < 8; i++) { cout << " " << f1yariscilari[i] << endl; } } void yaris::msirala() { for (int i = 0; i < 8; i++) { cout << " " << motoyariscilari[i] << endl; } } class motoryaris: public yaris { public: void motoryariscisisec(); void motoryarisibaslat(); void mbaslat(); void msonuc(); void sonuckaydet(); void msonucgoster(); virtual void yarisbasliyor() { cout << "Yaris Basliyor!" << endl; } }; void motoryaris::msonucgoster() { ifstream mkayitoku("msonuclar.txt"); string satir = ""; if (mkayitoku.is_open()) { while (getline(mkayitoku, satir)) { cout << satir << endl; } mkayitoku.close(); } else cout << "Acilacak dosya bulunamadi" << endl; } void motoryaris::sonuckaydet() { if (a == 0) { mkaydet.open("msonuclar.txt", ios::out | ios:: in | ios::app); mkaydet << adim1 - adim2 << " tur fark ile yarisi kazanan yarisci: " << motoyariscilari[ ilkyarisci] << endl; mkaydet.close(); } else if (a == 1) { mkaydet.open("msonuclar.txt", ios::out | ios:: in | ios::app); mkaydet << adim2 - adim1 << " tur fark ile yarisi kazanan yarisci: " << motoyariscilari[ ikinciyarisci] << endl; mkaydet.close(); } else { mkaydet.open("msonuclar.txt", ios::out | ios:: in | ios::app); mkaydet << motoyariscilari[ilkyarisci] << " ile " << motoyariscilari[ ikinciyarisci] << " berabere kaldılar " << endl; mkaydet.close(); } mkaydet.open("msonuclar.txt", ios::out | ios:: in | ios::app); mkaydet << "toplam tur sayilari: " << endl; mkaydet << motoyariscilari[ilkyarisci] << " : " << adim1 << endl; mkaydet << motoyariscilari[ikinciyarisci] << " : " << adim2 << endl; mkaydet.close(); } void motoryaris::msonuc() { if (adim1 > adim2) { a = 0; } else if (adim1 < adim2) { a = 1; cout << adim2 - adim1 << " tur fark ile yarisi kazanan yarisci: " << motoyariscilari[ ikinciyarisci] << endl; } else { a = 2; cout << motoyariscilari[ilkyarisci] << " ile " << motoyariscilari[ ikinciyarisci] << " berabere kaldılar " << endl; } cout << "toplam tur sayilari: " << endl; cout << motoyariscilari[ilkyarisci] << " : " << adim1 << endl; cout << motoyariscilari[ikinciyarisci] << " : " << adim2 << endl; sonuckaydet(); } void motoryaris::motoryariscisisec() { srand(time(0)); for (int i = 0; i < 1; i++) { yarisma + +; ilkyarisci = rand() % 8; ikinciyarisci = rand() % 8; if (ilkyarisci == ikinciyarisci) { while (ilkyarisci != ikinciyarisci) { ilkyarisci = rand() % 8; ikinciyarisci = rand() % 8; } } else { cout << motoyariscilari[ilkyarisci] << endl; cout << motoyariscilari[ikinciyarisci] << endl; mbaslat(); } } } void motoryaris::mbaslat() { sure = 0; adim1 = 0; adim2 = 0; srand(time(0)); yarisbasliyor(); cout << " ZAMAN(dakika)" << endl; while (sure < 120) { int r = rand() % 100; sure = sure + 1; Sleep(200); if (r < 15) { adim1 = adim1 + 1; cout << " Ilerleme! " << motoyariscilari[ilkyarisci] << " 1 adim ilerledi. Yarisin suresi : " << sure << endl; } else if (r > 15 & & r < 30) { adim2 = adim2 + 1; cout << " Ilerleme! " << motoyariscilari[ikinciyarisci] << " 1 adim ilerledi. Yarisin suresi : " << sure << endl; } else { cout << " " << sure << endl; } } msonuc(); } void motoryaris::motoryarisibaslat() { motoryariscisisec(); } class f1yaris: public yaris { public: void f1yariscisisec(); void f1yarisibaslat(); void f1baslat(); void f1sonuc(); void f1sonuckaydet(); void f1sonucgoster(); void yarisbasliyor() { cout << "Yaris Basliyor!" << endl; } }; void f1yaris::f1sonucgoster() { ifstream fkayitoku("fsonuclar.txt"); string satir = ""; if (fkayitoku.is_open()) { while (getline(fkayitoku, satir)) { cout << satir << endl; } fkayitoku.close(); } else cout << "Acilacak dosya bulunamadi" << endl; } void f1yaris::f1sonuckaydet() { if (a == 0) { fkaydet.open("fsonuclar.txt", ios::out | ios:: in | ios::app); fkaydet << adim1 - adim2 << " tur fark ile yarisi kazanan yarisci: " << f1yariscilari[ f1ilkyarisci] << endl; fkaydet.close(); } else if (a == 1) { fkaydet.open("fsonuclar.txt", ios::out | ios:: in | ios::app); fkaydet << adim2 - adim1 << " tur fark ile yarisi kazanan yarisci: " << f1yariscilari[ f1ikinciyarisci] << endl; fkaydet.close(); } else { fkaydet.open("fsonuclar.txt", ios::out | ios:: in | ios::app); fkaydet << f1yariscilari[f1ilkyarisci] << " ile " << f1yariscilari[ f1ikinciyarisci] << " berabere kaldılar " << endl; fkaydet.close(); } fkaydet.open("fsonuclar.txt", ios::out | ios:: in | ios::app); fkaydet << "toplam tur sayilari: " << endl; fkaydet << f1yariscilari[f1ilkyarisci] << " : " << adim1 << endl; fkaydet << f1yariscilari[f1ikinciyarisci] << " : " << adim2 << endl; fkaydet.close(); } void f1yaris::f1sonuc() { if (adim1 > adim2) { a = 0; cout << adim1 - adim2 << " tur fark ile yarisi kazanan yarisci: " << f1yariscilari[f1ilkyarisci] << endl; } else if (adim1 < adim2) { a = 1; cout << adim2 - adim1 << " tur fark ile yarisi kazanan yarisci: " << f1yariscilari[ f1ikinciyarisci] << endl; } else { a = 2; cout << f1yariscilari[f1ilkyarisci] << " ile " << f1yariscilari[ f1ikinciyarisci] << " berabere kaldılar " << endl; } cout << "toplam tur sayilari: " << endl; cout << f1yariscilari[f1ilkyarisci] << " : " << adim1 << endl; cout << f1yariscilari[f1ikinciyarisci] << " : " << adim2 << endl; } void f1yaris::f1yariscisisec() { srand(time(0)); for (int i = 0; i < 1; i++) { yarisma + +; f1ilkyarisci = rand() % 8; f1ikinciyarisci = rand() % 8; if (f1ilkyarisci == f1ikinciyarisci) { while (f1ilkyarisci != f1ikinciyarisci) { int f1ilkyarisci = rand() % 8; int f1ikinciyarisci = rand() % 8; } } else { cout << "Ilk yarisci : " << f1yariscilari[f1ilkyarisci] << endl; cout << "Ikinci yarisci : " << f1yariscilari[f1ikinciyarisci] << endl; f1baslat(); } } } void f1yaris::f1baslat() { sure = 0; adim1 = 0; adim2 = 0; srand(time(0)); yarisbasliyor(); cout << " ZAMAN(dakika)" << endl; while (sure < 120) { int r = rand() % 100; sure = sure + 1; Sleep(200); if (r < 15) { adim1 = adim1 + 1; cout << " Ilerleme! " << f1yariscilari[f1ilkyarisci] << " 1 adim ilerledi. Yarisin suresi : " << sure << endl; } else if (r > 15 & & r < 30) { adim2 = adim2 + 1; cout << " Ilerleme! " << f1yariscilari[f1ikinciyarisci] << " 1 adim ilerledi. Yarisin suresi : " << sure << endl; } else { cout << " " << sure << endl; } } f1sonuc(); f1sonuckaydet(); } void f1yaris::f1yarisibaslat() { f1yariscisisec(); } class Menu { public: string anamenu(); string bilgimenu(); string baslamenu(); string okumenu(); string istatistikveyariscilar(); }; string Menu::anamenu() { string choice; cout << "***********************************************************" << endl; cout << " * 1-Yarisa Basla * " << endl; cout << " * 2-Oyun hakkinda bilgi * " << endl; cout << " * 3-Sonuclari gor * " << endl; cout << " * 4-Yarisci listesini ve istatistikleri gor * " << endl; cout << " * 5-Cikis yap * " << endl; cout << "***********************************************************" << endl; cin >> choice; cout << "***********************************************************" << endl; return choice; } string Menu::bilgimenu() { string choice; cout << "***********************************************************" << endl; cout << " Oyunu baslat secenegine tikladiginizda karsiniza f1 ve moto olarak 2 secenek cikar f1'e tikladiginizda gercekte var olan 8 tane f1 yarismacisi arasından 2 tanesini secip 120 tur yaristirir.Moto ya tikladiginizda ise ayni islem moto gp yariscilari icin gerceklesir " << endl; cout << "***********************************************************" << endl; cout << " " << endl; cout << " 2- Ana menu " << endl; cout << "***********************************************************" << endl; cin >> choice; cout << "***********************************************************" << endl; return choice; } string Menu::baslamenu() { string choice; cout << "***********************************************************" << endl; cout << " 1- F1 yarisi " << endl; cout << " " << endl; cout << " 2- Motogp yarisi " << endl; cout << " " << endl; cout << " 3- Ana menuye don " << endl; cout << "***********************************************************" << endl; cin >> choice; cout << "***********************************************************" << endl; return choice; } string Menu::okumenu() { string choice; cout << "***********************************************************" << endl; cout << " 1- F1 yarisi sonuclarini gor " << endl; cout << " " << endl; cout << " 2- Motogp yarisi sonuclarini gor " << endl; cout << " " << endl; cout << " 3- Ana menuye don " << endl; cout << "***********************************************************" << endl; cin >> choice; cout << "***********************************************************" << endl; return choice; } string Menu::istatistikveyariscilar() { string choice; cout << "***********************************************************" << endl; cout << " 1- F1 yariscilarini gor " << endl; cout << " " << endl; cout << " 2- Motogp yariscilarini gor " << endl; cout << " " << endl; cout << " 3- Program calistirildiktan sonra kac kere yaris yapildigi gor " << endl; cout << " " << endl; cout << " 4- Program calistirildiktan sonra yariscilarin toplam kac adim attigini gor " << endl; cout << " " << endl; cout << " 5- Ana menuye don " << endl; cout << "***********************************************************" << endl; cin >> choice; cout << "***********************************************************" << endl; return choice; } int main() { Menu m; f1yaris c; motoryaris d; yaris x; cout << "menuler arasinda secim yapabilmek icin yapacaginiz islemin basinda yazan numarayi programa girmeniz gerekir" << endl; for (;;) { string choice_m = m.anamenu(); if (choice_m == "1") { choice_m = m.baslamenu(); if (choice_m == "1") { c.f1yarisibaslat(); } else if (choice_m == "2") { d.motoryarisibaslat(); } else if (choice_m == "3") { m.anamenu(); } } else if (choice_m == "2") { choice_m = m.bilgimenu(); } else if (choice_m == "3") { choice_m = m.okumenu(); if (choice_m == "1") { c.f1sonucgoster(); } else if (choice_m == "2") { d.msonucgoster(); } else if (choice_m == "3") { m.anamenu(); } } else if (choice_m == "4") { choice_m = m.istatistikveyariscilar(); if (choice_m == "1") { x.f1sirala(); } else if (choice_m == "2") { x.msirala(); } else if (choice_m == "3") { x.sayac(); } else if (choice_m == "4") { x.adimtopla(); } else if (choice_m == "5") { m.anamenu(); } } else if (choice_m == "5") break; } };