Para desenvolver um jogo, primeiro necessrio compreender as classes de desenho e controle de loops. Iniciaremos com um jogo simples, apenas utilizando a classe Canvas para desenhar e manipular formas, controlar colises, identificar aes do usurio e demonstrar atualizao de imagens, de acordo com as aes do usurio. No ser utilizado nenhum framework de desenvolvimento, apenas android puro.
Inicialmente trabalharemos com duas classes: Uma Activity, onde ser recebido as aes do usurio, e uma classe de controle da lgica do jogo, que far a atualizao das imagens mostradas na tela. Primeiramente, na activity principal, deixaremos ela como tela inteira:
Agora criaremos a classe onde ser feito a lgica do jogo. Esta classe ser uma thread que ficara executando, recebendo os inputs enviados pelo usurio:
Nossa classe com a logica estender da classe SurfaceView e implementar a interface Runnable: Runnable permite rodar instrues em uma thread separada. SurfaceView Classe do android que permite desenhar em uma superfcie, ao invs de utilizarmos o XML.
Agora, em nossa MainActivity, vamos declarar um objeto da nossa classe lgica, e vamos defini-lo como a tela de nossa activitiy, ao invs de um XML:
2. Game Loop: O conceito mais importante de um jogo o seu Loop principal. neste Loop em que sero desenhados os inimigos, detectados colises, identificados eventos, atualizado placar e gerados eventos aleatrios. O Loop principal realizado diversas vezes por segundo. Criaremos em nossa classe Logica um loop infinito:
,
Na MainActivity devemos chamar o mtodo rodar(), para iniciar a lgica. No momento no far nada. 3. Trabalhando com Imagens com a classe Canvas Para desenharmos agora na tela do Android, utilizaremos uma classe chamada Canvas. Nesta classe poderemos pintar diversas formas. Utilizaremos de um objeto SurfaceHolder e um objeto Paint: SurfaceHolder utilizaremos para verificar se a tela est apta ou no para receber imagens. Paint utilizaremos como uma base para a cor dos desenhos. Definimos ambos os objetos no inicio da classe Logica.
Agora no nosso Loop principal, estaremos travando a tela, pintando o que for necessrio e destravando-a novamente:
Com a classe Paint estamos definindo a cor de nossa forma, e com a classe Canvas estamos definindo-a em nossa tela. Aps destravado a imagem, ela dever ser mostrada da seguinte forma:
Utilizamos o mtodo Canvas.drawCircle(int posX, int posY, int raio, Paint paint); Onde PosX e PosY definem o local onde ser iniciado o centro do circulo, o raio ser o raio do circulo em pixels, Paint ser o objeto com as propriedades de cor. Dependendo da forma que deseja pintar, o mtodo diferente: eis alguns mtodos:
Para definirmos a cor de fundo, utilizaremos o mtodo canvas.drawColor(int Color). Este mtodo deve ser antes de todos os outros desenhos, para no sobrepo-los.