@Cucumber245

Как сделать случайную генерацию мира в pygame?

level = [
        "----------------------------------",
        "-    s               s           -",
        "-      c  s     c       --       -",
        "-    s  w                c       -",
        "-            --                  -",
        "-      c  w        s             -",
        "--            w        c         -",
        "-  s       s                     -",
        "-                   ----     --- -",
        "-    w    s    -----             -",
        "--                 -----         -",
        "-       c       c                -",
        "-  c                         --- -",
        "-            s                   -",
        "-                    c           -",
        "-      ---                       -",
        "-      -----                     -",
        "-   -------         ----         -",
        "-                                -",
        "-                         -      -",
        "-           c                --  -",
        "-                                -",
        "-                                -",
        "----------------------------------"]

    # добавляем объекты с карты в список
    x = 0
    y = 0
    for row in level:
        for col in row:
            if col == "-":
                pf = Platform(x, y)
                entities.add(pf)
                platforms.add(pf)
            if col == "s":
                entities.add(Stone(x, y))
            if col == "w":
                water = Water(x, y)
                entities.add(water)
                platforms.add(water)
            if col == "c":
                coin = Coin(x, y)
                entities.add(coin)
                coins.add(coin)

            x += PLATFORM_WIDTH
        y += PLATFORM_HEIGHT
        x = 0


что-то типо такого, только мир 4000*4000 клеток со случайнымим обьектами на карте
  • Вопрос задан
  • 223 просмотра
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019
Bigdata Engineer
Хорошие статьи на хабре были:

https://habr.com/ru/articles/667576/
https://habr.com/ru/articles/445378/
https://habr.com/ru/articles/318530/

Еще была такая штука как коллапс волновой функции.

https://www.youtube.com/watch?v=2SuvO4Gi7uY

Я честно скажу что до конца не понимаю как это работает - но генерирует хорошие реалистичные картины
мира.
Ответ написан
Комментировать
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Есть два подхода - готовые уровни и генерация уровней.

В конкретном случае судя по коду у вас готовый уровень и парсер готового псевдографического уровня. Т.е. ваш код разбирает ранее сделанную строчную псевдографику и переводит ее в объекты, экземпляры классов.

Для генерации рандомных миров должно быть наоборот: экземпляры классов генерятся с определенными параметрами, включая координаты, а затем отображается псевдографическая «карта» с нанесением этих заранее сгенеренных объектов.

В общем случае вам надо копать тему «процедурная генерация уровней». На эту тему очень много уже наработок, нет смысла изобретать свой велосипед.

Рекомендую искать и читать о процедурной генерации псевдографических уровней игр. Там не всё вам подойдет прям «в лоб», но кое-что будет полезным.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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