Advertisement
Guest User

map.go

a guest
May 19th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.25 KB | None | 0 0
  1. package game_logic
  2.  
  3. import (
  4. "fmt"
  5. "math/rand"
  6. "time"
  7. )
  8.  
  9. type Template struct {
  10. tmp []int
  11. bariers [][]int
  12. }
  13.  
  14. func Insert(slice []int, index, value int) []int {
  15. // Увеличиваем срез на один элемент
  16. slice = slice[0 : len(slice)+1]
  17. // Используем copy для перемещения верхней части среза наружу и создания пустого места
  18. copy(slice[index+1:], slice[index:])
  19. // Записываем новое значение.
  20. slice[index] = value
  21. // Возвращаем результат.
  22. return slice
  23. }
  24.  
  25. // Создание карты
  26. func MapGeneration() (m *Map, b *Barier) {
  27.  
  28. // var m Map
  29.  
  30. // Инициализируем параметры карты
  31. m.TileSize = 20
  32. m.SizeX = 100
  33. m.SizeY = 100
  34.  
  35. // Логика заполнения карты препятствиями:
  36. // Делим карту на 16 блоков (4x4 каждый по 25 тайлов)
  37. // Заполняем каждый блок препятствиями
  38.  
  39. // blockX := ( m.SizeX ) / blockCount;
  40. // blockY := ( m.SizeY ) / blockCount;
  41.  
  42. // Создаем границы карты
  43.  
  44. // Генерируем вертикальные границы
  45. // for i := 0; i < m.SizeY; i++ {
  46. // for j := 0; j < m.SizeX; j++ {
  47. // if i == 0 || i == m.SizeY-1 || j == 0 || j == m.SizeX -1 {
  48. // m.Field[m.SizeY * i + j] = 1;
  49. // }
  50. // }
  51. // }
  52.  
  53. // Задаем массив шаблонов карт:
  54. // Каждый шаблон - массив 20x20, заполенный препядствием
  55.  
  56. tmp1 := []int{
  57. 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
  58. 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
  59. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  60. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  61. 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
  62. 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
  63. 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
  64. 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
  65. 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
  66. 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
  67. }
  68.  
  69. template1.tmp = tmp1
  70. template1.bariers = append()
  71.  
  72. tmp2 := []int{
  73. 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
  74. 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
  75. 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
  76. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  77. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  78. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  79. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  80. 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
  81. 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
  82. 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
  83. }
  84.  
  85. tmp3 := []int{
  86. 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
  87. 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
  88. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  89. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  90. 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
  91. 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
  92. 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
  93. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  94. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  95. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  96. }
  97.  
  98. tmp4 := []int{
  99. 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
  100. 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
  101. 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
  102. 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
  103. 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
  104. 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
  105. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  106. 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
  107. 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
  108. 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
  109. }
  110.  
  111.  
  112. tmp5 := []int{
  113. 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
  114. 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
  115. 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
  116. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  117. 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
  118. 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
  119. 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
  120. 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
  121. 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
  122. 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
  123. }
  124.  
  125. tmp6 := []int{
  126. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  127. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  128. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  129. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  130. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  131. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  132. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  133. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  134. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  135. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  136. }
  137.  
  138. var templates [][]int
  139.  
  140. templates = append(templates, tmp1)
  141. templates = append(templates, tmp2)
  142. templates = append(templates, tmp3)
  143. templates = append(templates, tmp4)
  144. templates = append(templates, tmp5)
  145. templates = append(templates, tmp6)
  146. fmt.Println(templates[0])
  147. // templates = append(templates, template5)
  148. // templates = append(templates, template6)
  149.  
  150. // Задаем сид для рандомайзера
  151. rand.Seed(time.Now().UnixNano())
  152.  
  153. blockSize := 10
  154. blockCount := m.SizeX / blockSize
  155.  
  156. // Билдм мапу
  157.  
  158. for i := 0; i < m.SizeY; i++ {
  159. for j := 0; j < m.SizeX; j++ {
  160. m.Field[i][j] = 0
  161. }
  162. }
  163.  
  164. for i := 0; i < blockCount; i++ {
  165. for j := 0; j < blockCount; j++ {
  166. template := templates[rand.Intn(len(templates))]
  167. for k := 0; k < blockSize; k++ {
  168. for l := 0; l < blockSize; l++ {
  169. m.Field[k + i * blockSize][l + j * blockSize] = template[k * blockSize + l]
  170. }
  171. }
  172. }
  173. }
  174.  
  175. for i := 0; i < m.SizeY; i++ {
  176. for j := 0; j < m.SizeX; j++ {
  177. // template := templates[rand.Intn(len(templates))]
  178. if i == 0 || i == m.SizeY-1 || j == 0 || j == m.SizeX-1 {
  179. m.Field[i][j] = 1
  180. }
  181. }
  182. }
  183.  
  184. // Отрисовываем результат в консоль
  185. // for i := 0; i < 10; i++ {
  186. // for j := 0; i < 10; j++ {
  187. // // fmt.Println(i, j)
  188. // fmt.Print(m.Field[i*10+j])
  189. // }
  190. // fmt.Println("")
  191. // }
  192.  
  193. // for i := 0; i < 50; i++ {
  194. // m.Field = append(m.Field, field[i])
  195. // }
  196.  
  197. fmt.Println(m.Field)
  198.  
  199. return
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement