Desenvolvendo jogos para Android.docx

of 30/30
Desenvolvendo jogos para Android - Parte 1 - Criando elementos gráficos Jogo que iremos desenvolver: Smash! Hoje começaremos com uma série de tutoriais sobre desenvolvimento de jogos/games para Android. Para isso iremos construir juntos, passo a passo, o jogo que estou chamando de Smash! Nessa primeira parte aprenderemos como fazer os personagens, e o background utilizando a classe Sprite. O jogo é bastante simples: há os personagens rosas e os dourados. O objetivo do jogador é derrotar todos os rosas (clicando neles) sem clicar nos dourados, no mínimo de tempo possível. A medida que se avança nas fases os personagens ficam mais rápidos. Iremos utilizar como base para o desenvolvimento o nosso Android Game Engine que estamos desenvolvendo aqui no blog. Iremos usar a 1ª versão dele, que tem pouca coisa mas o suficiente para criar esse jogo. Se você quer saber como funciona essa engine, quer entender como o jogo roda, acesse os tutoriais sobre ele aqui . Acompanhe o desenvolvimento por aqui ou baixe o código usado aqui ou o .apk aqui .
  • date post

    28-Dec-2015
  • Category

    Documents

  • view

    24
  • download

    0

Embed Size (px)

Transcript of Desenvolvendo jogos para Android.docx

Desenvolvendo jogos para Android - Parte 1 - Criando elementos grficos

Jogo que iremos desenvolver: Smash!

Hoje comearemos com uma srie de tutoriais sobre desenvolvimento de jogos/games para Android. Para isso iremos construir juntos, passo a passo, o jogo que estou chamando de Smash! Nessa primeira parte aprenderemos como fazer os personagens, e o backgroundutilizando a classe Sprite.

O jogo bastante simples: h os personagens rosas e os dourados. O objetivo do jogador derrotar todos os rosas (clicando neles) sem clicar nos dourados, no mnimo de tempo possvel. A medida que se avana nas fases os personagens ficam mais rpidos.

Iremos utilizar como base para o desenvolvimento o nosso Android Game Engineque estamos desenvolvendo aqui no blog. Iremos usar a 1 verso dele, que tem pouca coisa mas o suficiente para criar esse jogo. Se voc quer saber como funciona essa engine, quer entender como o jogo roda, acesse os tutoriais sobre ele aqui.

Acompanhe o desenvolvimento por aquiou baixe o cdigo usado aqui ou o .apk aqui.

Ento vamos comear. Crie um novo projeto com as suas preferncias. A primeira coisa a se fazer adicionar o Android Game Engine no projeto. Isso simples. Primeiro crie uma pasta "libs" na raiz do seu projeto (junto com src, res...) e nessa pasta coloque esse aquivo. Agora v no eclipse, abra essa pasta (se ainda no apareceu no Package Explorerdo eclipsede um F5 que ir aparecer), d um clique direito no arquivo que adicionamos (AndroidGameEngine.jar) e v em Build Path -> Add to Build Pathcomo mostra a figura:

Adicionando a biblioteca do Android Game Engine ao projeto.

Feito isso vamos comear a codificao do jogo de fato. Vamos comear com o sprite do personagem dourado, chamado de Gold, por ser bastante simples. Ele apenas vai ficar rodando o cenrio, e no h alterao na animao. Ele ir estender a classe Sprite:

packagecom.tutoriandroid.games.smash;

importjava.util.Random;

importandroid.graphics.Bitmap;

importcom.gdacarv.engine.androidgame.Sprite;

publicclassGoldextendsSprite{publicintspeedX,speedY;

publicGold(intx,inty,Randomrandom,Bitmapbmp,intbmp_rows,intbmp_columns){super(bmp,bmp_rows,bmp_columns);setAnimation(ANIM_GO);// Seta a animao apenas como "ida" (ciclca).speedX=random.nextInt(7)-3;//Velocidade horizontal de -3 a 3.speedY=random.nextInt(7)-3;//Velocidade vertical de -3 a 3.this.x=x;this.y=y;}

@Overridepublicvoidupdate(){// Anda.super.update();x+=speedX;y+=speedY;}}

Bem simples no? O construtor recebe como parmetros a posio (x, y), uma instncia para gerar nmerosrandmicos(poderia criar uma nova dentro do construtor, mas acho melhor utilizar a mesma para todas as instncias), a imagem em Bitmap, e a quantidade de linhas e colunas de frames dessa imagem.

Vamos ento partir para o spritedo personagem rosa, chamado de Pink, que um pouco mais complexo por envolver diferentes animaes e tipo de movimentao:

packagecom.tutoriandroid.games.smash;

importjava.util.Random;

importandroid.graphics.Bitmap;importandroid.graphics.Paint;

importcom.gdacarv.engine.androidgame.Sprite;

publicclassPinkextendsSprite{publicintspeed=1;// Velocidade da movimentao/animao.publicbytedirection=0;// Direo da movimentao/animao.privatebooleandying=false,dead=false;protectedbyteanimationSpeedControl=0;

publicPink(intx,inty,Randomrandom,Bitmapbmp,intbmp_rows,intbmp_columns){super(bmp,bmp_rows,bmp_columns);direction=(byte)random.nextInt(8);// Direo aleatria.intframe=1+direction*3;// Seta o frame inicial para a direosetAnimation(frame,frame,frame+3,ANIM_GOBACK);this.x=x;this.y=y;}

@Overridepublicvoidupdate(){animationSpeedControl++;// Esta verso do Android Game Engine noif(animationSpeedControl>=6-speed){// suporta mudana nasuper.update();// velocidade da animao, ento foi feitoanimationSpeedControl=0;// esse hack para diminuir a}// velocidade, que estava muito rpida. if(!dying){// Se no est morrendo, anda na direo.x+=direction%4>0?direction>4?-speed:speed:0;y+=Math.abs((direction-2)%4)>0?direction>6||direction