Что нового

[Массивы] Как в цикле While присвоить переменной случайное значение функции Send

deseason

Новичок
Сообщения
2
Репутация
0
Добрый день всем.

Столкнулся с такой проблемой, необходимо в блокноте писать каждую секунду одно из заранее выбранных слов.

Условия такие:
  • Скрипт должен быть бесконечным.
  • Каждое следующее слово не должно повторять предыдущее.

Я совсем не силен в AutoIt, почитав ваш форум, думаю должно быть так:

Код:
While 1 ;Что такое один, так и не понял... Понял, что циклит до бесконечности.
   $TEXT_1 = "слово 1"
   $TEXT_2 = "слово 2"
   $TEXT_3 = "слово 3"
   $TEXT = Random $Array[3] ("слово 1", "слово 2", "слово 3")
   While ;Проверка чего-то...
	  Send ($TEXT)
	  $TEXT_NEXT = Random $Array[3] ("слово 1", "слово 2", "слово 3")
	  If $TEXT_NEXT = $TEXT then
		 $TEXT_NEXT = Random $Array[3] ("слово 1", "слово 2", "слово 3")
		 ContinueLoop
	  Else
		 ExitLoop
	  EndIf
	  $TEXT = $TEXT_NEXT
          Sleep (1000)
   WEnd
WEnd


Поправьте меня пожалуйста где я не прав, или фигню какую-нибудь написал.
 

AZJIO

Меценат
Меценат
Сообщения
2,757
Репутация
1,151
Не проверял, должно работать.
Код:
Global $Array[3] = ["слово 1", "слово 2", "слово 3"]
Global $TmpR = -1
While 1 ; 1 это верное условие для выполнения цикла. И кстати есть справка. Всё что не 0 и не пустая строка является верным.
	$r = Random(0, 2, 1) ; случайное между 0,1,2
	If $r = $TmpR Then ; если предыдущий такой же, то
		$r += 1 ; изменяем его
		If $r > 2 Then $r = 0 ; если увеличение вызвало выход за пределы диапазона, то в начало
	EndIf
	$TmpR = $r ; кешируем для следующей проверки
	Send($Array[$r]) ; элемент массива получен и отправлен
	Sleep(1000)
WEnd
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
deseason,
Еще 2 варианта. :smile:
Код:
Global $aArray[3] = ['слово 1', 'слово 2', 'слово 3']
Global $iTmpR = -1
$iRand = Random(0, 2, 1)
While 1
	#cs
	While $iRand = $iTmpR
		$iRand = Random(0, 2, 1)
	WEnd
	#ce
	Do
		$iRand = Random(0, 2, 1)
	Until $iRand <> $iTmpR
	$iTmpR = $iRand
	ConsoleWrite($aArray[$iRand] & @LF)
	Sleep(1000)
WEnd
 
Верх