Загрузка изображения в массив
Как бы я загрузить определенные изображения в массив, как
Map = ( ( 1, 1, 1 ), ( 2, 2, 2 ), ( 3, 3, 3 ) )
Я могу поставить
изображения в переменные, как так
one = oslLoadImageFile("one.png", OSL_IN_RAM, OSL_PF_5551);
так что я мог бы сделать что-то вроде Map = ( (один, один, один))
и если бы каждое изображение было 32x32, оно могло бы быть рядом, а не на пикселе впереди
Извините, я все еще учусь и пытаюсь пройти некоторые основы в моем сердце
2 ответа
Похоже, вы используете C++ OldSchool Library для PSP. Согласно его документации, вы должны создать один файл изображения, который должен содержать набор изображений, и тогда вы сможете создать карту с ним.
//definition of the pointers towards our image
OSL_IMAGE *Zora_tileset;
//definition of the pointers towards our map
OSL_MAP *zora;
Zora_tileset = oslLoadImageFile("tileset.png", OSL_IN_RAM, OSL_PF_5551);
//check
if (!Zora_tileset)
oslDebug("Check if all the files are copied in the game folder.");
//configuration of the map
zora = oslCreateMap(
Zora_tileset, //Tileset
Zora_map, //Map
16,16, //Size of tiles
64,65, //Size of Map
OSL_MF_U16); //Format of Map
Похоже, что эта библиотека имеет очень ограниченное использование, и будет хорошей идеей задать свой вопрос на ее форуме.
Похоже, вы хотите построить карту тайлов для 2D-игры. В этом случае вы хотели бы иметь один спрайт, содержащий все ваши тайлы. Карта будет содержать индексы для конкретных плиток.
Когда приходит время рисовать плитки, вы копируете части спрайта на основе индекса плитки.
Если у вас было спрайт-изображение с плитками, проиндексированными следующим образом:
+---+---+---+---+
| 0 | 1 | 2 | 3 |
+---+---+---+---+
| 4 | 5 | 6 | 7 |
+---+---+---+---+
| 8 | 9 |
+---+---+
Вы можете использовать что-то вроде этого, чтобы вычислить прямоугольник для копирования для каждого индекса плитки:
const int TILE_SIZE = 32;
const int TILES_PER_ROW = 10;
int xCoordinate = TILE_SIZE * (tileIndex % TILES_PER_ROW);
int yCoordinate = TILE_SIZE * (tileIndex / 10);
Draw(tileSet, xCoordinate, yCoordinate, TILE_SIZE, TILE_SIZE);