Şimdi Ara

C++ programında anlayamadığım bir yer var. Yardımcı olur musunuz ?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
1
Cevap
0
Favori
364
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj

  • #include <iostream>
    #include <Windows.h>
    #include <vector>
    #include <ctime>
    using namespace std;

    void Ciz(int hataSayisi); //Ciz fonksiyonunun prototipi
    //kullandigimiz konsolun handle'i
    HANDLE konsol = GetStdHandle(STD_OUTPUT_HANDLE);
    //konsol ekraninda gezinmemiz icin koordinatlar
    COORD ekran;
    int main()
    {
    //tahmin edilecek kelimelerimiz
    //buraya kelime ekleyerek genisletebilirsiniz
    vector<string> kelimeler;
    kelimeler.push_back("OYUN");
    kelimeler.push_back("PROGRAMLAMA");
    kelimeler.push_back("AKSARAY");
    kelimeler.push_back("GEOMETRI");
    kelimeler.push_back("ELEKTRONIK");
    kelimeler.push_back("DERS");
    kelimeler.push_back("ANKARA");

    //random hep ayni degerden baslamasin. karistiralim
    srand(time(0));
    //kelimelerimiz arasindan rastgele 1 tane secelim
    string kelime = kelimeler[rand()%kelimeler.size()];
    //oyuncunun tahmini tutacak degisken
    string tahmin;
    //cikan harfleri tutacak degisken
    string cikan;
    //tahminimizi cizgi karakteri ile dolduralim
    //ekrana o sekilde yazdirarak kac karakter oldugu hakkinda fikir verecez
    for (int i = 0; i < kelime.size(); i++)
    tahmin += '-';
    //dar agacimizi cizelim
    Ciz(0);

    //oyuncunun yaptigi tahmini tutacak
    char karakter = ' ';
    //hata sayimizi tutacak
    int hata = 0;

    //eger oyuncu kelimeyi bulamadiysa ve hata siniri asmadiysa devam et
    while ((kelime != tahmin) && (hata < 6))
    {
    //ekranda 20;5 koordinatina git( _ _ _ _ _ için)
    ekran.X = 20;
    ekran.Y = 5;
    SetConsoleCursorPosition(konsol,ekran);
    //tahmin durumumuzu oraya yazdir. cizgi ve buldugumuz karakterler
    cout<<tahmin;



    //0;16 koordinatina git
    ekran.X = 0;
    ekran.Y = 16;




    SetConsoleCursorPosition(konsol,ekran);
    //cikan harfleri yazdir

    cout<<"Cikan Harfler: "<<cikan<<endl;
    //oyuncudan tahmin iste
    cout<<"Tahmininiz : ";
    //oyuncunun tahminini al. 1'den fazla karakter, hatta tum kelimeyi girebilir
    //her karakter icin dongu tekrarlanacagi icin ayrica kontrol etmeye gerek yok
    cin>>karakter;
    //karakteri buyuk harfe cevirelim
    karakter = toupper(karakter);



    // cikan harflere ekleyelim
    cikan += karakter;
    //bulunmasi gereken kelimede tahmin ettigimiz harfler var mi kontrolu
    bool varmi = false; //baslangicta yok sayiyoruz, varsa true yapacaz
    for (int i = 0; i < kelime.size(); i++) //kelimedeki harfleri tek tek gezelim
    {
    if (kelime[i] == karakter) //eger kelimedeki karakter ile tahmin ettigimiz ayni ise var
    {
    varmi = true; //buldugumuz icin true, ancak dongu devam edecek, 1'den fazla olabilir ayni harf
    tahmin.erase(tahmin.begin() + i); //tahminden cizgiyi cikartalim
    tahmin.insert(tahmin.begin() + i, karakter); //o yere artik buldugumuz karakteri yazalim
    }
    }
    if (!varmi) //eger kullanicinin tahmini dogruysa, hatasini arttirmaya ve yeni cizim yapmaya gerek yok
    Ciz(++hata);
    }
    //buraya gelirse oyun bitti demektir
    //bitis mesajini yazdirmak icin, ekranda orta bir yere git
    ekran.X = 20;
    ekran.Y = 11;
    SetConsoleCursorPosition(konsol, ekran);
    //eger hatasi 6 ise kaybetti
    if (hata == 6)
    cout<<"KAYBETTINIZ!... "<<"Dogru kelime: "<<kelime;

    else //hatasi 6 degilse kazanmis demektir
    cout<<"TEBRIKLER!... "<<"Dogru kelime: "<<kelime;



    }
    //ekrana adam asmayi cizim islemi
    void Ciz(int hataSayisi)
    {
    //hata sayisina gore cizim yapalim
    switch (hataSayisi)
    {
    case 0: //ilk cizim, henuz hata yok
    cout
    <<" _________"<<endl
    <<" | |"<<endl
    <<" | |"<<endl
    <<" |"<<endl
    <<" |"<<endl
    <<" |"<<endl
    <<" |"<<endl
    <<" |"<<endl
    <<" |"<<endl
    <<" |"<<endl
    <<" |"<<endl
    <<" |"<<endl
    <<" |"<<endl
    <<" / \\ ";
    break;
    case 1: //kafa cizimi. imleci tasiyarak cizim
    ekran.X = 8;
    ekran.Y = 3;
    SetConsoleCursorPosition(konsol,ekran);
    cout<<" 000";
    ekran.Y++;
    SetConsoleCursorPosition(konsol,ekran);
    cout<<"0 0";
    ekran.Y++;
    SetConsoleCursorPosition(konsol,ekran);
    cout<<" 000";break;
    case 2: //govde cizimi. imleci tasiyarak cizim
    ekran.X = 10;
    ekran.Y = 6;
    for (int i = 0; i < 4; i++)
    {
    SetConsoleCursorPosition(konsol,ekran);
    cout<<"|";
    ekran.Y++;
    }
    break;
    case 3: //sol kol cizimi. imleci tasiyarak cizim (sag sol bize gore, asilan adama gore degil =) )
    ekran.X = 9;
    ekran.Y = 7;
    for (int i = 0; i < 2; i++)
    {
    SetConsoleCursorPosition(konsol,ekran);
    cout<<"/";
    ekran.Y++;
    ekran.X--;
    }
    break;
    case 4: //sag kol cizimi. imleci tasiyarak cizim
    ekran.X = 11;
    ekran.Y = 7;
    for (int i = 0; i < 2; i++)
    {
    SetConsoleCursorPosition(konsol,ekran);
    cout<<"\\";
    ekran.Y++;
    ekran.X++;
    }
    break;
    case 5: //sol bacak cizimi. imleci tasiyarak cizim
    ekran.X = 9;
    ekran.Y = 10;
    for (int i = 0; i < 2; i++)
    {
    SetConsoleCursorPosition(konsol,ekran);
    cout<<"/";
    ekran.Y++;
    ekran.X--;
    }
    break;
    case 6: //sag bacak cizimi. imleci tasiyarak cizim
    ekran.X = 11;
    ekran.Y = 10;
    for (int i = 0; i < 2; i++)
    {
    SetConsoleCursorPosition(konsol,ekran);
    cout<<"\\";
    ekran.Y++;
    ekran.X++;
    }
    break;
    }
    }




    HANDLE konsol = GetStdHandle(STD_OUTPUT_HANDLE);

    Bu kod bloğunda get ve std yi ne için koyduk anlamı nedir ?

    COORD ekran;

    Ne demek ? Görevi nedir ?
    Yardımcı olursanız sevinirim.



    < Bu mesaj bu kişi tarafından değiştirildi Fr4nk26 -- 22 Aralık 2016; 21:42:29 >







  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.