Bu seferki örneğimiz baya bir uzun ve farklı karmaşık bir senaryoya sahip. Bu aşamada nesne yönelimli programlama ve fonksiyon ya da metot gibi kodlar kullanılmadan yazılacaktır. Bazen aynı işlemi birden fazla adımda yapmak gerekebilir. Bu tarz işlemler için fonksiyonlar kullanılsa daha iyi olacaktı. Bize de uzuuuuun uzuun yazmak düştü. Birazda kopyala yapıştır 😉
Öğrencilere üçgen sorusu hazırlayan bir soru hazırlama programı oluşturulacaktır. Kenar uzunlukları tamamen rastgele üretilecektir. Üretilen kenar uzunlukları kesinlikle tamsayı olacaktır. Kenar uzunlukları dik üçgen şartını (a2 + b2 =c2) sağlamalıdır. Kenar uzunlukları 20 cm’i geçmeyecektir. Ayrıca program sürekli b kenarını sormayacak hangi kenarı soracağı rastgele olacaktır. Buton1’e bastığımızda hangi kenarı sormuşsa ve cevap doğru ise Soru No artırılacak (yani Label6) Puan da 10 puan artırılacaktır.
- Ortadaki görsel aynı zamanda butonumuz. 😉
- Butona her bastığımızda hem sorulan kenar değişiyor, hem de değerler değişiyor.
- Doğru değerler girildiğinde hem soru değişiyor, hem puan arttırılıyor. vs. vs.
int[] Kenar = new int[3];
int HangiKenar;
private void frmUcgenYarismasi_Load(object sender, EventArgs e)
{
Random r = new Random();
Kenar[0] = r.Next(1, 20);
Kenar[1] = r.Next(1, 20);
Kenar[2] = r.Next(1, 20);
while (Kenar[0] * Kenar[0] != Kenar[1] * Kenar[1] + Kenar[2] * Kenar[2])
{
Kenar[0] = r.Next(1, 20);
Kenar[1] = r.Next(1, 20);
Kenar[2] = r.Next(1, 20);
}
HangiKenar = r.Next(1, 3);
if (HangiKenar == 1)
{
lblSorulanKenar.Text = "A = ";
lblB.Text = Kenar[1].ToString();
lblC.Text = Kenar[0].ToString();
}
else if (HangiKenar == 2)
{
lblSorulanKenar.Text = "B = ";
lblA.Text = Kenar[2].ToString();
lblC.Text = Kenar[0].ToString();
}
else if (HangiKenar == 3)
{
lblSorulanKenar.Text = "C = ";
lblB.Text = Kenar[1].ToString();
lblA.Text = Kenar[2].ToString();
}
}
private void button1_Click(object sender, EventArgs e)
{
if (HangiKenar == 1) // A sorulduysa
{
if (txtCevap.Text == Kenar[2].ToString()) // Cevap doğruysa
{
lblSoruNo.Text = Convert.ToString(Convert.ToInt16(lblSoruNo.Text) + 1);
lblPuan.Text = Convert.ToString(Convert.ToInt16(lblPuan.Text) + 10);
Random r = new Random();
Kenar[0] = r.Next(1, 20);
Kenar[1] = r.Next(1, 20);
Kenar[2] = r.Next(1, 20);
while (Kenar[0] * Kenar[0] != Kenar[1] * Kenar[1] + Kenar[2] * Kenar[2])
{
Kenar[0] = r.Next(1, 20);
Kenar[1] = r.Next(1, 20);
Kenar[2] = r.Next(1, 20);
}
HangiKenar = r.Next(1, 3);
if (HangiKenar == 1)
{
lblSorulanKenar.Text = "A = ";
lblA.Text = "?";
lblB.Text = Kenar[1].ToString();
lblC.Text = Kenar[0].ToString();
}
else if (HangiKenar == 2)
{
lblSorulanKenar.Text = "B = ";
lblB.Text = "?";
lblA.Text = Kenar[2].ToString();
lblC.Text = Kenar[0].ToString();
}
else if (HangiKenar == 3)
{
lblSorulanKenar.Text = "C = ";
lblC.Text = "?";
lblB.Text = Kenar[1].ToString();
lblA.Text = Kenar[2].ToString();
}
}
else
{
MessageBox.Show("Yanlış değer girdiniz. Yeniden hesaplayınız.");
}
}
else if (HangiKenar == 2)
{
if (txtCevap.Text == Kenar[1].ToString()) // Cevap doğruysa
{
lblSoruNo.Text = Convert.ToString(Convert.ToInt16(lblSoruNo.Text) + 1);
lblPuan.Text = Convert.ToString(Convert.ToInt16(lblPuan.Text) + 10);
Random r = new Random();
Kenar[0] = r.Next(1, 20);
Kenar[1] = r.Next(1, 20);
Kenar[2] = r.Next(1, 20);
while (Kenar[0] * Kenar[0] != Kenar[1] * Kenar[1] + Kenar[2] * Kenar[2])
{
Kenar[0] = r.Next(1, 20);
Kenar[1] = r.Next(1, 20);
Kenar[2] = r.Next(1, 20);
}
HangiKenar = r.Next(1, 3);
if (HangiKenar == 1)
{
lblSorulanKenar.Text = "A = ";
lblA.Text = "?";
lblB.Text = Kenar[1].ToString();
lblC.Text = Kenar[0].ToString();
}
else if (HangiKenar == 2)
{
lblSorulanKenar.Text = "B = ";
lblB.Text = "?";
lblA.Text = Kenar[2].ToString();
lblC.Text = Kenar[0].ToString();
}
else if (HangiKenar == 3)
{
lblSorulanKenar.Text = "C = ";
lblC.Text = "?";
lblB.Text = Kenar[1].ToString();
lblA.Text = Kenar[2].ToString();
}
}
else
{
MessageBox.Show("Yanlış değer girdiniz. Yeniden hesaplayınız.");
}
}
else if (HangiKenar == 3)
{
if (txtCevap.Text == Kenar[0].ToString()) // Cevap doğruysa
{
lblSoruNo.Text = Convert.ToString(Convert.ToInt16(lblSoruNo.Text) + 1);
lblPuan.Text = Convert.ToString(Convert.ToInt16(lblPuan.Text) + 10);
Random r = new Random();
Kenar[0] = r.Next(1, 20);
Kenar[1] = r.Next(1, 20);
Kenar[2] = r.Next(1, 20);
while (Kenar[0] * Kenar[0] != Kenar[1] * Kenar[1] + Kenar[2] * Kenar[2])
{
Kenar[0] = r.Next(1, 20);
Kenar[1] = r.Next(1, 20);
Kenar[2] = r.Next(1, 20);
}
HangiKenar = r.Next(1, 3);
if (HangiKenar == 1)
{
lblSorulanKenar.Text = "A = ";
lblA.Text = "?";
lblB.Text = Kenar[1].ToString();
lblC.Text = Kenar[0].ToString();
}
else if (HangiKenar == 2)
{
lblSorulanKenar.Text = "B = ";
lblB.Text = "?";
lblA.Text = Kenar[2].ToString();
lblC.Text = Kenar[0].ToString();
}
else if (HangiKenar == 3)
{
lblSorulanKenar.Text = "C = ";
lblC.Text = "?";
lblB.Text = Kenar[1].ToString();
lblA.Text = Kenar[2].ToString();
}
}
else
{
MessageBox.Show("Yanlış değer girdiniz. Yeniden hesaplayınız.");
}
}
}