
Merhaba arkadaşlar bu yazımızda sizlerle c++ da herhangi bir özel veri tipi kullanmadan adam asmaca oyunu yapacağız.
veri tipinden kastımız vector,liste vb. özel veri tipleridir.
Tabi veri tipi kullanılarak daha basitçe yapılabilir ama okuduğum bölümde verdikleri ödev bu tarz olduğu için sizlerle bende blogumda paylaşmak istedim.
evet kodlarımıza geçebiliriz artık
/******
* @outhor: Vehbi Akdoğan
* @contact: mf.leqelyy@gmail.com
******/
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
#include <string>
using namespace std;
void kafaCiz();
void kolCiz();
void govdeCiz();
void ayakCiz();
void adamiGoster(int);
int kelimeGoster(string, char[], int);
int main(){
setlocale(LC_ALL, "turkish");
srand(time(0));
string secilenKelime; // seçilen kelimemiz
char girilenHarfler[5]; // girilen harfleri tutan dizimiz
int yanlisSayisi, // yanlış sayımız adamın gösterilmesi açısından
girilenSayisi, // girilen harflerin sayısı
islem = 1; // program başlangıcı
bool girilmisMi; // tam tahmin yapılmışmı kontrolü ?
string kelimeler[10] = {
"Ataturk", "Universitesi", "Bilgisayar", "Muhendisligi", "Bolumu", "Erzurum", "Nesne", "Yonelimli", "Programlama", "Dersi"
};
while (islem){
yanlisSayisi = 0;
girilenSayisi = 0;
girilmisMi = 0;
/* Sistem Yapılandırma yapıldı */
secilenKelime = kelimeler[rand() % 9]; // kelimemizi seçtik
cout << "//--------------------- Adam Asmaca(" << secilenKelime << ") --------------------- // \nHoşgeldiniz...! \nOyunun Herhangi Bir aşamasında tahminde bulunmak için 1 e basınız. \n";
for (int i = 1; i <= 5; i++){ // toplam 5 bilme hakkı verdik
cout << "Harf Tahmin/isteği Giriniz: ";
cin >> girilenHarfler[girilenSayisi];
girilenSayisi++; // girilen harf sayısını artırdık
if (girilenHarfler[girilenSayisi - 1] == '1' || (i == 5 && girilmisMi == 0)){ // kelime tahmin etmek istiyorum ( Yada zorunlu tahmin)
string tahminKelime;
cout << "Tahmin Ettiğiniz Kelime?: ";
cin >> tahminKelime;
if (tahminKelime == secilenKelime){
cout << "Tebrikler Kelimeyi bildinizz :) \nYeniden oynamak için 2 ye basınız.\n ";
adamiGoster(yanlisSayisi);
cin >> islem;
break;
}
else{
if (i == 5){ // son tahmindeysek bitişe gidiyoruz
cout << "Üzgünüm Bilemediniz :( \nYeniden oynamak için 2 ye basınız.\n ";
adamiGoster(yanlisSayisi);
cin >> islem;
break;
}
else{
cout << "Üzgünüm Bilemediniz :( \n";
adamiGoster(yanlisSayisi);
}
}
girilmisMi = 1;
}
else{ // harf varmı diye bak
int cevap = kelimeGoster(secilenKelime, girilenHarfler, girilenSayisi);
if (cevap == 0) yanlisSayisi++; // harf yanlışsa yanlış sayımız artsın
adamiGoster(yanlisSayisi);
if (cevap == 2){
cout << "Tebrikler Kelimeyi bildinizz :) \n";
break;
}
}
if (i == 5){
cout << "Üzgünüm Bilemediniz :( \nYeniden oynamak için 2 ye basınız.\n ";
adamiGoster(yanlisSayisi);
cin >> islem;
}
}
if (islem != 2 || islem != 1){
cout << "Girmiş olduğunuz işlem numarası oyunumuzda bulunmadığından dolayı sizi kovuyorum :D :D \n";
break;
}
}
return 0;
}
int kelimeGoster(string secilenKelime, char girilenHarfler[13], int girilenSayisi){
int yolla = 0, bilinenHarfSayisi = 0;
cout << "Kelime: ";
for (int i = 0; i < secilenKelime.length(); i++){
int esSayaci = 0; // eşleşen harfleri say
for (int j = 0; j < girilenSayisi; j++){
if (secilenKelime[i] == girilenHarfler[j]) {
if (j == girilenSayisi - 1) yolla = 1; // son girilen harf kelimemizde varsa geriye bir döndür main:65. satıra bak
esSayaci++; // eşleşme yoksa sfır olur aşağıda çizgi çizilir satır:99
bilinenHarfSayisi++;
cout << girilenHarfler[j];
break; // içteki döngüyü bitir
}
}
if (esSayaci == 0) cout << " _ "; // bilinmeyen harfler yerine çizgi çiz.
}
cout << "\nGirilen Harfler: ";
for (int i = 0; i < girilenSayisi; i++)
cout << girilenHarfler[i] << ",";
if (bilinenHarfSayisi == secilenKelime.length()) yolla == 2; // kelime harf harf bilindi :) imkansız ama olurmu olur :D
cout << "\n//--------------------------------------------------------------- // \n";
return yolla;
}
/* adam çizme fonksiyonları */
void kafaCiz(){
cout << "|" << setw(14) << "( )" << endl;
}
void govdeCiz(){
cout << "|" << right << setw(13) << "|" << endl << "|" << right << setw(13) << "|" << endl << "|" << right << setw(13) << "|" << endl;
}
void kolCiz(){
cout << "|" << right << setw(14) << "/|\\" << endl << "|" << right << setw(15) << "/ | \\" << endl << "|" << right << setw(13) << "|" << endl;
}
void ayakCiz(){
cout << "|" << right << setw(14) << "/ \\" << endl;
}
void adamiGoster(int yanlisSayisi) {
cout << "Adamın Son Durumu : \n__________________\n";
if (yanlisSayisi == 0) cout << "|" << endl;
else if (yanlisSayisi == 1) kafaCiz();
else if (yanlisSayisi == 2){
kafaCiz();
govdeCiz();
}
else if (yanlisSayisi == 3){
kafaCiz();
kolCiz();
}
else if (yanlisSayisi == 4){
kafaCiz();
kolCiz();
ayakCiz();
}
else cout << endl;
cout << endl;
}
Kodlarımız bu kadar arkadaşlar anlamayanlar takıldıkları yerleri sorabilirler.
programımızın çalışan .exe uzantılı dosyasını Buradan
Çalışma dosyalarını ise Buradan İndirebilirsiniz.
Hiç yorum yok:
Yorum Gönder