GameOveR-xD Posted April 28, 2015 Share Posted April 28, 2015 Autoit ile dizideki elemanlar arasında rastgele seçim yapmak istiyorum. Seçilen dizine ait kodlar çalıştırılacak ve belli bir süre bekledikten sonra tekrar başa dönecek ancak bu sefer ki seçimde önceki dizi elemanını seçemeyecek. Yani aynı seçenek üst üste seçilemeyecek. Bu şekilde döngüyü nasıl yapabilirim. Örnek vermek gerekirse; Dizideki elemanlar; 1, 2, 3, 4, 5 Program bunlardan birini rastgele seçecek. Seçtiği 2 olsun diyelim. 2 dizisine ait kodu çalıştıracak mesela 2 nolu dizi elemanı seçildi mesajı versin. Daha sonra 5 sn bekleyecek ve 2. kez seçim yapacak. Bu seferki dizi elemanlar; 1, 3, 4, 5 2 yok çünkü onu az önce seçtik. Aynı şekilde birini seçip o dizinin kodunu çalıştıracak. Diyelim 4 seçti. Bu seferki dizi elemanlar; 1, 2, 3, 5 4 yok çünkü onu az önce seçtik. bu şekilde sınırsız döngüye girecek. Quote Link to comment Share on other sites More sharing options...
KintaRo Posted April 28, 2015 Share Posted April 28, 2015 AutoIT bilmiyorum ama şu şekilde array'dan random veri çeken bir kod örneği var, buradan yürüyebilirsin sanırım: #include <Array.au3> Local $Array[5] = ['Jim', 'Paul', 'Sharon', 'Candice', 'Mr. Peanut'] Local $String While 1 If UBound($Array) > 1 Then $Index = Random(0, UBound($Array), 1) If $Index > UBound($Array) - 1 Then $Index = UBound($Array) - 1 MsgBox(262208, '', 'Current (Random) Index = ' & $Index & @LF & 'Array Elements Left = ' & UBound($Array)) $String &= $Array[$Index] $String &= ' - ' _ArrayDelete($Array, $Index) Else $String &= $Array[0] ExitLoop EndIf WEnd MsgBox(262208, 'Final String', $String) Quote Link to comment Share on other sites More sharing options...
GameOveR-xD Posted April 28, 2015 Author Share Posted April 28, 2015 AutoIT bilmiyorum ama şu şekilde array'dan random veri çeken bir kod örneği var, buradan yürüyebilirsin sanırım: Malesef bunu konuyu açmadan önce araştırdığımda denemiştim, istediğimi yapamadım bu kodlarla. Quote Link to comment Share on other sites More sharing options...
KintaRo Posted April 28, 2015 Share Posted April 28, 2015 valla c#, ams, php, java hatta asp olsa bir yolu var da bu lanet olası autoit'e hiç kanım ısınmadı, başarılar :D Quote Link to comment Share on other sites More sharing options...
blue_life Posted April 29, 2015 Share Posted April 29, 2015 (edited) @GameOveR-xD Bir şeyler karaladım. Kendine göre düzenlersin... Code alaına yapıştırınca kadlar bozuldu. Sorun nerde diye araştırmak için yeterli vaktim yok. Bu yüzden konuyu editleyip normla olarak kodları yazıyorum. [spoiler]Global Const $Separator = Chr(124) ; | Global $Array[5] = ['Türkiye', 'ABD', 'Çin', 'Japanyo', 'Almanya'] ;Litemiz Global $Selected = $Separator _LOOP() Func _LOOP() ;Döngü Local $Selected_Item, $Index While 1 $Selected_Item = _SELECT() $Index = @extended ToolTip("Seçilen: " & $Selected_Item & @LF & "Sırası: " & $Index) ConsoleWrite("Seçilen: " & $Selected_Item & @LF & "Sırası: " & $Index & @LF) ; Her seçim için ayrı ayrı fonksiyon çalıştırabilirsin aşağıdaki gibi. Switch $Index Case 0 _SELECTED_1() Case 1 _SELECTED_2() Case 2 _SELECTED_3() Case 3 _SELECTED_4() Case 4 _SELECTED_5() EndSwitch Sleep(5000) ;5sanye bekletme WEnd EndFunc ;==>_LOOP Func _SELECT() ;Seçim Local $Ubound = UBound($Array) If StringLen(StringRegExpReplace($Selected, "[^" & $Separator & "]", "")) = $Ubound + 1 Then $Selected = $Separator Local $Item, $Index While 1 $Index = Random(0, $Ubound - 1, 1) $Item = $Array[$Index] If StringInStr($Selected, $Separator & $Item & $Separator) = 0 Then $Selected &= $Item & $Separator Return SetExtended($Index, $Item) EndIf WEnd MsgBox(16, "", "Kodlama hatası var, kolntrol et!") Return 0 EndFunc ;==>_SELECT Func _SELECTED_1() ; 1 için kodlar buraya EndFunc ;==>_SELECTED_1 Func _SELECTED_2() ; 1 için kodlar buraya EndFunc ;==>_SELECTED_2 Func _SELECTED_3() ; 1 için kodlar buraya EndFunc ;==>_SELECTED_3 Func _SELECTED_4() ; 1 için kodlar buraya EndFunc ;==>_SELECTED_4 Func _SELECTED_5() ; 1 için kodlar buraya EndFunc ;==>_SELECTED_5[/spoiler] Edited April 29, 2015 by blue_life Quote Link to comment Share on other sites More sharing options...
GameOveR-xD Posted April 29, 2015 Author Share Posted April 29, 2015 @GameOveR-xD Bir şeyler karaladım. Kendine göre düzenlersin... Code alaına yapıştırınca kadlar bozuldu. Sorun nerde diye araştırmak için yeterli vaktim yok. Bu yüzden konuyu editleyip normal olarak kodları yazıyorum. Mükemmel tam istediğim gibi olmuş :) [spoiler]Seçilen: ABD Sırası: 1 Seçilen: Türkiye Sırası: 0 Seçilen: Almanya Sırası: 4 Seçilen: Japanyo Sırası: 3 Seçilen: Çin Sırası: 2 Seçilen: Türkiye Sırası: 0 Seçilen: ABD Sırası: 1 Seçilen: Japanyo Sırası: 3 Seçilen: Çin Sırası: 2 Seçilen: Almanya Sırası: 4 Seçilen: Japanyo Sırası: 3 Seçilen: Almanya Sırası: 4[/spoiler] Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.