Arkadaşlar merhaba c# dilinde bir uygulama yapıyorum
Fakat 2 tane fonksiyonun içinde tekrar eden “dönen rastgele sayıların her defasında eşitliğini” kontrol ediyorum
Ben bir fonksiyon yapıp iki fonksiyonumun içinde tekrar eden kodu tek fonksiyon altında toplayıp öyle çağırmak istiyorum sanırım beceremedim cünkü farklı değerleri karşılıyor yardımcı olursanız sevinirim
Kodlarımın ilgili kısmı şu şekilde;
private void btnOyunaBasla_Click(object sender, EventArgs e)
{
int sayac = 0;
foreach (NumericUpDown item in gBoxTahminler.Controls)
{
tahminSayilari[sayac] = Convert.ToInt32(item.Value);
sayac++;
}
tahminSayilari = DiziSirala(tahminSayilari);
sayac = 5;
foreach (NumericUpDown item in gBoxTahminler.Controls)
{
item.Value = tahminSayilari[sayac];
sayac--;
}
if (DiziSorunsuzMu(tahminSayilari))
{
lblMesaj.Text = "Sayılar Kaydedildi... Oyun Başlıyor...";
gBoxTutulanlar.Visible = true;
foreach (NumericUpDown item in gBoxTahminler.Controls)
{
item.Enabled = false;
}
btnSistemTahmin.Enabled = false;
btnOyunaBasla.Enabled = false;
for (int i = 0; i < 6; i++)
{
tutulanSayilar[i] = RastgeleSayiGetir(tutulanSayilar);
}
int diziIndex = 0;
foreach (NumericUpDown item in gBoxTutulanlar.Controls)
{
int eglenceSayac = 0;
do
{
rasgele = new Random();
int sayi = rasgele.Next(1, 49);
item.Value = sayi;
System.Threading.Thread.Sleep(50);
Application.DoEvents();
eglenceSayac++;
} while (eglenceSayac <= 8);
item.Value = tutulanSayilar[diziIndex];
diziIndex++;
}
btnSonucGoster.Visible = true;
}
else
{
lblMesaj.Text = "Bir sayı 1 defa kullanılır...";
}
}
Manuel olarak sisteme sayı girildiğinde bu fonksiyonu kullanıyorum
private void btnSistemTahmin_Click(object sender, EventArgs e)
{
for (int i = 0; i < 6; i++)
{
// diziye sıra sıra atıyor gelen rastgele sayıları
tahminSayilari[i] = RastgeleSayiGetir(tahminSayilari);
}
tahminSayilari = DiziSirala(tahminSayilari);
int sayac = 5;
foreach (NumericUpDown item in gBoxTahminler.Controls)
{
item.Value = tahminSayilari[sayac];
sayac--;
}
lblMesaj.Text = "Sistem Sayıları Oluşturdu...";
}
Eğer sistemin tahmin etmesini istersem bu fonksiyonu kullanıyorum
private int RastgeleSayiGetir(int[] gelenDizi)
{
bool sayiVarMi;
do
{
sayiVarMi = false;
rasgele = new Random();
rasgeleSayi = rasgele.Next(1, 49);
for (int i = 0; i < gelenDizi.Length; i++)
{
if (gelenDizi[i] == rasgeleSayi)
{
sayiVarMi = true;
break;
}
}
} while (sayiVarMi);
return rasgeleSayi;
}
Bana yardımcı olması için ortak bir fonksiyonla gelen rastgele sayıları üretip aynı zamanda eşitliğini kontrol ediyorum
Ve şu fonksiyonuda kullanıyorum bir yerlerde
private bool DiziSorunsuzMu(int[] gelenDizi)
{
bool sorunsuzMu = true;
for (int i = 0; i < 5; i++)
{
for (int j = i + 1; j < 6; j++)
{
if (gelenDizi[i] == gelenDizi[j])
{
sorunsuzMu = false;
break;
}
}
}
return sorunsuzMu;
}
Dizinin sorunsuzmu olup olmadıgını kontrol ediyorum
RastgeleSayı ve DiziSorunsuzmu Fonksiyonlarında eşitliği kontrol ettiğim yerleri tek bir fonksiyon içinde yazıp gelen değerle işleme soksam olurmu sizce?
Basit ama yapamadım belki anlatamadım derdimi şimdiden teşekkürler