Загрузка изображения в массив - PullRequest
0 голосов
/ 16 мая 2009

Как бы я загрузить определенные изображения в массив, например

Map = ( ( 1, 1, 1 ), ( 2, 2, 2 ), ( 3, 3, 3 ) ) 

могу поставить

изображения в переменные, как это

one = oslLoadImageFile ("one.png", OSL_IN_RAM, OSL_PF_5551);

чтобы я мог сделать что-то вроде Map = ((один, один, один))

и если бы каждое изображение было 32x32, оно могло бы быть рядом, а не на пикселе впереди

Извините, я все еще учусь и пытаюсь пройтись по некоторым основам в моем сердце

Ответы [ 2 ]

1 голос
/ 11 сентября 2009

Кажется, что вы используете 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

Похоже, что эта библиотека имеет очень ограниченное использование, и будет хорошей идеей задать свой вопрос на ее форуме .

0 голосов
/ 26 июня 2009

Звучит так, будто вы хотите построить карту тайлов для 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);
...