SHARE
TWEET

map.go

a guest May 19th, 2019 73 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top