C#'de Kim Milyoner İster yarışma projesinde joker yapımı

Dediğim kısım //sorular 2 yazan yerden sonra geliyor soru 2 veya 2.1'e bakarsanız orada while döngüsünü görürsünüz.



Hocam nedir son durum görebildiniz mi hatayı.
Hocam proje aşırı geniş değilse tüm kodu buraya atar mısınız? GDrive paylaşmak yerine? Konsol uygulaması olduğu için tek source file ile çalıştığınızı düşünüyorum. Tüm kodu buraya atın inceleyelim. Kod atmadan önce kodu "kod kutucuğu"na alınki okumak daha rahat olsun.
1672608638969.png


Ek olarak while kullanarak yazmışsınız, if kullanın kodda. while döngüdür ve break kullanmadıkça veya telefonjokeri sayısı 0 dan başka bir şey olmadıkça döngüden çıkmayacak.
 
Hocam proje aşırı geniş değilse tüm kodu buraya atar mısınız? Gdrive paylaşmak yerine? Konsol uygulaması olduğu için tek Source file ile çalıştığınızı düşünüyorum. Tüm kodu buraya atın inceleyelim. Kod atmadan önce kodu "kod kutucuğu"na alınki okumak daha rahat olsun.
Eki Görüntüle 1620601

Ek olarak while kullanarak yazmışsınız, if kullanın kodda. While döngüdür ve break kullanmadıkça veya telefonjokeri sayısı 0'dan başka bir şey olmadıkça döngüden çıkmayacak.

5500 satırlık bir proje hocam ama soru 2'nin kısmını atayım.

C#:
        Console.WriteLine("Joker Haklarınız:");
        Console.WriteLine("Telefon Jokeriniz = " + " " + Telefon);
        Console.WriteLine("YarıYarıya Jokeriniz =" + " " + YarıYarıya);
        Console.WriteLine("Seyirci Jokeriniz =" + " " + Seyirci);
        Console.WriteLine("Joker Kulanmak İçin 1,2 Veya 3 Tuşlarından Birisine Basınız");
        Console.WriteLine("1 = TELEFON JOKERİ(İLBER ORTAYLI)");
        Console.WriteLine("2 = YARI YARIYA JOKER HAKKI");
        Console.WriteLine("3 = SEYİRCİ JOKER HAKKI");
        Console.WriteLine();
        Console.WriteLine();


        string[] sorular2 = new string[5];
        sorular2[0] = "Soru 2-Depremin büyüklüğünü ve süresini ölçen alete ne ad verilir ?\nA-Tomograf B-Sismograf\nC-Avometre D-Barometre";

        sorular2[1] = "Soru 2-Aşağıdakilerden hangisi çocuk hastalığıdır?\nA-Kabakulak B-Grip\nC-Nezle D-Kanser";

        sorular2[2] = "Soru 2-İstanbul hangi coğrafi bölgemizde yer almaktadır?\nA-Karadeniz B-Marmara\nC-Akdeniz D-İç Anadolu";

        sorular2[3] = "Soru 2-Deniz yüzeyinin altında ve üstünde yol alabilen savaş veya araştırma gemisi hangisidir?\nA-Jetski B-Hovercraft\nC-Feribot D-Denizaltı";

        sorular2[4] = "Soru 2-Türkiye’nin en fazla yağış alan ili hangisidir?\nA-İstanbul B-Antalya\nC-Rize D-Ankara";


        Random rnd2 = new Random();
        int rastgele2 = rnd2.Next(0, sorular2.Length);
        Console.WriteLine("" + sorular2[rastgele2]);
        //2. soru cevap
        if (rastgele2 == 0)
        {
            //jokerler
            string c2 = Console.ReadLine();
            switch (c2)
            {
                case "1":
                    while (Telefon == 0)
                    {
                        Console.WriteLine("Joker Hakkınız Bitmiştir");
                        c2 = Console.ReadLine();
                    }

                    Console.WriteLine("İLBER ORTAYLI Aranıyor...");
                    Console.WriteLine("İLBER ORTAYLI: Bence Cevap B");

                    Telefon--;
                    Console.WriteLine("Cevabın:");
                    c2 = Console.ReadLine();
                    break;

                case "2":
                    while (YarıYarıya == 0)
                    {
                        Console.WriteLine("Joker Hakkınız Bitmiştir");
                        c2 = Console.ReadLine();
                    }

                    YarıYarıya--;
                    Console.WriteLine("CEVAP A YADA B");
                    Console.WriteLine("Cevabın:");
                    c2 = Console.ReadLine();
                    break;


                case "3":
                    while (Seyirci == 0)
                    {
                        Console.WriteLine("Joker Hakkınız Bitmiştir");
                        c2 = Console.ReadLine();
                    }
                    Seyirci--;
                    Console.WriteLine("Seyircilerin Cevapları:" + " " + "%10A" + " " + "%60B" + " " + "%10C" + " " + "%20D");
                    Console.WriteLine("Cevabın:");
                    c2 = Console.ReadLine();
                    break;



            }

            switch (c2)
            {

                case "B":
                    Para += 5000;
                    Console.WriteLine("Tebrikler Cevabınız Doğru Kazancınız" + " " + Para + "TL");
                    Console.WriteLine();
                    Console.WriteLine("Sıradaki Soru Geliyor Hazır Ol!");
                    Console.WriteLine();
                    Console.WriteLine();
                    Console.WriteLine("Ama Yinede Soralım Çekilmek İstersen Evet Yada Hayır Yazman Yeterli");
                    break;

                default:
                    Console.WriteLine("Cevabınız Yanlış Kazancınız = " + Para + "TL");
                    Environment.Exit(0);
                    break;

            }

            //ÇEKİLME KISMI
            Console.WriteLine();
            Console.WriteLine();
            c2 = Console.ReadLine();
            if (c2 == "EVET" || c2 == "evet")
            {

                Console.WriteLine("Yarışmadan Çekildiniz Kazancınız " + Para + "TL");
                Environment.Exit(0);
            }

        }

Eğer break kullanırsam direk alt kısma yani jokeri tekrardan kullandırtan kısma atacak o yüzden kullanmamıştım ama kaldım böyle.
 
Okay hata çok basit.
while kullandığın için. İlk olarak if kullan.
C#:
if(Telefon == 0) {
    Console.WriteLine("Joker Hakkınız Bitmiştir."); 
    break; 
}
Ek olarak inputu sürekli caselerde istemekten vazgeç.
break dediğin zaman seni switchten dışarıya atacak.
Düzenleyin kodu sonra tekrar paylaşın benimle. Anlamadığınız bir şey olunca söylersiniz.
 
Hocam şimdi şöyle dediğiniz bir yere kadar doğru ama yarışmacı diyelimki 1 e bastı joker hakkınız bitmiştir yazısını gördü ama elinde olan diğer jokerleri kullanmak isteyecektir ve 2 ye bastığımda direk cevabımı yanlış olarak kabul ediyor :)
 
Hocam şimdi şöyle dediğiniz bir yere kadar doğru ama yarışmacı diyelimki 1 e bastı joker hakkınız bitmiştir yazısını gördü ama elinde olan diğer jokerleri kullanmak isteyecektir ve 2 ye bastığımda direk cevabımı yanlış olarak kabul ediyor :)
O zaman goto kullanabilirsiniz yada switchi while döngüsüne alabilirsiniz. Bir kontrol mekanizması eklersiniz. Switch'den dışarı çıktıktan sonra istenen şartlar karşılanmadıysa tekrar input ister. Örneğin;
C#:
bool jokersor = true;
while(jokersor) {
    string c2 = Console.ReadLine();
    switch(c2) {
        case 0:
            if(Telefon == 0) {
                Console.WriteLine("Telefon hakkınız bitmiştir!");
                break;
            }
            //programın yapması gereken şeyleri ekle
            jokersor = false;
        break;
    }
}
Yada goto.

C#:
burayadon:
string c2 = Console.ReadLine();
switch(c2) {
    case "1":
        if(Telefon == 0) {
            Console.WriteLine("Telefon hakkınız bitmiştir!");
            goto burayadon;
        }
        //programın yapması gereken şeyleri ekle
    break;
}
 
O zaman goto kullanabilirsiniz ya da Switch'i while döngüsüne alabilirsiniz. Bir kontrol mekanizması eklersiniz. Switch'den dışarı çıktıktan sonra istenen şartlar karşılanmadıysa tekrar input ister. Örneğin;
C#:
bool jokersor = true;
while(jokersor) {
 string c2 = Console.ReadLine();
 switch(c2) {
 case 0:
 if(Telefon == 0) {
 Console.WriteLine("Telefon hakkınız bitmiştir!");
 break;
 }
 //programın yapması gereken şeyleri ekle.
 jokersor = false;
 break;
 }
}
Ya da goto.

C#:
burayadon:
string c2 = Console.ReadLine();
switch(c2) {
 case "1":
 if(Telefon == 0) {
 Console.WriteLine("Telefon hakkınız bitmiştir!");
 goto burayadon;
 }
 //programın yapması gereken şeyleri ekle.
 break;
}

Goto kullanmamız yasak .d kolay yoldan gidemiyorum yani.

O zaman goto kullanabilirsiniz ya da Switch'i while döngüsüne alabilirsiniz. Bir kontrol mekanizması eklersiniz. Switch'den dışarı çıktıktan sonra istenen şartlar karşılanmadıysa tekrar input ister. Örneğin;
C#:
bool jokersor = true;
while(jokersor) {
 string c2 = Console.ReadLine();
 switch(c2) {
 case 0:
 if(Telefon == 0) {
 Console.WriteLine("Telefon hakkınız bitmiştir!");
 break;
 }
 //programın yapması gereken şeyleri ekle.
 jokersor = false;
 break;
 }
}
Ya da goto.

C#:
burayadon:
string c2 = Console.ReadLine();
switch(c2) {
 case "1":
 if(Telefon == 0) {
 Console.WriteLine("Telefon hakkınız bitmiştir!");
 goto burayadon;
 }
 //programın yapması gereken şeyleri ekle.
 break;
}

Yine de teşekkürler hocam yarın bu dersin finali var ödev süresine kadar dediklerinizi deneyeceğim iyi geceler.
 
Son düzenleme:
Bu şekilde kullanır mısın?

C#:
private int telefon = 3, seyirci = 3;
        private void haklar(int KullanılanHak)
        {
            switch (KullanılanHak)
            {
                case 1:
                    while (telefon >= 0)
                    {
                        if (telefon > 0)
                        {
                            telefon--;
                            MessageBox.Show("+");
                        }
                        else
                        {
                            MessageBox.Show("Hak gg");
                        }
                        break;
                    }
                    break;
                case 2:
                    while (seyirci >= 0)
                    {
                        if (seyirci > 0)
                        {
                            seyirci--;
                            MessageBox.Show("++");
                        }
                        else
                        {
                            MessageBox.Show( "Seyirci Hak gg");
                        }
                        break;
                    }
                    break;
            }
        }

Çağırma esnasında bunu yapıyorsun.
C#:
haklar(1);
 
merhaba. dün akşam 5000 satırı gördükten sonra açıkçası biraz üşendim ve işlerimden dolayı bakamadım 😀

soru dataları hariç kodu 500 satıra kadar düşürdüm ve dinamik hale getirdim. isterseniz gönderdiğim projeyi kendi çözümünüze uyarlayabilirsiniz ya da gerekli düzenlemeleri yapıp bunu da kullanabilirsiniz.

kodu okuyarak yaptığınız hatayı kendiniz anlamanız daha iyi olacaktır.

Proje Link bağlantı üzerinden projeyi indirebilirsiniz.
 

Technopat Haberler

Yeni konular

Geri
Yukarı