Adsterra

Jogos: Introdução ao Canvas do HTML5

 Introdução ao Canvas do HTML5

Pintando em um Canvas

Al2 logo



Neste Post iremos mostrar como usar o Canvas do HTML  5 para o desenvolvimento de jogos.  Canvas é um elemento introduzido no HTML 5 para permitir o desenvolvimento de software  que usam gráficos, como por exemplo, jogos digitais. É um bitmap retangular onde o programador pode usar código Javascript para desenhar.


Conceitos Abordados


Os tópicos que serão abordados neste Post são os seguintes.


  • Iremos falar sobre o Canvas.
  • Sobre o que é um Sprite.
  • O que é um frame em um Sprite.
  • E, finalmente, iremos falar sobre como realizar a simulação de movimento


Canvas em uma página Html


Aqui podemos ver o uso do Canvas em uma página Html.  Ao carregar a página a função desenha do javascript é chamada. Podemos ver também que o elemento Canvas é declarado com um tamanho de 600 por 500 pixels.  A função desenha, que está no arquivo teste.js, pode então realizar desenhos sobre o Canvas. Vamos ver o que essa função faz.

 

função desenha


Acima podemos ver a função desenhaEla desenha apenas um retângulo no Canvas. Para isso, primeiramente, ela obtém uma referência ao Canvas por meio do objeto DOM.  Em seguida, é obtido o contexto 2D, para desenhar. Até o momento, o contexto 2D é o único suportado. Finalmente, o contexto é usado para desenhar um retângulo no Canvas. Caso o navegador não suporte o uso do Canvas, uma mensagem é exibida. 

É importante salientar, que o ponto de origem do posicionamento de um elemento no Canvas é o canto superior esquerdo. Nesse canto, temos o pixel (0,0). Indo para direita, iremos incrementar  a posição no eixo x e descendo, iremos incrementar a posição no eixo y


ponto de origem do posicionamento de um elemento no Canvas é o canto superior esquerdo 

 

Sprites

 

Vamos mostrar agora como exibir uma imagem em um Canvas. A imagem que iremos ler contém uma série de desenhos de uma tartaruga em diferentes direções, e com pequenas alterações. Esse tipo de imagem é chamada de Sprite.

 

Sprite tartaruga


Sprite é um bitmap, bidimensional, contendo o mesmo personagem, ou elemento, com pequenas alterações, de modo que, ao exibir uma de cada vez apagando a anterior, fornecemos a ilusão de movimento. Cada imagem diferente do personagem dentro do Sprite é chamado de frameNo exemplo acima, o Sprite exibido possui oito frames.  Sprite são usados em jogos 2D e isométricosMostraremos como manipular essa imagem para simular movimento, um pouco mais adiante. O código abaixo mostra como exibir essa imagem como um todo. 


código abaixo mostra como exibir essa imagem como um todo



Primeiramente, lemos o arquivo com a imagem, usando a função src de um objeto imageApós o carregamento, podemos exibir a imagem, usando o método drawImage do objeto contextoNa versão mais simples do drawImage, passamos o objeto image, e a posição x e y, onde será desenhada a imagem. Porém, a versão completa do método, drawImage permite  a manipulação mais detalhada da imagem, como mostrado abaixo.

drawimage capivara

Ela permite que você selecione um recorte da imagem original, para ser exibido no Canvas, com um redimensionamento.  Vamos mostrar o uso desta versão do método com a figura contendo a série de desenhos de tartarugas. 

recorte da imagem original, para ser exibido no Canvas


Nesse exemplo, iremos apenas exibir a primeira tartaruga da sequência, ou seja, o primeiro frame, o que define um recorte de 50 por 50 pixels. Como é a primeira tartaruga, então as coordenadas de origem são 0 por 0.  Vamos colocar esse recorte no topo do Canvas, portanto as coordenadas de destino são 0 por 0.  E como iremos manter as proporções, o tamanho do recorte  no Canvas será 50 por 50 pixels. O resultado da execução desse código será a, exibição da primeira tartaruga da imagem, no canto superior esquerdo do Canvas. 


resultado da execução desse código será a, exibição da primeira tartaruga da imagem, no canto superior esquerdo do Canvas


Fazendo a tartaruga andar corretamente

 

O próximo passo é fazer a tartaruga andar, usando a técnica de Sprite, que é a ideia de sobrepor imagens em tempos diferentes. Para isso, vamos organizar o código para ficar mais modular e com componentes mais independentes. Vamos criar um objeto tartaruga, que agrupa as informações relacionadas com o personagem da tartaruga, tais como a posição atual, sua imagem e o frame corrente. 

 

objeto tartaruga, que agrupa as informações relacionadas com o personagem da tartaruga


Com isso a função desenha fica mais genérica, e exibe o frame corrente da tartaruga na posição parametrizada. Note que, a posição do frame corrente é obtida, multiplicando o número do frame pela largura do frame. 


função desenha fica mais genérica, e exibe o frame corrente da tartaruga na posição parametrizada


É preciso também, apagar a tartaruga desenhada anteriormente.  Para isso, criamos a função limpa, que desenha um retângulo sobre a tartaruga. Outra função importante, é a função que captura a tecla pressionada para fazer a tartaruga mudar de posição. Ela é atribuída ao método, addEventlistener, do DOM, e caso a tecla espaço seja pressionada, a função invoca a função limpa e, decrementa cinco pixels da posição vertical da tartaruga, fazendo com que o próximo frame seja desenhado um pouco mais acima. Além disso, ela alterna entre os dois primeiros frames, que são os frames onde a tartaruga está voltada para cima. Após isso, a função chama a função desenha.


função limpa


Resultado

Esse é o resultado da execução do código. 


resultado da execução do código


Chegamos ao final deste Post. O código completo desta lição está no Github e pode ser acessado por meio do link nos comentários.  A execução do código pode ser vista neste link. A versão em vídeo deste tutorial pode ser vista neste linkNos próximos Post abordaremos os conceitos de game loop e de tratamento de colisões. 


Chegamos ao final de nosso Post. Se esse Post foi útil para você, por favor, considere deixar um comentário.

Comentários

Post Populares