Основи на работа с блокова графика
Дойде времето. Готови сте да създадете блокова графична машина (не библиотека за чертане на блокове). Въпреки че този блоков графичен двигател е почти толкова стар, колкото компютърните игри, той все още е най-използваната 2D графична техника. Всъщност почти всички игри, създадени за ръчната игрова конзола Nintendo Gameboy Advance, използват блоковите графични технологии, показани по-долу. Тази система за игри използва ексклузивно блокова графика под една или друга форма, за да ви даде най-доброто графично изживяване на преносимо устройство за игри (Споменах ли го вече?).
Сега е вашият шанс да преразгледате някои стари техники, които могат да помогнат с вашите проекти.
Начертаване на основната карта
Изчертаването на основна блокова карта е бърз и безболезнен процес; трябва да преминете през колоните и редовете, като рисувате блоковете, през които минавате. Общият брой изтеглени блокове зависи от техния размер и разделителна способност на екрана. Например, ако размерите на зоната за игра на екрана са 384 × 384 пиксела и се използват блокове от 64 × 64 пиксела, тогава ще имате 6 реда от по 6 блока във всеки на екрана, т.е. общо 36 блока.
Сега да се върнем на фиг. 7.1, който показва четири блока, карта и резултат от визуализацията на картата. За да представите картата като масив, използвайки номерата на блоковете, посочени при изчертаването им, направете следното:
За да начертаете картата, показана по-горе, трябва да преминете през всички елементи на масива и да нарисувате съответния блок за всеки:
// Tile = предварително инициализиран и зареден обект cTiles for(short row = 0; row // Вземете номера на изчертания блок char TileNum = Map[row][column];
// Начертайте блок (размер 64 x 64), съответстващ на
// TileNum от първата заредена текстура
Tile.Draw(0, TileNum, колона*64, ред*64);

Глава 7 Използване на 2D графика
Ако имате набор от три блока и картата, показана по-горе (и функцията за рисуване), ще получите изобразена карта на екрана, подобна на тази, показана по-рано на фиг. 7.1.
Използване на множество слоеве
С малко усилия можете да подобрите вашия двигател на блоковата карта. Повечето базирани на блокове игри използват множество слоеве (сцените са поставени една върху друга, както е показано на Фигура 7.3), за да създадат страхотни ефекти. Например, като рисувате първо земята, след това героите и след това слой с други насложени обекти, ще получите имитация на триизмерна сцена.
Ориз. 7.3. За да създадете симулирана 3D среда, подреждате слоеве на карта един върху друг.
За да използвате няколко слоя, просто декларирате друг масив от карти (по един масив за всеки слой) и го попълвате с блокова информация. Започнете с първия слой и нарисувайте всички блокове, които съдържа. Когато начертаете последния блок от слоя, отидете на следващия слой и начертайте неговите блокове. Продължете, докато начертаете всички слоеве.
Да приемем, че използвате четири слоя. Имате основен слой за земята и обекти, които не могат да скрият герои, слой за рисуване на герои, слой за онези обекти, които могат да скрият герои, и слой, който скрива всичко (например за облаци, плаващи отгоре).
Сега създавате пет масива от карти и попълвате всеки масив с данни за блоковете, които ще бъдат изчертани. Влизайки във функцията за изобразяване на карта, преминаваме през всеки масив от слоеве на карта и го рисуваме на екрана. Това продължава, докато всички слоеве бъдат начертани. Код за рисуванемногослойната карта може да изглежда така:
// Tile = предварително инициализиран и зареден обект cTiles char Map[5][10][10]; // Данни на картата, имаме предвид,