как поменять карту?

В этой теме 5 ответов, 2 участника, последнее обновление  Raf_Tank 7 года/лет, 2 мес. назад.

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)
  • Автор
    Сообщения
  • #4471

    Raf_Tank
    Участник
    Сообщений:12

    Зарегистрирован:
    27.01.2017

    Репутация:2

    Карта как и в уроке у меня из массива sf::String map[H1], который находится в доп. заголовочном файле map.h. Все функции взаимодействия и прорисовки работают именно с этим массивом map. А как его поменять? Например другой уровень совершенно другая карта. Делал запись

    Непосредственно в бесконечно цикле перед прорисовкой карты. Но мне сразу же подчёркивает красным знак “=” и при наведении пишет ” Ошибка: отсутствует оператор “=”, соответствующий этим операндам

    типы операндов sf::String {…} ”

    Так как собственно поменять этот массив?

     

    #4472

    BunDem
    Участник
    Сообщений:103

    Зарегистрирован:
    10.05.2015

    Репутация:23

    ты не меняй массив, а сделай еще массив и меняй имя в отрисовке.

    #4474

    Raf_Tank
    Участник
    Сообщений:12

    Зарегистрирован:
    27.01.2017

    Репутация:2

    Самая первая мысль, пришедшая в мою голову, это и было. НО! У меня много функций взаимодействия именно с map, и переписывать одну и ту же функцию но для кучи разных карт очень неудобно и нерационально, так что этот вариант сразу отлетел по мере его возникновения.

    #4481

    BunDem
    Участник
    Сообщений:103

    Зарегистрирован:
    10.05.2015

    Репутация:23

    значит надо переписать функции, чтобы они работали с разными массивами. Такой код костыльный, надо рефакторить.

    #4489

    Raf_Tank
    Участник
    Сообщений:12

    Зарегистрирован:
    27.01.2017

    Репутация:2

    Нет, нет, и ещё раз нет. Это +куча ненужных строчек. Я всё думал как это сделать, и придумал.

    Значит первым делом, заходим в map.h и создаём ещё один массив (такого же размера как и основной map), назовём его map1:

    Теперь есть 2 способа реализации замены карты. Первый написать отдельную функцию (просто и удобно), или же непосредственно в самом main (тоже просто и удобно, но привык делать функции).

    Как я писал в коде, массивы необязательно должны быть одинаковых размеров , т.е. для первого уровня размер H, для второго H2. Но тогда нужно будет учитывать какой из массивов больше (учитывать и ширину и высоту отдельно)  и добавлять уже другие условия. В общем вот так я справился с этой проблемой. P.S. На такую мысль навел урок про создание бонуса в рандомном месте карты, где просто переписывали один элемент массива, тут же я переписал весь.

    #4490

    Raf_Tank
    Участник
    Сообщений:12

    Зарегистрирован:
    27.01.2017

    Репутация:2

    Моё личное мнение. Способ, представленный мной намного рациональней и логичней, чем переписывание множества (да даже двух) функций под каждую карту отдельно. Это как, у вас есть рабочий верстак, на котором вы обрабатываете допустим доски. Доски же бывают разные, по составу, длине, ширине и т.д. , и не будешь же ты под каждую доску ставить отдельный верстак.

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)

Для ответа в этой теме необходимо авторизоваться.