Stepashka20
@Stepashka20
(☞゚ヮ゚)☞

Как сгенерировать сокровище в лабиринте?

Я генерирую лабиринт следующим способом:
1)выбираю точку старта в самом низу.
2)От него запускаю цикл
3)Иду вперёд случайное число вперёд.
4)Затем выбираю,также случайно,вправо или лево двигаться далее.
5)двигаюсь случайное число раз вправо или лево
6)когда я дохожу в самый вверх массива,то выхожу из главного цикла
Затем генерирую препятствия.То есть простой цикл:если цикл попадает на путь,то препятствие не генерируется,иначе- случайно генерирую препятствие.Теперь сама суть:нужно сгенерировать сокровище не в самом начале и не в конце.Но главное чтобы до него был путь!
Генерация пути:
klet(ys, xs) = 0 'клетка старта
        Dim UpCount As Integer
        Do
            For i = 1 To Int(2 * Rnd() + 1) 'идём вперёд
                If y1 = 0 Then
                    klet(0, x1) = 2 'клетка финиша
                    yf = 0
                    xf = x1
                    Exit Do
                End If
                y1 -= 1
                klet(y1, x1) = 1
            Next

            If Int(4 * Rnd() + 1) = 1 Then 'идём вправо
                UpCount = Int(((x1 - 1) + 1) * Rnd())
                For i = 1 To UpCount
                    If x1 - 1 >= 0 Then x1 -= 1
                    klet(y1, x1) = 1
                Next

            Else 'идём влево
                UpCount = Int(((8 - x1 + 1) + 1) * Rnd())
                For i = 1 To UpCount
                    If x1 + 1 <= Count Then x1 += 1
                    klet(y1, x1) = 1
                Next
            End If
        Loop

Генерация препятствий:
For i = 0 To Count
            For j = 0 To Count
                If ((Rnd() * 9) > 4) And klet(i, j) <> 1 And klet(i, j) <> 2 And klet(i, j) <> 3 Then klet(i, j) = 5
            Next
        Next
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы