Arama butonu
Bu konudaki kullanıcılar: 1 misafir
0
Cevap
408
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.





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