Двумерные массивы

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Двумерные массивы

Post 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
И через глобалки...
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Двумерные массивы

Post by ZeroDX »

строки

Code: Select all

array[0] = '0x1234, 0x4321'
array[1] = '0x12345678, 0x1234'
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Двумерные массивы

Post by Juicy Fruit »

Не, содержимое ячейки массива – число, а доступ к этой ячейке должен осуществляться по 2 числам (координаты).
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Двумерные массивы

Post by Juicy Fruit »

Без вариантов?(
Nmy
Expert!
Posts: 2152
Joined: 2005-09-14 15:31:58
Location: Latvia

Re: Двумерные массивы

Post 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"
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Двумерные массивы

Post by Juicy Fruit »

Знаю, что гемор, но меня это не остановило.

Хочу создать динамически заполняемый массив для скрипта на скилл Farming на Абиссе, в который будут записываться числа от 0 до скольких-то - коды тайла поля (есть тайл? занят мною тайл? занят кем-то еще тайл? созрел ли тайл? и т.п.), чтоб не тратить время на лишние проверки, запись матрички будет происходить при первом проходе,а дальше скрипт будет ориентироваться по кодам, при необходимости заменять их.

2 вариантами это реализовал, но думал, может кто подскажет ещё варианты)
admir
Posts: 528
Joined: 2005-01-13 07:20:54

Re: Двумерные массивы

Post by admir »

Так строками ж предложили?
Массив из строк.
В чем проблема сделать функцию и разделить строку по элементам в массив по пробелу или любому другому опозновательному знаку. Тут таких функций полно на фоурме, и Едред делал топик где собирал все эти функции триммеры.
Собираешь все в строки и доступ к ячейкам в строке так же через 2 переменные,

Code: Select all

TRIM(y,Mas[x]) 


вот нашел едредовский

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
все для альфы , [url=http://newvlad.nm.ru/prog]здесь[/url]
модернизация ремонт продажа игровых консолей
Sky: admirka1 Москва
Post Reply