Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programming / GameProg / RPG_Programming_2ed.pdf
Скачиваний:
243
Добавлен:
12.02.2016
Размер:
12.06 Mб
Скачать

Глава 7. Использование двухмерной графики

long SrcX, SrcY;

// Проверка ошибок if(m_Graphics == NULL)

return FALSE;

if(TextureNum >= m_NumTextures || m_Textures == NULL) return FALSE;

// Вычисление координат источника блока в текстуре

SrcX = (TileNum % m_Columns[TextureNum]) * m_Widths[TextureNum]; SrcY = (TileNum / m_Columns[TextureNum]) * m_Heights[TextureNum];

return m_Textures[TextureNum].Blit(ScreenX, ScreenY, SrcX, SrcY, m_Widths[TextureNum], m_Heights[TextureNum], XScale, YScale);

}

Использование класса работы с блоками

Вот пример, который загружает две текстуры с блоками. Первая текстура содержит 64 блока, каждый размером 32 × 32 пикселя. Вторая текстура содержит 16 блоков, каждый размером 64 × 64 пикселя.

//Graphics = ранее инициализированный объект cGraphics cTiles Tile;

//Создаем класс блоков с местом для двух текстур

Tile.Create(Graphics, 2);

//Загружаем обе текстуры, указывая,

//что черный цвет будет прозрачным

Tile.Load(0, "Tiles1.bmp", 32, 32,

D3DCOLOR_RGBA(0,0,0,255), D3DFMT_A1R5G5B5);

Tile.Load(1, "Tiles2.bmp", 64, 64,

D3DCOLOR_RGBA(0,0,0,255), D3DFMT_A8R8G8B8);

//Рисуем пару блоков из первой текстуры без прозрачности

Tile.SetTransparent(FALSE);

//Блок 0 (в точке 128, 128) и 3 (в точке 0, 0)

Tile.Draw(0, 0, 128, 128); Tile.Draw(0, 3, 0, 0);

//Рисуем пару блоков из второй текстуры с прозрачностью

Tile.SetTransparent(TRUE);

//Блок 1 (в точке 28, 18) и 16 (в точке 100, 90)

Tile.Draw(1, 1, 28, 18);

Tile.Draw(1, 16, 100, 90);

//Освобождаем класс работы с блоками и текстуры

Tile.Free();

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

362

netlib.narod.ru

Соседние файлы в папке GameProg