Merhabalar, bu dersimizde sizlere oyunlarda kurabileceğimiz rastgele işlemlerden bahsetmek istiyorum. Örnek olarak size bir sayısal loto oyunu hazırladım en basit ve anlaşılır bir örnek olarak umarım beğenirsiniz.

Şimdi ilk olarak sizlere form'a eklediklerimden bahsedeyim.


    [*]7 Tane Timer
    [*]18 Tane Label
    [*]6 Tane Text
    [*]1 Tane Picture
    [*]1 Tane Command

İlk olarak ben kodlamama timer1 ile başladım ve rastgele bir sayı atamasını istedim:
Dim loto As Integer
Dim tutan As Integer
tutan = loto1.Text
Randomize
loto = Int((60 * Rnd) + 1)
sayi1.Caption = loto

If tutan = sayi1.Caption Then
aciklama.Caption = "Tebrikler, 1'de 1"
Label3.Caption = Val(Label3.Caption) + Val(1)
Else
aciklama.Caption = "Moralimizi bozmayalım, 1'de 0"
End If

Timer2.Enabled = True
Timer1.Enabled = False
Şimdi ise size yazdığımız kodu açıklıyorum: "tutan" adında bir sayısal döngü oluşturdum Randomize ile rastgele bir sayı atamasını istedim oluşturduğu bu sayıyı loto1.text'in içine göndermesi emrini verdim. "loto" değişkeni ise 1 ile 60 arasında bir sayı bulmasını istedim. Ve bir şart oluşturdum, eğer tutan değişkeni sayi1.text ile aynıysa yani benim girdiğim sayı ile aynıysa 1. sayıyı tutturmuş oldum. Eğer sayım tuttuysa gizli olarak eklediğim label3 "0" iken "1" oldu. Eğer sayım tutmadıysa label3 değişmedi. Ardından timer2'yi aktif ettim ve timer1'i sonlandırdım.

Timer1'in mantığını anladıysanız Timer6'ya kadar aynı işlemi devam ettirebilirsiniz. Sadece "sayi" ve "loto" nesnelerinin adlarını değiştirmeniz yeterli olacaktır:

Private Sub Timer2_Timer()
Dim loto As Integer
Dim tutan As Integer
tutan = loto2.Text
Randomize
loto = Int((60 * Rnd) + 1)
sayi2.Caption = loto

If tutan = sayi2.Caption Then
aciklama.Caption = "Tebrikler, 2.sayınız tuttu"
Label3.Caption = Val(Label3.Caption) + Val(1)
Else
aciklama.Caption = "Karavana ...."
End If

Timer3.Enabled = True
Timer2.Enabled = False
End Sub

Private Sub Timer3_Timer()
Dim loto As Integer
Dim tutan As Integer
tutan = loto3.Text
Randomize
loto = Int((60 * Rnd) + 1)
sayi3.Caption = loto

If tutan = sayi3.Caption Then
aciklama.Caption = "Tebrikler, 3.sayınız tuttu"
Label3.Caption = Val(Label3.Caption) + Val(1)
Else
aciklama.Caption = "Üzgünüz 3. sayı tutmadı ...."
End If

Timer4.Enabled = True
Timer3.Enabled = False
End Sub

Private Sub Timer4_Timer()
Dim loto As Integer
Dim tutan As Integer
tutan = loto4.Text
Randomize
loto = Int((60 * Rnd) + 1)
sayi4.Caption = loto

If tutan = sayi4.Caption Then
aciklama.Caption = "Tebrikler, 4.sayınız tuttu"
Label3.Caption = Val(Label3.Caption) + Val(1)
Else
aciklama.Caption = "Üzgünüz 4. sayı tutmadı ...."
End If

Timer5.Enabled = True
Timer4.Enabled = False
End Sub

Private Sub Timer5_Timer()
Dim loto As Integer
Dim tutan As Integer
tutan = loto5.Text
Randomize
loto = Int((60 * Rnd) + 1)
sayi5.Caption = loto

If tutan = sayi5.Caption Then
aciklama.Caption = "Tebrikler, 5.sayınız tuttu"
Label3.Caption = Val(Label3.Caption) + Val(1)
Else
aciklama.Caption = "Üzgünüz 5. sayı tutmadı ...."
End If

Timer6.Enabled = True
Timer5.Enabled = False
End Sub

Private Sub Timer6_Timer()
Dim loto As Integer
Dim tutan As Integer
tutan = loto6.Text
Randomize
loto = Int((60 * Rnd) + 1)
sayi6.Caption = loto

If tutan = sayi6.Caption Then
aciklama.Caption = "Tebrikler, 6.sayınız tuttu"
Label3.Caption = Val(Label3.Caption) + Val(1)
Else
aciklama.Caption = "Üzgünüz 6. sayı tutmadı ...."
End If

Timer7.Enabled = True
Timer6.Enabled = False
End Sub
Evet, 6 adet timer'ın kodlamasını tamamladım ve şimdi oyun bittiğinde bizim toplam kazancımızı hesaplaması için bir timer daha oluşturuyorum (Timer7):

Dim sonuclar As String
sonuclar = Label3.Caption
Select Case sonuclar
Case Is = 1
sonuc.Caption = "100 TL"
Case Is = 2
sonuc.Caption = "1000 TL"
Case Is = 3
sonuc.Caption = "200.000 TL"
Case Is = 4
sonuc.Caption = "750.000 TL"
Case Is = 5
sonuc.Caption = "1.000.000 TL"
Case Is = 6
sonuc.Caption = "BÜYÜK ÖDÜL! 42.515.000 TL"
Case Else
sonuc.Caption = "0 TL"
End Select
Burada ise çoklu bir değişken (Case) ataması yaptım.Az önce Label3'e ne gerek var demiş olabilirsiniz işte burada devreye label3 giriyor. Tutan her sayımda label3 1,1,1 artıyor. Neyse ben size kodu anlatayım şöyle:
Bir sayısal değişken atıyorum, ardından Select case döngümü oluşturuyorum. Diyorum ki eğer label3 eşitse 1'e kazanacağım ödül 100 TL. Bu döngüyü 6'ya kadar devam ettiyorum. Case Else kısmında ise geriye sadece 0 seçeneği kalıyor çünkü bizim kullandığımız 6 adet eleman var ve 1 ile 6 arasında. Ve buda otomatikmen değilse demek oluyor ve "0" yani hiç tutturamadık anl***** geliyor.

Projeden Bir Ekran Görüntüsü:



Yukarda ki resimde gördüğünüz gibi sadece 1 (4.sıra) sayı tuttura bildim

Ve kazancım atadığım değer 100 TL oldu. Siz kendi fikirlerinize göre düzenleyebilirsiniz.

[COLOR=Red]Örnek Projeyi İndir:[/COLOR] Sayısal Loto.rar

kaynak