C# Console'daki Do-While örneğini nasıl Windows Form'a çeviririm?

0x91

Hectopat
Katılım
23 Şubat 2021
Mesajlar
1.253
Çözümler
6
Daha fazla  
Cinsiyet
Erkek
[CODE lang="csharp" title="Bu kodu nasıl Windows Form app a çevirebilirim?"]int sayac = 1;
int tahmin;

Random rastgele = new Random();
int tutulanSayi = rastgele.Next(0, 1000);

do
{
Console.Write(sayac + ". Tahmininizi giriniz: ");
tahmin = int.Parse(Console.ReadLine());

if (tahmin > tutulanSayi && sayac<=10) Console.WriteLine("Aşağı");
else if (tahmin < tutulanSayi && sayac <= 10) Console.WriteLine("Yukarı");
else if (tahmin == tutulanSayi)
{
Console.WriteLine("TEBRİKLER... " + sayac + ". denemede bildiniz. ");
}

sayac++;

if (sayac > 10)
Console.WriteLine("Hakkınız doldu!");

}
while (tahmin != tutulanSayi && sayac<=10);

Console.ReadKey();[/CODE]

Console örneğini Windows Form App örneği olarak çevirmek istiyorum ama bir türlü yapamadım.

Nasıl yapabilirim?
 
Bildiğim kadarıyla console uygulamasındaki input girişinin benzeri (Console.ReadKey) form uygulamasında yok. Bu yüzden farklı yöntem uygulamak gerekiyor. Bunun için VisualBasic kütüphanesinden InputBox çekebilir ya da kendi özel InputBox'ınızı oluşturabilirsiniz. İnternette bulduğum kodu düzenleyip denedim ve sorunsuz çalıştı. Ben şöyle bir form tasarımı yaptım siz de form tasarlayın:

form.png


Aşağıdaki kodu kopyalayıp düzenlemeden çalıştırabilmeniz için formda olması gerekenler:
  • lblHak adında bir Label.
  • listDeneme adında bir ListBox.
  • lblSonuc adında bir Label.
  • lblSayi adında bir Label.
Öncelikle VisualBasic.dll dosyasını referans olarak projenize eklemeniz gerekiyor. Projeye referans eklemek için "Solution Explorer" panelinde projenize sağ tıklayın. "Add > Reference..." butonlarını takip edin. Açılan pencerede sol üstte bulunan "Assemblies" butonuna tıklayın ve orta kısımda "Microsoft.VisualBasic" seçeneğini bulup işaretleyin. Sağ alttan "OK" butonuna tıklayın. Son olarak formun kod kısmına gelin ve en üstteki kütüphanelerin altına şunu ekleyin:

C#:
using Microsoft.VisualBasic

Aşağıdaki kodu bir butonun "Click" eventi içine yazın. Yukarıdaki örnekte bu buton "Tahmin Et" butonu.

C#:
int kalanHak = 10;
            lblHak.Text = kalanHak.ToString();
            string tahminMetin;
            int tahmin;
            Random rastgele = new Random();
            int tutulanSayi = rastgele.Next(0, 1000);
            do
            {
                tahminMetin = Interaction.InputBox("Tahmininizi giriniz:", "Tahmin", "", 400, 400);
                if (tahminMetin != "") tahmin = int.Parse(tahminMetin);
                else tahmin = 0;
                listDeneme.Items.Add(tahmin.ToString());
                if (tahmin > tutulanSayi) lblDurum.Text = "ÜSTÜNDE";
                else if (tahmin < tutulanSayi) lblDurum.Text = "ALTINDA";
                else if (tahmin == tutulanSayi)
                {
                    lblSonuc.Text = "TEBRİKLER! Sayıyı bildiniz.";
                    lblSonuc.ForeColor = Color.Green;
                    lblSayi.Text = tutulanSayi.ToString();
                }
                kalanHak--;
                lblHak.Text = kalanHak.ToString();
                if (kalanHak == 0)
                {
                    lblSonuc.Text = "KAYBETTİNİZ!";
                    lblSonuc.ForeColor = Color.Red;
                    lblSayi.Text = tutulanSayi.ToString();
                }
            }
            while (tahmin != tutulanSayi && kalanHak > 0);
 
Bildiğim kadarıyla console uygulamasındaki input girişinin benzeri (Console.ReadKey) form uygulamasında yok. Bu yüzden farklı yöntem uygulamak gerekiyor. Bunun için VisualBasic kütüphanesinden InputBox çekebilir ya da kendi özel InputBox'ınızı oluşturabilirsiniz. İnternette bulduğum kodu düzenleyip denedim ve sorunsuz çalıştı. Ben şöyle bir form tasarımı yaptım siz de form tasarlayın:

Eki Görüntüle 1360535

Aşağıdaki kodu kopyalayıp düzenlemeden çalıştırabilmeniz için formda olması gerekenler:
  • lblHak adında bir Label.
  • listDeneme adında bir ListBox.
  • lblSonuc adında bir Label.
  • lblSayi adında bir Label.
Öncelikle VisualBasic.dll dosyasını referans olarak projenize eklemeniz gerekiyor. Projeye referans eklemek için "Solution Explorer" panelinde projenize sağ tıklayın. "Add > Reference..." butonlarını takip edin. Açılan pencerede sol üstte bulunan "Assemblies" butonuna tıklayın ve orta kısımda "Microsoft.VisualBasic" seçeneğini bulup işaretleyin. Sağ alttan "OK" butonuna tıklayın. Son olarak formun kod kısmına gelin ve en üstteki kütüphanelerin altına şunu ekleyin:

C#:
using Microsoft.VisualBasic

Aşağıdaki kodu bir butonun "Click" eventi içine yazın. Yukarıdaki örnekte bu buton "Tahmin Et" butonu.

C#:
int kalanHak = 10;
            lblHak.Text = kalanHak.ToString();
            string tahminMetin;
            int tahmin;
            Random rastgele = new Random();
            int tutulanSayi = rastgele.Next(0, 1000);
            do
            {
                tahminMetin = Interaction.InputBox("Tahmininizi giriniz:", "Tahmin", "", 400, 400);
                if (tahminMetin != "") tahmin = int.Parse(tahminMetin);
                else tahmin = 0;
                listDeneme.Items.Add(tahmin.ToString());
                if (tahmin > tutulanSayi) lblDurum.Text = "ÜSTÜNDE";
                else if (tahmin < tutulanSayi) lblDurum.Text = "ALTINDA";
                else if (tahmin == tutulanSayi)
                {
                    lblSonuc.Text = "TEBRİKLER! Sayıyı bildiniz.";
                    lblSonuc.ForeColor = Color.Green;
                    lblSayi.Text = tutulanSayi.ToString();
                }
                kalanHak--;
                lblHak.Text = kalanHak.ToString();
                if (kalanHak == 0)
                {
                    lblSonuc.Text = "KAYBETTİNİZ!";
                    lblSonuc.ForeColor = Color.Red;
                    lblSayi.Text = tutulanSayi.ToString();
                }
            }
            while (tahmin != tutulanSayi && kalanHak > 0);
Tek kelimeyle mükemmelsiniz.
 
Tek kelimeyle mükemmelsiniz.
Ne diyeceğimi bilemedim. 😅 Teşekkürler. Bu arada söylemeyi unuttum. Form uygulamasında sayı tahmin oyunu için Do-While kullanmak yerine farklı kodlar yazarak daha iyi sonuç elde edebilirsiniz. Yukarıdaki örnek biraz zorlama oldu. Visual Basic ayrı bir dildir. Visual Basic'te bulunan bir şeyi C# içinde kullanmamız gerekti. Bu yapıyı kullanmak uğruna işimizi zorlaştırdık. Size önerim neyi nerede nasıl daha verimli ve kolay yapabiliyorsanız öyle yapmanız. Yazılımın amacı sadece bir şeyler inşa etmek değil bir şeyleri en yüksek verimle inşa etmektir. İyi çalışmalar.
 

Geri
Yukarı