Sfml урок, робота з картою, завантаження карти, kychka-pc, sfml

Є кілька способів додати карту в нашу гру. Сьогодні розберемо найпростіший для розуміння. Отже, карта - це набір

Отже - в даному випадку три квадратика (прямоугольнички), але одна картинка, ну як завжди. Білий фон справа я залишив просто так для вашої і моєї фантазії, що небудь можете впихнути (підмалювати праворуч) і поекспериментувати. Кожен квадратик має розмір 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); // малюємо квадратики на екран

Карта намалювалася. Можна запускати додаток. Камера наша стоїть на місці і на наступному уроці ми попрацюємо з камерою, а потім змусимо героя взаємодіяти з елементами карти (з каменем наприклад) і з цеглою (не дамо йому вибратися, зробимо зіткнення).

Як ви бачите всі спрайт добре один на одного накладаються і залишається прозорість. Подивіться як лев і камінь взаємодіють графічно:

Sfml урок, робота з картою, завантаження карти, kychka-pc, sfml

Sfml урок, робота з картою, завантаження карти, kychka-pc, sfml

Слюнько потекли, так?

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); // малюємо квадратики на екран

Схожі статті