Что нового

Проверка массива в массиве

chpokerok

Новичок
Сообщения
3
Репутация
0
Всем доброго времени суток. Я недавно начал изучать AutoIt.
Личная практика для меня лучший учебник :smile:, но вот столкнулся с такой проблемой:
Проверка массива в массиве вот сам код:
Код:
Func PlayerWin($player)
   Local $wins[8][3] = [[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]]
	  for $i = 0 To 8 Step +1
		 for $j = 0 To 3 Step +1
			Local $count = 0
			If $b[$wins[$i][$j]] == $player Then	
			   $count += 1
			EndIf
			if $count == 3 Then Return True
		 Next
	  Next
   EndFunc


Но при создании крестика GUI окно вылетает с такой ошибкой:
Код:
If $b[$wins[$i][$j]] == $player Then
If $b[^ ERROR
Прошу помочь, буду благодарен за любой ответ
PS за быдло код не ругать)))
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Откуда взялось $b? И код заключи в тег Autoit. Также ниже строки с If $b[^ ERROR указано что за ошибка.
 
Автор
C

chpokerok

Новичок
Сообщения
3
Репутация
0
Global $b[9] у меня объявленная ранее, вот именно не могу разобраться в чём проблема этой строки
Код:
If $b[$wins[$i][$j]] == $player Then
вот ошибка та что ты сказал
Код:
>"D:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\Users\Vadim\Desktop\X-O.au3"
C:\Users\Vadim\Desktop\X-O.au3 (281) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
chpokerok,
1. Поменяйте
Код:
;...
For $i = 0 To 8 Step +1
	For $j = 0 To 3 Step +1
;...
;на
For $i = 0 To UBound($wins, 1) - 1
	For $j = 0 UBound($wins, 2) - 1
;...

2. $count у Вас никогда не будет равен 3, т.к. Вы его постоянно обнуляете.
3. Непонятно, что такое $player и что за массив $b? Вы бы кроме функции еще кусок кода показали.
 
Автор
C

chpokerok

Новичок
Сообщения
3
Репутация
0
Большое спасибо за ответ, да и так бысто... Обожаю ваш сайт :IL_AutoIt_1:
 
Верх