Что нового

Подскажите как из одного массива, сделать другой.

xishnik

Новичок
Сообщения
51
Репутация
0
Всем привет.
Есть массив из 36 переменных, выглядит он примерно так:
Код:
$massiv[6][6]=[1-6 переменная],[7-12 переменная],[13-18],[19-24],[25-30],[31-36]

И есть ещё один массив из 5 цветов:
Код:
$corol[5]=[1 цвет,2,3,4,5]

Массив из 36 переменных, заполнен этими цветами, каждая переменная в том массиве, это один из этих 5 цветов
Нужно создать другой массив 6 на 6. В котором в зависимости от цвета переменной будет присваиваться число от 1 до 5.
например если у переменной 1 цвет, то она становиться числом 5, если второй цвет, то числом 4, если 3 цвет то числом 3 и т д...
Обьясню на маленьком примере:
Код:
$11 = PixelGetColor($x11, $y11) ; Результат равен "16776737"
$12 = PixelGetColor($x12, $y12) ; Результат равен "7696486"
$21 = PixelGetColor($x21, $y21) ; Результат равен "5883933"
$22 = PixelGetColor($x22, $y22) ; Результат равен "15983533"

$massiv[2][2]= [$11,$12],[$21,$22] ; Массив переменных, он состоит из цветов, нужно создать новый он состоял из чисел от 3 до 5, в зависимости от цвета
$color[3]= [16776737, 7696486, 5883933] ; Массив цветов
; как могу это сделать я, не смеятся только))))
if $11=16776737 then
   $11x=5
EndIf
If $11=7696486 Then
   $11x=4
EndIf
If $11=5883933 Then
   $11x=3
EndIf
if $11<>16776737 and $11<>7696486 and $11<>5883933 Then
   $11x=0
EndIf

; и так делать для всех переменных, но переменных у меня 36, а цветов 5, умных идей с for и next в голову не приходит...

; В итоге должен получиться массив:
$massiv2[2][2][5,4],[3,0]
; ну и желательно сделать Msgbox этого массива, где будут числа от 1 до 5 состоящий из 6 рядов и 6 столбцов
; заранее спасибо
 

beliy

Продвинутый
Сообщения
372
Репутация
72
Может как то так?

Код:
#include <Array.au3> ; для _ArrayDisplay.

$11 = 16776737
$12 = 7696486
$21 = 5883933
$22 = 15983533

Local $aMassiv[2][2] = [[$11,$12],[$21,$22]] ; Массив переменных, он состоит из цветов, нужно создать новый он состоял из чисел от 3 до 5, в зависимости от цвета


For $i = 0 To UBound($aMassiv, 1) - 1
   For $j = 0 To UBound($aMassiv, 2) -1
	  $iColor = $aMassiv[$i][$j]
	  Select
		 Case $iColor = 16776737
			$aMassiv[$i][$j] = 1 ; меняем 16776737 на 1
		 Case $iColor = 7696486
			$aMassiv[$i][$j] = 2 ; меняем 7696486 на 2
		 Case $iColor = 5883933
			$aMassiv[$i][$j] = 3 ; меняем 5883933 на 3
		 Case Else
			$aMassiv[$i][$j] = 0 ; меняем любой другой цвет на 0
	  EndSelect
    Next
Next
_ArrayDisplay($aMassiv, '$aMassiv2')
 
Автор
xishnik

xishnik

Новичок
Сообщения
51
Репутация
0
Спасибо, это именно то что нужно
 
Верх