Posição específica na tela, SDL_Rect



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. 

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

Postar um comentário

0 Comentários