Є кілька способів додати карту в нашу гру. Сьогодні розберемо найпростіший для розуміння. Отже, карта - це набір
Отже - в даному випадку три квадратика (прямоугольнички), але одна картинка, ну як завжди. Білий фон справа я залишив просто так для вашої і моєї фантазії, що небудь можете впихнути (підмалювати праворуч) і поекспериментувати. Кожен квадратик має розмір 32 * 32. Значить нам треба в програмі вибирати потрібний квадратик в залежності від умови. Давайте спробуєм:
Створимо окремий заголовки для карти. Зліва, в браузері рішень, натискаємо правою кнопкою на пункт "Файли вихідного коду", вибираємо "додати", "створити елемент", "Заголовний файл.h", називаємо його map.h тиснемо окей. Тепер в цьому файлі пишемо:
if (TileMap [i] [j] == '') s_map. setTextureRect (IntRect (0. 0. 32. 32)); // якщо зустріли символ пробіл, то малюємо 1й квадратик
if (TileMap [i] [j] == 's') s_map. setTextureRect (IntRect (32. 0. 32. 32)); // якщо зустріли символ s, то малюємо 2й квадратик
if ((TileMap [i] [j] == '0')) s_map. setTextureRect (IntRect (64. 0. 32. 32)); // якщо зустріли символ 0, то малюємо 3й квадратик
s_map. setPosition (j * 32. i * 32); // по суті розкидає квадратики, перетворюючи в карту. тобто задає кожному з них позицію. якщо прибрати, то вся карта вималюється в одному квадраті 32 * 32 і ми побачимо один квадрат
window. draw (s_map); // малюємо квадратики на екран
Карта намалювалася. Можна запускати додаток. Камера наша стоїть на місці і на наступному уроці ми попрацюємо з камерою, а потім змусимо героя взаємодіяти з елементами карти (з каменем наприклад) і з цеглою (не дамо йому вибратися, зробимо зіткнення).
Як ви бачите всі спрайт добре один на одного накладаються і залишається прозорість. Подивіться як лев і камінь взаємодіють графічно:
Слюнько потекли, так?
if (TileMap [i] [j] == '') s_map. setTextureRect (IntRect (0. 0. 32. 32)); // якщо зустріли символ пробіл, то малюємо 1й квадратик
if (TileMap [i] [j] == 's') s_map. setTextureRect (IntRect (32. 0. 32. 32)); // якщо зустріли символ s, то малюємо 2й квадратик
if ((TileMap [i] [j] == '0')) s_map. setTextureRect (IntRect (64. 0. 32. 32)); // якщо зустріли символ 0, то малюємо 3й квадратик
s_map. setPosition (j * 32. i * 32); // по суті розкидає квадратики, перетворюючи в карту. тобто задає кожному з них позицію. якщо прибрати, то вся карта вималюється в одному квадраті 32 * 32 і ми побачимо один квадрат
window. draw (s_map); // малюємо квадратики на екран