Page 1 of 1
Двумерные массивы
Posted: 2013-03-27 21:05:15
by Juicy Fruit
Кто сталкивался с их необходимостью в инже и если сталкивались - как реализуете?
На ум приходит пока только
Code: Select all
sub d_main()
var x=8
var y=8
var i,j
var arrval=x+1 #+1 - страховка, чтоб не делать проверок на выход за пределы массива
if x<=y then
arrval=y+1 #+1 - см. выше
endif
arrval=arrval*arrval
uo.print(str(arrval))
dim arr[val(str(arrval))]
for i=0 to x-1
for j=0 to y-1
arr[i+j*x]=uo.random(20)
next
next
var msg=''
uo.textclear()
for i=0 to x-1
for j=0 to y-1
msg='arr['+str(i)+']['+str(j)+']='
uo.textprint(msg+str(arr[i+j*x]))
next
next
uo.textopen()
end sub
И через глобалки...
Re: Двумерные массивы
Posted: 2013-03-28 02:50:12
by ZeroDX
строки
Code: Select all
array[0] = '0x1234, 0x4321'
array[1] = '0x12345678, 0x1234'
Re: Двумерные массивы
Posted: 2013-03-28 07:30:15
by Juicy Fruit
Не, содержимое ячейки массива – число, а доступ к этой ячейке должен осуществляться по 2 числам (координаты).
Re: Двумерные массивы
Posted: 2013-03-29 11:29:07
by Juicy Fruit
Без вариантов?(
Re: Двумерные массивы
Posted: 2013-03-29 22:44:55
by Nmy
для чего? зачем? почему?
в инже по дефолту матриц нету, это будет гемор
реально сделать
Code: Select all
sub main()
uo.msg( read(0,1) )
end sub
но если это не больше 10 строк, тк мне не получилось попасть в массив через тип String что логично
Code: Select all
row = "array"+str(x)
uo.msg(row[9])
если вспомнить уроки паскала, то матрица это тупо векторы (массивы) по очереди созданы. х это номер вектора(массива) а y это индекс массива. получается read(5,13) это array5[13]="5:13"
Re: Двумерные массивы
Posted: 2013-03-30 15:56:13
by Juicy Fruit
Знаю, что гемор, но меня это не остановило.
Хочу создать динамически заполняемый массив для скрипта на скилл Farming на Абиссе, в который будут записываться числа от 0 до скольких-то - коды тайла поля (есть тайл? занят мною тайл? занят кем-то еще тайл? созрел ли тайл? и т.п.), чтоб не тратить время на лишние проверки, запись матрички будет происходить при первом проходе,а дальше скрипт будет ориентироваться по кодам, при необходимости заменять их.
2 вариантами это реализовал, но думал, может кто подскажет ещё варианты)
Re: Двумерные массивы
Posted: 2013-05-29 01:06:46
by admir
Так строками ж предложили?
Массив из строк.
В чем проблема сделать функцию и разделить строку по элементам в массив по пробелу или любому другому опозновательному знаку. Тут таких функций полно на фоурме, и Едред делал топик где собирал все эти функции триммеры.
Собираешь все в строки и доступ к ячейкам в строке так же через 2 переменные,
вот нашел едредовский
Code: Select all
strtime = GetWord('tmpmessage', Number )
разделение в строке по элементам через пробел.
Code: Select all
Sub GetWord( st, nom )
; (c) Edred
VAR tmpst, i, dlin, kol = 0, start = 0
dlin = len( st )
For i=0 To dlin - 1
If mid( st, i, 1 ) == ' ' OR i == dlin - 1 Then
kol = kol + 1
If kol == nom Then
tmpst = mid( st, start, i - start )
return tmpst
Else
While mid( st, i, 1 ) == ' '
i = i + 1
Wend
If kol == nom - 1 Then
start = i
Endif
Endif
Endif
Next
tmpst = ''
return tmpst
endsub