SDL_Rect
Já vimos que, na criação de jogos, a utilização de imagens é algo trivial e aprendemos como carrega-las de formas diferentes. Nos jogos, cada objeto tem uma posição e quando atualizar a tela, muitas vezes queremos aquela posição específica, cabe a nós mostramos que posição é essa.
Uma das formas de faze-lo, é utilizando o SDL_Rect.
SDL_Rect é na verdade o tipo de uma variável que armazenará os dados necessários de uma posição na tela.
A declaração ocorre de forma normal, o tipo dela e o nome, porém devemos definir as propriedades que a variável carrega, que será a posição x na tela, a posição y na tela, a altura e comprimento da imagem. Para definir, colocamos o nome da variável um ponto e a inicial da propriedade.
A declaração ocorre de forma normal, o tipo dela e o nome, porém devemos definir as propriedades que a variável carrega, que será a posição x na tela, a posição y na tela, a altura e comprimento da imagem. Para definir, colocamos o nome da variável um ponto e a inicial da propriedade.
exemplo:
SDL_Rect verdeI;//SDL_Rect é o tipo da variável
verdeI.x = 36; // posicao X em px
verdeI.y = 39; // posicao y em px
verdeI.h = 194; // altura da imagem em px
verdeI.w = 194; // Largura da imagem em px
No exemplo, temos uma posição (36,39) na tela com largura de 194 pixels e altura de 194 pixels.
Agora, para imprimar a imagem na tela, utilizamos o mesmo comando
SDL_RenderCopy(o renderer utilizado, a imagem desejada, a posição rect final, posição rect inicial);
Antes, nos dois últimos parâmetros colocávamos NULL pois não especificamos a posição e por isso a imagem automaticamente preenchia toda a tela. Agora, queremos uma posição especifica. Podemos ainda colocar uma posição inicial e uma final para dizer até onde deve ser preenchido, para isso deve ser utilizado dois rects diferentes.
veja o exemplo com a declaração e impressão.
SDL_Rect verdeI;
verdeI.x = 36;
verdeI.y = 39;
verdeI.h = 194;
verdeI.w = 194;
SDL_Rect verdeF;
verdeF.x = 229;
verdeF.y = 232;
verdeF.h = 194;
verdeF.w = 194;
SDL_RenderCopy(renderer, verde, &verdeF, &verdeI);
Agora já sabe como como selecionar uma posição especifica na tela!
Veja o exemplo de projeto comentado detalhadamente para melhor entendimento aqui.
Bom Trabalho!
Links uteis:
https://wiki.libsdl.org/SDL_Rect
0 Comentários