#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 T adim(T n1, T n2) { return (n1 + n2); } void yaris::adimtopla() { cout << adim(adim1, adim2) << endl; } int yaris::yarisma; void yaris::sayac() { cout << " "< 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; } };