Доброго дня,
есть код старого "игрового автомата", который захотелось улучшить. Например если статистика выигрыш\проигрыш начинает выходить из расчетного равновесия (проигрышей, например, становится не 72% на 1000 спинов, а не поднимается выше 50%), то в ячейке А1 появляется триггер "1".
И нужно изменить часть кода макроса этого "автомата", ответственную за генерацию случайного числа в каждом из трех Range на листе, чтобы при появлении триггера в ячейке А1 генерирование числа происходило по другому.
Точнее - нужно, чтобы или при появлении "7" происходила вторая попытка генерирования, или, что лучше всего, генерирование происходило в диапазоне 1..6,8..9 (или только в 1...6) избегая 7.
У меня далеко не лучшим образом всегда понимались конструкции Do..Loop и иже с ними.
И как я не вставляю нужное мне а ля например
Код |
---|
If Range("A1").Value = "1" Then
...
Range("_7").Value = CStr(Int(Rnd() * 6)+1) ' для каждого Range
End If |
или что то навроде, то либо vba ругается на всякое, либо все равно генерирование происходит в диапазоне 0...10.
Можно, конечно попробовать, вставить переброс без звуков и таймера в подпрограмму Win, в котороый через If...Then происходит расчет выигрыша-проигрыша, но хотелось бы попробовать научиться заодно правильно понимать циклы.
Вот исходный код:
Код |
---|
Sub Rotate()
With slots
Hide777
Color1
Randomize
Dim PauseTime, Start
PauseTime = 0.8
Start = Timer
PlSound
Do While Timer < Start + PauseTime
Range("_7").Value = CStr(Int(Rnd() * 10))
Loop
Start = Timer
PlSound
Do While Timer < Start + PauseTime
Range("_77").Value = CStr(Int(Rnd() * 10))
Finish = Timer
Loop
Start = Timer
PlSound
Do While Timer < Start + PauseTime
Range("_777").Value = CStr(Int(Rnd() * 10))
Loop
PlSound0
Win
Range("Blnc") = Range("Win") - Range("Ls") + Range("Inst")
WriteValue
Color3
Color2
Color4
End With
End Sub
|