Arama butonu
Bu konudaki kullanıcılar: 1 misafir
0
Cevap
409
Tıklama
0
Öne Çıkarma
C++ programında anlayamadığım bir yer var. Yardımcı olur musunuz ?
F
9 yıl
Onbaşı
Konu Sahibi


#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.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





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

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.