Matias_Gray

s_map_create

Jul 27th, 2017
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. with (o_map_core)
  2. {
  3. //входные данные:
  4. // al //высота (влево  вниз)
  5. // ar //ширина (вправо вниз)
  6. // az //высота
  7.  
  8. /*
  9.     двумерные массивы хранят данные в 2д таблице и не могут хранить 3д мир
  10.     линейные массивы хранят информацию построчно и могут хранить 3д послойно
  11.     сначала были только двумерные, потом я добавлял линейные для удобства
  12.     потом двумерные я совсем уберу, когда будет 3д карта
  13.  
  14.     как понимать названия переменных
  15.    
  16.     a означает array (массив)
  17.     массив хранит карту
  18.     карта состоит из прямоугольной сетки клеток, расположены под углом 45 градусов
  19.     верхний угол это начало координат (0,0)
  20.     l означает координату ячейки по оси "влево вниз"
  21.     r означает координату ячейки по оси "вправо вниз"
  22.     n означает порядковый номер ячейки в линейном массиве
  23.     t означает тип того, что находится в этой ячейке
  24.     o означает объект. Хранит ссылку на объект. Объект может занимать несколько ячеек,
  25.             тогда все они будут хранить одинаковую ссылку на один и тот же объект
  26.     x,y означают координаты вывода на экран ячейки
  27. */
  28.  
  29. /*#######*//*### всё что так отмечено, хочу удалить ####*//*#######*/
  30.  
  31. //объявление переменных:
  32. //двумерные массивы:
  33. /*#######*/a[0,0]=0//массив карты
  34. /*#######*/a[al,ar]=0//массив карты - последняя точка (для инициации всего поля массива)
  35. /*#######*/at[0,0]=0//тип поверхности
  36. /*#######*/at[al,ar]=0//тип поверхности - последняя точка (для инициации всего поля массива)
  37. l=0; r=0//двумерные координаты
  38. e=0 //e=elevation
  39. az=5
  40. /*#######*/ax[l,r]=0//координата x для клетки
  41. /*#######*/ay[l,r]=0//координата y для клетки
  42. //линейные массивы:
  43. //создание:
  44.  
  45. n=-1//число точек в массиве карты (arr number)
  46. //но сначала просто порядковый номер ячейки памяти
  47. //////////что за хрень////ann[0]=0 //порядковый номер ячеек
  48. ano[0]=0 //собственно МАССИВ ОБЪЕКТОВ
  49. ant[0]=0 //массив типов объектов
  50. anl[0]=0 //координата l в массиве точки с номером 0
  51. anr[0]=0 //координата r в массиве точки с номером 0
  52. anz[0]=0 //координата zz в массиве точки с номером 0
  53. for (e=0 e<=az e+=1)
  54. {
  55. for (l=0 l<=al l+=1)
  56.     {
  57.     for (r=0 r<=ar r+=1)
  58.         {
  59.         n+=1//порядковый номер
  60.         /*#######*/a[l,r]=0//содержимое клетки
  61.         /*#######*/at[l,r]=0//тип поверхности
  62.         /*#######*/ax[l,r]=x+l*15-r*15//координаты
  63.         /*#######*/ay[l,r]=y+l*5+r*5//координаты
  64.         anx[n]=x+l*15-r*15 //координаты по номеру
  65.         any[n]=y+l*5+r*5-e*20   //координаты по номеру
  66.         ano[n]=0 //нуль это пустота
  67.         ant[n]=0 //нуль это пустота
  68.         anl[n]=l //позиция l в массиве по номеру клетки
  69.         anr[n]=r //позиция r в массиве по номеру клетки
  70.         anz[n]=e //позиция zz в массиве по номеру клетки
  71.         if l=0 or r=0 or l=al or r=ar then
  72.             {
  73.             /*#######*/a[l,r]=1000//границы
  74.             ant[n]=1000 //границы
  75.             }
  76.         //o_map_dot это объект-помошник, с помощью которого игра определяет на какую клетку указывает курсор
  77.         if e=0 //я расставляю доты только в один слой
  78.             then
  79.             {
  80.             dot=instance_create(anx[n],any[n],o_map_dot)
  81.             dot.myl=l
  82.             dot.myr=r
  83.             dot.myz=e
  84.             dot.myn=n
  85.             }
  86.         }
  87.     }
  88. }//end of e
  89.     //тестовое заполнение ячеек, для теста сохранения:
  90.     //ant[n]=7357
  91.     //ano[n]=noone
  92.     //ant[10]=7357
  93.     //ano[10]=noone
  94. created=1
  95. }//end of with(o-map_core)
  96. instance_create(x,y,o_cube_robot)
Advertisement
Add Comment
Please, Sign In to add comment