![]() | |
| | ||
![]() |
| | Seçenekler |
| | #1 |
| Oyun için gerekli olan nesneler 3 command button,4 maskeditbox,2 label,1 listbox(labeller yerine değişken de kullanabilirsiniz) isteyenler oyunun orjinal şeklini [For Members][Üye Özel] adresinden indirebilir. SAYI BULMA OYUNU Const OLE_ACTIVATE = 7 Dim i As Variant Dim j As Integer Dim check As Boolean Dim a As Variant Dim değer As Variant Dim b(1 To 4) As Variant Dim sonuç As Integer Dim giriş As Variant Dim rastgelesayı(1 To 4) As Integer Dim girilensayı(1 To 4) As Variant Dim dizi1(1 To 4) As Variant Dim dizi2(1 To 6) As Variant Dim dizi3(1 To 4) As Variant Dim dizi4(1 To 24) As Variant Dim dizi5(1 To 36) As Variant Dim dizi6(1 To 8) As Variant Dim dizi7(1 To 12) As Variant Dim dizi8(1 To 6) As Variant Dim dizi9(1 To 12) As Variant Dim dizi10(1 To 42) As Variant Dim dizi11(1 To 44) As Variant Dim dizi12(1 To 7) As Variant Dim dizi15(1 To 207) As Variant Private Sub Command1_Click() t(0).SetFocus 'Kullanıcı tarafından girilen sayıları diziye aktaralım For i = 1 To 4 girilensayı(i) = t(i - 1) Next i 'Listbox'ta kullanıcının girdiği değerleri görmesi için 'giriş değişkenine aktaralım giriş = t(0) & t(1) & t(2) & t(3) 'kutulara girilen karakterlerin boş ve alfanimerik olmamasını sağlayalım For i = 1 To 4 b(i) = InStr(1, l, girilensayı(i)) Next i 'karşılaştırmada kullanacağımız sonuçları değer değişkenine aktaralım l1 = b(1) & b(2) & b(3) & b(4) değer = Val(l1) 'Karşılaştırmaları yapalım For i = 0 To 3 If değer = dizi1(4)(i) Then sonuç = 1 Exit For End If Next i For i = 0 To 5 If değer = dizi2(6)(i) Then sonuç = 2 Exit For End If Next i For i = 0 To 3 If değer = dizi3(4)(i) Then sonuç = 3 Exit For End If Next i For i = 0 To 23 If değer = dizi4(24)(i) Then sonuç = 4 Exit For End If Next i For i = 0 To 35 If değer = dizi5(36)(i) Then sonuç = 5 Exit For End If Next i For i = 0 To 7 If değer = dizi6(8)(i) Then sonuç = 6 Exit For End If Next i For i = 0 To 11 If değer = dizi7(12)(i) Then sonuç = 7 Exit For End If Next i For i = 0 To 5 If değer = dizi8(6)(i) Then sonuç = 8 Exit For End If Next i For i = 0 To 11 If değer = dizi9(12)(i) Then sonuç = 9 Exit For End If Next i For i = 0 To 41 If değer = dizi10(42)(i) Then sonuç = 10 Exit For End If Next i For i = 0 To 43 If değer = dizi11(44)(i) Then sonuç = 11 Exit For End If Next i For i = 0 To 6 If değer = dizi12(7)(i) Then sonuç = 12 Exit For End If Next i If değer = 1234 Then sonuç = 13 l.Visible = True End If If değer = 0 Then sonuç = 14 End If 'Girilen sayının boş karakter olmamasını sağlayalım For i = 0 To 3 If Not IsNumeric(t(i)) Then yanlışgiriş Exit For End If Next i 'Aynı sayıların tekrar girilmemesini sağlayalım If t(0) = t(1) Or t(0) = t(2) Or t(0) = t(3) Or t(1) = t(2) Or t(1) = t(3) Or t(2) = t(3) Then yanlışgiriş2 'sonuçları listbox'a yazdıralım Select Case sonuç Case 1: OLE5.Action = OLE_ACTIVATE lbx.AddItem giriş + " +3" Case 2: OLE5.Action = OLE_ACTIVATE lbx.AddItem giriş + " +2" Case 3: OLE5.Action = OLE_ACTIVATE lbx.AddItem giriş + " +1" Case 4: OLE5.Action = OLE_ACTIVATE lbx.AddItem giriş + " +1 -1" Case 5: OLE5.Action = OLE_ACTIVATE lbx.AddItem giriş + " +1 -2" Case 6: OLE5.Action = OLE_ACTIVATE lbx.AddItem giriş + " +1 -3" Case 7: OLE5.Action = OLE_ACTIVATE lbx.AddItem giriş + " +2 -1" Case 8: OLE5.Action = OLE_ACTIVATE lbx.AddItem giriş + " +2 -2" Case 9: OLE5.Action = OLE_ACTIVATE lbx.AddItem giriş + " -1" Case 10: OLE5.Action = OLE_ACTIVATE lbx.AddItem giriş + " -2" Case 11: OLE5.Action = OLE_ACTIVATE lbx.AddItem giriş + " -3" Case 12: OLE5.Action = OLE_ACTIVATE lbx.AddItem giriş + " -4" Case 13: OLE2.Action = OLE_ACTIVATE lbx.AddItem giriş + " TEBRİKLER" l.Visible = True Case 14: OLE3.Action = OLE_ACTIVATE lbx.AddItem giriş + " Hiçbiri Yok" End Select End Sub 'Yanlış giriş için altyordam Private Sub yanlışgiriş() OLE4.Action = OLE_ACTIVATE MsgBox "Kutuları Boş bırakamaz ve sadece rakam girebilirsiniz.!!! " sonuç = 0 End Sub 'Yanlış giriş için altyordam Private Sub yanlışgiriş2() OLE4.Action = OLE_ACTIVATE MsgBox "Aynı rakamı iki kere giremezsiniz!!! " sonuç = 0 End Sub Private Sub Command2_Click() 'Çıkış için seçenek tanıyalım seçim = MsgBox("Çıkmak istediğinizden emin misiniz?", 20, "Sayı Bulma Oyunu") If seçim = 6 Then OLE6.Action = OLE_ACTIVATE MsgBox "Program hakkındaki düşünce ve önerilerinizi ogunonrat@softhome.net adresine mail atarsanız sevinirim." End Else Form1.Refresh End If End Sub 'Yeniden oynamak için seçenek Private Sub Command3_Click() seçim = MsgBox("Yeniden başlamak istediğinizden emin misiniz?", 20, "Sayı Bulma Oyunu") If seçim = 6 Then sayıüret Else Form1.Refresh End If End Sub 'Yeniden oynamak için alt yordam Private Sub sayıüret() Randomize l = "" lbx.Clear rastgelesayı(1) = Int(Rnd * 10) For i = 2 To 4 Do rastgelesayı(i) = Int(Rnd * 10) check = True For j = 1 To i - 1 If rastgelesayı(i) = rastgelesayı(j) Then check = False Exit For End If Next j Loop Until check Next i 'Rastgele üretilen sayıyı karşılaştırma yapabilmek için string'e çevirelim 've oyun sonunda göstermek için l label'ine atalım For i = 1 To 4 l = l & rastgelesayı(i) Next i l = CStr(l) l.Visible = False End Sub Private Sub Form_Load() Randomize OLE1.Action = OLE_ACTIVATE OLE7.Action = OLE_ACTIVATE 'Aşağıdaki tanımlanan diziler matamatiksel olarak manuel 'hesaplanmıştır. 4 basamaklı 2 variant değerin karşılaş 'tırılması sonucu albileceği değerlerdir. dizi1(4) = Array(1230, 1204, 1034, 234) dizi2(6) = Array(1200, 1030, 1004, 230, 204, 34) dizi3(4) = Array(1000, 200, 30, 4) dizi4(24) = Array(1400, 1040, 1020, 1002, 1300, 1003, 3200, 203, 4200, 240, 210, 201, 31, 130, 2030, 32, 4030, 430, 14, 104, 2004, 24, 3004, 304) dizi5(36) = Array(132, 213, 243, 324, 432, 314, 431, 124, 241, 1023, 2031, 3024, 4032, 1043, 3014, 4031, 1042, 2014, 1302, 3201, 2304, 4203, 1403, 3104, 1402, 2104, 4201, 1320, 2130, 3210, 2430, 3240, 1340, 4130, 1420, 4210) dizi6(8) = Array(1423, 1342, 4213, 3241, 2431, 4132, 2314, 3124) dizi7(12) = Array(1203, 1240, 1032, 1430, 1024, 1304, 4230, 231, 3204, 214, 2034, 134) dizi8(6) = Array(1243, 1432, 1324, 4231, 3214, 2134) dizi9(12) = Array(100, 10, 1, 2000, 20, 2, 3000, 300, 3, 4000, 400, 40) dizi10(42) = Array(4300, 4003, 4020, 4002, 4100, 4010, 4001, 3400, 2400, 420, 403, 402, 410, 401, 43, 42, 41, 340, 140, 3040, 2040, 2300, 2003, 2100, 2010, 2001, 21, 120, 3020, 320, 23, 12, 102, 3002, 302, 3100, 3010, 3001, 310, 301, 13, 103) dizi11(44) = Array(2103, 2301, 2310, 2013, 3120, 3102, 3012, 3021, 123, 312, 321, 4320, 4302, 4023, 2403, 2340, 2043, 3420, 3402, 3042, 423, 342, 4103, 4310, 4301, 4013, 3410, 3401, 3140, 3041, 413, 143, 341, 4120, 4102, 4021, 4012, 2410, 2401, 2140, 2041, 412, 421, 142) dizi12(7) = Array(4321, 4312, 4123, 3421, 3412, 2143, 2341) 'dizi 15 diğer dizi elemanlarının toplamıdır dizi15(207) = Array(2103, 2301, 2310, 2013, 3120, 3102, 3012, 3021, 123, 312, 321, 4320, 4302, 4023, 2403, 2340, _ 2043, 3420, 3402, 3042, 423, 342, 4103, 4310, 4301, 4013, 3410, 3401, 3140, 3041, 413, 143, 341, 4120, 4102, _ 4021, 4012, 2410, 2401, 2140, 2041, 412, 421, 142, 1230, 1204, 1034, 234, 1200, 1030, 1004, 230, 204, 34, 1000, _ 200, 30, 4, 1400, 1040, 1020, 1002, 1300, 1003, 3200, 203, 4200, 240, 210, 201, 31, 130, 2030, 32, 4030, 430, _ 14, 104, 2004, 24, 3004, 304, 1243, 1432, 1324, 4231, 3214, 2134, 132, 213, 243, 324, 432, 314, 431, 124, 241, _ 1023, 2031, 3024, 4032, 1043, 3014, 4031, 1042, 2014, 1302, 3201, 2304, 4203, 1403, 3104, 1402, 2104, 4201, _ 1320, 2130, 3210, 2430, 3240, 1340, 4130, 1420, 4210, 1203, 1240, 1032, 1430, 1024, 1304, 4230, 231, 3204, 214, _ 2034, 134, 1423, 1342, 4213, 3241, 2431, 4132, 2314, 3124, 100, 10, 1, 2000, 20, 2, 3000, 300, 3, 4000, 400, 40, _ 4321, 4312, 4123, 3421, 3412, 2143, 2341, 4300, 4003, 4020, 4002, 4100, 4010, 4001, 3400, 2400, 420, 403, 402, _ 410, 401, 43, 42, 41, 340, 140, 3040, 2040, 2300, 2003, 2100, 2010, 2001, 21, 120, 3020, 320, 23, 12, 102, 3002, _ 302, 3100, 3010, 3001, 310, 301, 13, 103, 1234, 0) 'rastgele sayı üretelim ve aynı sayının tekrarlanmamsını sağlayalım rastgelesayı(1) = Int(Rnd * 10) For i = 2 To 4 Do rastgelesayı(i) = Int(Rnd * 10) check = True For j = 1 To i - 1 If rastgelesayı(i) = rastgelesayı(j) Then check = False Exit For End If Next j Loop Until check Next i 'Rastgele üretilen sayıyı karşılaştırma yapabilmek için string'e çevirelim 've oyun sonunda göstermek için l label'ine atalım For i = 1 To 4 l = l & rastgelesayı(i) Next i l = CStr(l) End Sub 'kullanıcının t dizisine giriş yapmasını kolaylaştırmak için 'selllenght ve autotab özelliklerini ayarlayalım Private Sub t_Change(Index As Integer) For i = 0 To 3 t(i).SelLength = 2 Next i End Sub | |
| | |
![]() |
| Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| Seçenekler | |
| |