C - SDLの私のビデオゲームでは、自分で作ったスプライトシートを使う必要があります。 画像サイズは100×100であると私が取りたい各画像は25×25関数で画像を読み込むにはどうすればよいですか?
は私がどこかで私のためにそれを行うことができます素敵な機能見つかっです:
// Wraps a rectangle around every sprite in a sprite sheet and stores it in an array of rectangles(Clip[])
void spriteSheet(){
int SpriteWidth = 25; int SpriteHeight= 25; int SheetDimension = 4;
int LeSprites = SheetDimension * SheetDimension;// Number of Sprites on sheet
SDL_Rect Clip[LeSprites]; // Rectangles that will wrap around each sprite
int SpriteXNum = 0;// The number sprite going from left to right
int SpriteYNum = 0;// The number sprite going from top to bottom
int YIncrement = 0;// Increment for each row.
int i = 0;
for(i = 0; i< LeSprites; i++){// While i is less than number of sprites
if(i = 0){// First sprite starts at 0,0
Clip[i].x = 0;
Clip[i].y = 0;
Clip[i].w = SpriteWidth;
Clip[i].h = SpriteHeight;
}
else{
if(SpriteXNum < SheetDimension - 1){// If we have reached the end of the row, go back to the front of the next row
SpriteXNum = 0;
}
if(YIncrement < SheetDimension - 1){
SpriteYNum += 1; // Example of 4X4 Sheet
} // ________________
Clip[i].x = SpriteWidth * SpriteXNum; // | 0 | 1 | 2 | 3 |
Clip[i].y = SpriteHeight * SpriteYNum; // |===============|
// | 0 | 1 | 2 | 3 |
// |===============|
Clip[i].w = SpriteWidth; // | 0 | 1 | 2 | 3 |
Clip[i].h = SpriteHeight; // |===============|
// | 0 | 1 | 2 | 3 |
} // |---------------|
SpriteXNum++;
YIncrement++;
}
}
をしかし、今、私は私が(私のロードすることができます方法を知ってはいけませんpng)の画像を表示してこの機能を適用します。
ありがとうございますが、私は画像の各四角形が配列に必要です。だから私はimage [0] image [12]のようなイメージを呼び出すことができるでしょう。 –
種類はスプライトシートを持つという目的を打ち負かしますが、その場合はスプライトごとに新しいサーフェス(SDL_CreateSurfaceを使用)を作成できますSDL_BlitSurfaceを使用して、そのサーフェスに描画するのと同様の方法で、そのサーフェスにblitします。その後、サーフェスポインタを配列に格納するだけです。 – ravuya