Você está na página 1de 59

Que tal voc desenvolver jogos para smartphones e tablets que utilizam a plataforma

Android? Voc no sabe por onde comear ou o que precisa fazer?


Relaxa ... siga esse e os prximos tutoriais escritos por mim sobre desenvolvimento de
jogos Android que voc far games logo, logo. o/

Apresentando-se e explicando as ferramentas de trabalho

Ento meu povo, para termos um incio mais tranquilo, eu vou explicar sobre algumas
ferramentas que vamos trabalhar daqui em diante. Elas sero a base para que voc possa
fazer praticamente qualquer aplicao Android. Vou deixar claro que vou focar todos os
tutoriais em um ambiente de desenvolvimento no Windows 8, mas saibam que todas essas
ferramentas tm para Linux tambm. Dessa forma se voc curte o sistema operacional,
voc pode baix-las e fazer meus tutoriais da mesma forma. =]
Eu vou me referir como ambiente de desenvolvimento ao conjunto de todas as
ferramentas necessrias para podermos desenvolver uma aplicao Android. Mas quais
so essas ferramentas, Santy? (sim, esse o meu apelido).
O ambiente de desenvolvimento padro precisa de pelo menos o compilador Java e do kit
de desenvolvimento Android do Google. Sem eles, meus amigos, esqueam. Eu aconselho
fortemente (tipo ... FORTEMENTE) vocs inclurem o Eclipse IDE como parte do ambiente
de desenvolvimento. Ele ajuda muito o desenvolvedor evitando um monte de trabalho
braal com compilao e durante a procura de erros quando vocs comearem a
programar.
Vou explicar cada uma dessas ferramentas por partes.

O compilador Java
Para quem no sabe o que um compilador, ele um programa que transforma seu
cdigo escrito em um programa de computador. Faz sentido ele ser essencial para quem
quer desenvolver aplicaes para Android, no? o compilador Java que vai ler o
programa que voc vai escrever e transformar no arquivo que voc geralmente baixa do
Google Play quando instala um aplicativo de l.
O real nome do compilador Java SE Development Kit, traduzindo para o portugus fica:
kit de desenvolvimento Java SE. O SE significa Standard Edition, que no portugus fica:
edio padro. Tudo isso pode ser abreviado como JDK. \o/

Voc pode baixar o compilador Java


diretamente do site da Oracle, que detm os direitos do Java, clicando aqui. Voc poder
ver que tem bastantes instalaes l. Escolha aquela que prpria para o sistema
operacional que voc est usando. A instalao bem tranquila, seguindo aquele padro
next next finish.
Para testar se voc instalou direito, segure o boto do Windows e aperte R. Vai abrir a
janelinha Executar. Ali voc digita cmd e aperta enter. Vai abrir a tela do prompt de
comando. No prompt de comando, voc digita cd %JAVA_HOME% e aperta enter. Logo
depois, digite javac -version. Se aparecer javac <alguma coisa> significa que voc
instalou certinho. Coloquei abaixo as imagens da tela do Executar (Figura 1 Tela
executar) e do prompt de comando (Figura 2 Tela do prompt) com os comandos que eu
falei para vocs digitarem. Provavelmente essas imagens vo ajudar bastante vocs.

Figura 1- Tela Executar

Figura 2 - Tela do Prompt

Kit de Desenvolvimento Android

O nome real dele Android Software


Development Kit, que traduzindo fica: kit de desenvolvimento de aplicaes Android. O
pessoal que desenvolve para a plataforma chama mais de Android SDK.
Voc pode baixar o Android SDK no site prprio do Google para desenvolvedores Android
clicando aqui. Na pgina, clique em Download SDK.
Voc far o download de um arquivo compactado. Descompacte-o em qualquer lugar.
Quando voc descompactar voc ver que ali tem uma pasta do Eclipse e uma do prprio
SDK. Sim at o pessoal do Google acha interessante voc usar o Eclipse. ;D
Enfim, copie essas duas pastas onde voc achar melhor, mas elas precisam estar juntas
(sdk e eclipse juntas na mesma pasta). No as separe seno voc ter vrios problemas.
Voc j est com praticamente todo o ambiente de desenvolvimento na sua mquina.
Agora s falta configur-lo. Para isso, vamos saber como funca (funciona) o Eclipse IDE.

Eclipse IDE:

O nome real Eclipse Integrated Development


Environment, traduzindo: ambiente de desenvolvimento integrado Eclipse. Ele fornece
praticamente tudo o que o desenvolvedor precisa. Aplicativo de edio de cdigo, mostra
erros nos cdigos, ajuda a consertar erros mostrando vrias possveis correes, compila
de forma automtica e instala automaticamente no seu aparelho celular ou tablet, informa
erros e onde ocorreram esses erros. Cara ele uma maravilha para quem desenvolve.
Se voc quiser saber mais sobre ele, entre no site oficial aqui. MAS ele precisa ser
configurado, obviamente.
Para isso, primeiramente o abra, entrando na pasta eclipse e clicando em eclipse.exe.
Clique em Ok na tela que vai aparecer e ento ele abrir a tela inicial do Eclipse. Nela,
clique no boto Android SDK Manager. Se voc no achou o boto, olhe o print de tela
que eu coloquei abaixo (Figura 3 Boto SDK Manager). Clicando ali, ele vai abrir o
Gerenciador de pacotes do Android. Tambm coloquei uma imagem da tela dele (Figura 4
- SDK Manager). Para voc conseguir desenvolver um aplicativo (game) voc precisar
baixar pelo menos uma plataforma (eu baixo todas). Aconselho vocs a baixarem aquela
que a do teu aparelho de teste. Se voc no tem um aparelho de teste, baixe a ltima
mesmo (Android 4.3 API 18, nesse momento). Voc precisar baixar tambm todas as
ferramentas (Tools).

Figura 3- Boto SDK Manager

Figura 4 - SDK Manager


Fazendo isso, respeitveis leitores, vocs acabaram de configurar o ambiente de
desenvolvimento. Eeeeeeee . o/
J d para comear a programar, mas isso tema para o prximo tutorial. ;D

Vamos com calma que tudo dar certo. Mas se vocs j quiserem ir fuando ...

Pessoal, tambm quero


apresentar a vocs o melhor amigo de todo desenvolvedor Android, o canal Android
Developers. Vocs podem acess-lo por aqui. Praticamente tudo o que eu falei no tutorial,
eu tirei dali. Legal, n? Qualquer dvida que vocs tiverem que foge um pouco dos
tutoriais, procurem l que muito provavelmente vocs acharo a resposta.
Aos desenvolvedores em Linux, existem algumas coisas que talvez vocs precisaro se
preocupar amais. Olhem nessa pgina, cliquem em System Requirements e deem uma
olhada l caso esse tutorial no ajude vocs.
No prximo tutorial vamos desenvolver nossa primeira aplicao Android. Provavelmente
eu vou ver um game simples para j termos um bom resultado logo de cara.

No ltimo tutorial, eu mostrei para vocs como configurar o ambiente de desenvolvimento


Android. Falei sobre o compilador Java, o SDK Android e sobre o Eclipse IDE. Nesse
tutorial, eu falarei sobre como instalar o driver do seu aparelho Android para rodarmos
nosso jogo no seu aparelho, como o configurar para executar a aplicao e os passos para
fazermos o nosso primeiro game.

Obviamente, como estamos iniciando, no esperem que vamos desenvolver hoje


um World of Warcraft para tablet. Isso seria um pouco ambicioso de nossa parte. Mas
como eu sei que vocs so confiantes e querem desenvolver jogos ao nvel, ento vamos
comear pelo basico: o Jokenp, ou o famoso jogo pedra, papel e tesoura. Vamos
comear? Let's play!

Instalao do driver e configurao do aparelho

Para voc poder rodar uma aplicao Android


no seu celular ou tablet, voc precisa instalar o driver USB no seu PC. Isso necessrio
principalmente porque o ambiente de desenvolvimento precisa se comunicar certinho com
o celular. Como existem aparelhos de muitas fabricantes diferentes, voc precisar
encontrar o driver do seu aparelho na lista disponibilizada pelo Google. Procure
diretamente no site do fabricante do seu aparelho o driver do seu modelo certinho e
instale.
Agora voc precisa configurar o seu telefone ou tablet para o modo depurador. O modo
depurador faz com que o seu aparelho fique apto para executar qualquer operao de
desenvolvimento conectado com o PC. Esse incio meio tcnico, mas ele ser realizado
uma nica vez. =]
No seu aparelho, faa os seguintes caminhos:
Boto de Opes Configuraes Segurana Fontes desconhecidas
Deixa essa opo selecionada.
Boto Opes Configuraes Opes do desenvolvedor Depurao de
USB
Deixa essa opo selecionada tambm.

A Figura 1 mostra as telas das primeira e segunda opes. Vale falar que essas telas so
do Android verso 4.0.3 (Ice Cream Sandwich). Talvez o caminho para chegar nessas
opes varie dependendo a verso do seu Android.

Figura 1 - Depurao USB


Se vocs observarem, tem uma opo que eu no falei sobre o que . Quando vocs
clicam em Fontes desconhecidas, o seu aparelho fica livre para instalar qualquer
aplicativo fora do Google Play. Como o seu jogo ainda no est publicado no Google Play,
voc precisa selecionar essa opo para que o Android instale o seu jogo. Vale lembrar
que quando voc clica nessa opo, o seu celular fica mais vulnervel a ataques de vrus.
Cuide sempre do seu celular desabilitando essa opo, logo depois de voc desconectar o
seu celular da USB do seu PC.
Aps instalar o driver e configurar o seu celular para desenvolvimento, vamos ver se ele
reconhecido pelo SDK Android. Se ele for reconhecido, ento ele est pronto para rodar o
seu aplicativo. Mas como fazer isso?
Primeiro conecte o seu aparelho em modo de depurao na USB do seu PC. Logo aps
entre do Prompt de Comando. Se voc no lembra como entrar no Prompt de Comando,
olhe no primeiro tutorial como se faz. Acesse a pasta onde voc descompactou o SDK
Android digitando cd <c:\caminho da pasta>. Digite cd platform-tools e aperte enter.
Digite adb devices e aperte enter. Se aparecer algum dispositivo na lista de aparelhos,
ento voc fez tudo certinho. =]

A Figura 2 mostra os comandos que eu fiz e o meu aparelho listado ali. No meu
computador, o SDK est copiado dentro da minha pasta de Arquivos e Programas. Eu
apaguei as primeiras letras do nmero identificador do meu celular porque eu no quero
que vocs o saibam. =P

Figura 2 - Dispositivo detectado


Bora programar nosso primeiro game? Weee *_*

Criando o Projeto do Jogo no Eclipse


bem tranquilo para criarmos o nosso projeto no Eclipse. Vou mostrar para vocs como
fazer isso praticamente do zero e com imagens sequenciais.
Primeiramente abra o Eclipse IDE. Clique no menu superior File, selecione New e
clique em Other ....

Na janela que abriu, expanda a pasta Android, selecione a opo Android Application
Project e clique em Next.

D o nome da aplicao de Jokenpo. Depois disso, ser preenchida a maioria dos


campos automaticamente. Eu mudei o nome do pacote para com.santy.Jokenpo por
opo mesmo. Ali nos campos sobre verso do Sistema Operacional Android, de
preferncia, coloque a verso do seu aparelho em todos. Clique em Next.

Clique em Next nas prximas telas at aparecer a tela Blank Activity. Nessa tela, voc
modifica o nome da Activity para JokenpoActivity. Clique em Finish.

Voc acabou de criar a sua primeira aplicao Android. \o/


Agora eu vou mostrar o que voc precisa fazer para criar o jogo Jokenpo. Esse jogo eu
programei aqui unicamente para vocs executarem a. No vai dar para eu explicar tudo o
que eu fiz nesse tutorial, mas eu explicarei tudo no prximo. Apenas faam o que eu
falar. ;D

Programando o Jokenpo
Aps vocs criarem o projeto, vo no lado esquerdo da janela do Eclipse, em Package
Explorer abram a pasta res e a subpasta values. Nessa ltima pasta, tem um arquivo
strings.xml, abra-o clicando duas vezes sobre ele. Quando voc abrir esse arquivo, ele
vai ser apresentado no centro da janela do Eclipse. Nessa parte, logo abaixo, tem uma aba

chamada strings.xml, clique nessa aba. A Figura 3 mostra sequencialmente todo o


caminho que eu descrevi.

Figura 3 - Editando o arquivo strings.xml


No editor de texto que abriu, digite as linhas a seguir:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Jokenpo</string>
<string name="action_settings">Settings</string>
<string name="opcoes">Escolha uma opo</string>
<string name="ultimaJogada">ltima Jogada</string>

<string name="jogadaPlayer">Voc</string>
<string name="resultado">Resultado</string>
<string name="jogadaPC">Computador</string>
</resources>
Escrevendo isso, ns acabamos de criar um conjunto de constantes Strings que sero
utilizadas no jogo. Como eu falei, a explicao mais aprofundada eu deixarei para o
prximo tutorial.
Aps isso, salve e feche o arquivo. Agora, crie uma pasta dentro da pasta res chamada
drawable. Aps cri-la, coloque dentro os arquivos de imagem anexos nesse tutorial.
Esses arquivos podem serbaixados aqui. Para criar uma pasta em res, clique com o
boto direito em res, selecione New e clique em Folder. Depois de criar a pasta,
arraste os arquivos de imagem para dentro dela. A Ilustrao 4 mostra como o projeto vai
ficar depois disso.

Figura 4 - Incluso dos arquivos de imagem

Acabamos de incluir no projeto as imagens que ficaro nos botes quando voc for
escolher se voc quer pedra, papel ou tesoura. Essas imagens eu busquei na internet e,
como eu vi em vrios blogs, ento eu conclui que elas caram em domnio pblico. De
qualquer forma, eu deixo claro que esse tutorial serve unicamente como aprendizado e
no como uma forma de eu ganhar dinheiro.
Depois disso, abra a pasta res e abra a subpasta layout. Nessa ltima pasta tem um
arquivo chamado activity_jokenpo.xml. Abra esse arquivo e selecione a aba
activity_jokenpo.xml, assim como fizemos quando editamos o arquivo strings.xml.
Nesse editor de texto, escreva as seguintes linhas:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".JokenpoActivity" >

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/button2"
android:layout_centerHorizontal="true"

android:text="@string/opcoes"
android:textSize="30sp" />

<Button
android:id="@+id/button1"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_above="@+id/textView2"
android:layout_toLeftOf="@+id/button2"
android:background="@drawable/pedra" />

<Button
android:id="@+id/button2"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_above="@+id/textView2"
android:layout_centerHorizontal="true"
android:background="@drawable/papel" />

<Button
android:id="@+id/button3"
android:layout_width="100dp"

android:layout_height="100dp"
android:layout_above="@+id/textView2"
android:layout_toRightOf="@+id/button2"
android:background="@drawable/tesoura" />

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/ultimaJogada"
android:textSize="30sp" />

<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_toLeftOf="@+id/imageView2"
android:text="@string/jogadaPlayer" />

<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true"
android:text="@string/resultado" />

<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_toRightOf="@+id/imageView2"
android:text="@string/jogadaPC" />

<ImageView
android:id="@+id/imageView1"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_below="@+id/textView4"
android:layout_toLeftOf="@+id/imageView2" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_below="@+id/textView4"
android:layout_centerHorizontal="true" />

<ImageView
android:id="@+id/imageView3"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_below="@+id/textView4"
android:layout_toRightOf="@+id/imageView2" />
</RelativeLayout>
Acabamos de modelar a principal tela do jogo com esse cdigo. Agora vamos incluir a
lgica no jogo. Para isso, abra a pasta src e a subpasta com.santy.jokenpo. Ali dentro
tem um arquivo chamado JokenpoActivity.java. Abra-o e digite no editor o seguinte
cdigo:

package com.santy.jokenpo;

import java.util.Random;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class JokenpoActivity extends Activity {

private Random numeroAleatorio;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_jokenpo);

numeroAleatorio = new Random();


Button pedra = (Button)findViewById(R.id.button1);
pedra.setOnClickListener(new OnClickListener() {
public void onClick(View v) {

findViewById(R.id.imageView1).setBackgroundResource(R.drawable.pedr
a);
realizaJogadaPC(1);
}
});

Button papel = (Button)findViewById(R.id.button2);


papel.setOnClickListener(new OnClickListener() {
public void onClick(View v) {

findViewById(R.id.imageView1).setBackgroundResource(R.drawable.pape
l);
realizaJogadaPC(2);
}
});

Button tesoura = (Button)findViewById(R.id.button3);


tesoura.setOnClickListener(new OnClickListener() {
public void onClick(View v) {

findViewById(R.id.imageView1).setBackgroundResource(R.drawable.teso
ura);
realizaJogadaPC(3);

}
});
}

public void realizaJogadaPC(int jogadaPlayer) {


int jogadaPC;
jogadaPC = numeroAleatorio.nextInt(3) + 1;
if(jogadaPC==1) {

findViewById(R.id.imageView3).setBackgroundResource(R.drawable.pedr
a);
if(jogadaPlayer==1)

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.empa
tou);
else if(jogadaPlayer==2)

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.venc
eu);
else

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.perd
eu);
}
else if(jogadaPC==2) {

findViewById(R.id.imageView3).setBackgroundResource(R.drawable.pape
l);
if(jogadaPlayer==1)

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.perd
eu);
else if(jogadaPlayer==2)

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.empa
tou);
else

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.venc
eu);
}
else if(jogadaPC==3) {

findViewById(R.id.imageView3).setBackgroundResource(R.drawable.teso
ura);
if(jogadaPlayer==1)

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.venc
eu);
else if(jogadaPlayer==2)

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.perd
eu);

else

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.empa
tou);
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar
if it is present.
getMenuInflater().inflate(R.menu.jokenpo, menu);
return true;
}
}
Muito provavelmente o Eclipse deve apontar algum erro. Apontando ou no, necessrio
que ele atualize o projeto com todas as modificaes que voc fez. Para isso, clique no
menu superior Project e selecione Clean .... Na janela que abrir, selecione Clean all
projects e clique em OK. Nesse momento, o Eclipse atualiza todo o projeto e elimina os
erros. As Ilustraes abaixo mostram o caminho e a tela que ser aberta.

Figura 5 - Opo de limpeza do projeto

Figura 6 - Limpeza de todos os projetos


Uffffaaa vamos rodar o game agora. ;D

Rodando o jogo no seu dispositivo


Se o seu celular estiver ligado na USB do PC e devidamente configurado como fizemos e
testamos, ele executar o jogo. Est curioso n!? =P
No Eclipse, selecione a opo Run no menu superior e clique em Run
Configurations ....

Figura 7- Opo de execuo


Na tela que abrir, d duplo clique na opo Android Application. Logo do lado, coloque
em nome a palavra Jokenpo. Clique em Browse... e selecione Jokenpo. Em Launch
Action, selecione Launch e selecione a opo com.santy.jokenpo.JokenpoActivity no
combobox logo ao lado. Logo aps mude a aba clicando em Target.

Figura 8 - Configurando Execuo do jogo


Na nova aba, clique em Always prompt to pick device e clique em Run. Voc acabou de
executar o jogo que voc programou. ;D
Quando voc clicar em Run vai abrir uma tela perguntando em qual dispositivo voc quer
executar o jogo. Selecione o seu dispositivo na tela e clique em OK. A Ilustrao abaixo
mostra a tela de escolha de dispositivo.

Figura 9 - Seleo do dispositivo


Olhe a tela do seu celular e voc ver o game executando. AAAWWWW YEEAAAHHH.
Corre mostrar o seu jogo para o seu irmo, amigo, pai, av, tio, cunhado, namorada (o),
cachorro e para quem for. ;D
Para os curiosos de planto que esto lendo o tutorial e no o esto fazendo, a Ilustrao
abaixo a tela do jogo executando.

Figura 10 - Execuo do jogo Jokenpo


Ah, Santy mas eu no tenho nenhum celular Android. O que eu fao? Eu vou explicar,
no prximo tutorial, cada linha de cdigo que eu coloquei nesse, alm de falar sobre como

executar o jogo no emulador que vem junto com o SDK. Infelizmente no d para mostrar
tudo para todo mundo em um tutorial s. Aguardem. =]
Aprendemos hoje a instalar os drivers de um dispositivo Android para desenvolvimento.
Aprendemos tambm a configurar o dispositivo para ele servir como um aparelho teste.
Vimos como criar um projeto no Eclipse e como executar um aplicativo no celular. Bastante
coisa n!?

No tutorial Desenvolvimento de jogos para Android Parte 2, eu mostrei para vocs como
instalar o driver do seu dispositivo e como configur-lo para ele executar a sua aplicao
Android. Programamos tambm um game de Jokenp.
Ento meu povo, hoje vamos aprender como executar o jogo que vocs programaram
no emulador do SDK Android para qualquer tipo de hardware. Achei melhor deixar a parte
de explicao do programa para um nico tutorial. O tutorial que explicar todo o cdigo
ser o prximo. Que tal irmos devagar? Muita informao s vezes confunde. ;D
Bora executar o jogo no emulador? Bora.

Como executar o jogo no emulador do SDK Android?


Eu comentei no ltimo tutorial que possvel rodar o jogo no emulador que vem junto com
o SDK Android. Esse suporte necessrio porque nem sempre voc tem um aparelho
para testar o jogo. s vezes, tambm, o seu jogo precisa funcionar em todos os aparelhos
do mercado e, voc concorda comigo que um pouco caro comprar todos para fazer
testes. ;D
Primeiramente voc precisa cadastrar um novo dispositivo virtual. O SDK trata dispositivos
virtuais da mesma forma como ele trata um dispositivo fsico. Na verdade, ele cria um
celular com um determinado hardware e software do sistema Android. Quando voc roda o
seu jogo, ele executa todo o sistema operacional Android em uma janela que representa o
dispositivo virtual criado. Ele, basicamente, emula um celular no seu computador. Para
criar um dispositivo virtual, clique no boto Android Virtual Device Manager, mostrado na
Ilustrao 1.

Ilustrao 1- Gerenciador de dispositivos


Quando voc clica nesse boto, ele abre a janela mostrada na Ilustrao 2. Nessa janela
so listados todos os dispositivos virtuais criados para voc testar o seu game. Se j tiver
cadastrado algum dispositivo, apague e crie um novo clicando em New.... O interessante
de criar dispositivos virtuais que voc poder, por exemplo, criar trs dispositivos
diferentes com tamanhos de tela diferentes. Voc conseguir ver como fica o seu jogo
rodando em celulares com diferentes tamanhos de tela.

Ilustrao 2- Janela de dispositivos virtuais

Logo depois de voc clicar em New... a janela de criao de um novo dispositivo virtual
aberta. Essa janela mostrada na Ilustrao 3. Em ADV Name voc nomeia o dispositivo
virtual como voc desejar. Eu nomeei como DispositivoVirtual. Em Device, voc escolhe
um dispositivo padro certificado pelo Google. Eu escolhi um que tem a tela pequena
(320x480). Em Target voc coloca no mnimo a verso de API que a sua aplicao est
sendo desenvolvida. Ns colocamos Android 2.2, lembra? Eu coloquei uma memria flash
no carto SD de 256 MB. A nossa aplicao independe disso, mas eu coloquei mesmo
assim. Hehe.

Ilustrao 3- Criando um novo dispositivo virtual

Quando voc clica em OK, o novo dispositivo adicionado na lista de dispositivos


virtuais. Agora voc pode fechar a janela de dispositivos virtuais e executar a aplicao,
assim como fizemos para rodar o jogo no tutorial anterior. Se voc configurou a execuo
do jogo tudo certinho no tutorial anterior, ento voc poder rodar o jogo simplesmente
clicando no boto Run. A Ilustrao 4 mostra esse boto.

Ilustrao 4- Boto para execuo do jogo


Clicando nesse boto, a janela da Ilustrao 5 aberta. Primeiramente, voc clica em
Launch a new Android Virtual Device mostrando que voc executar o seu jogo em um
dispositivo virtual. Logo aps, selecione o dispositivo virtual que voc criou, nesse caso eu
selecionei DispositivoVirtual. Logo aps, voc pode clicar em OK para iniciar o
emulador. A Ilustrao 5 mostra a sequncia de cliques.
Quando voc clica em OK, o computador comea a inicializar o dispositivo virtual e todo
o sistema operacional Android dentro do dispositivo. Como ele inicia todo um sistema
operacional, vai demorar um pouco at aparecer o seu jogo na tela. Apenas espere e veja
o resultado. ;D

Ilustrao 5- Janela de execuo do jogo


A Ilustrao 6 mostra a inicializao do sistema operacional Android e a Ilustrao 7
mostra o jogo sendo executado logo aps a inicializao.

Ilustrao 6- Inicializao do sistema Android

Ilustrao 7- Execuo do jogo no emulador


Quando voc for rodar o seu aplicativo mais de uma vez, voc pode deixar o emulador
aberto e apenas fechar o jogo dentro do emulador. Ao rodar o jogo novamente pelo
Eclipse, aparecer um dispositivo na janela (Ilustrao 5) onde voc escolhe o dispositivo
para rodar o jogo. s escolher o dispositivo virtual e voc evita ter que inicializar todo o
sistema operacional do Android novamente.
Pronto voc que no tem tablet ou celular Android agora pode rodar o seu jogo no seu
PC. Se vocs forem curiosos e fuarem no emulador, vocs vero que ele praticamente
um celular dentro do computador. Voc pode instalar e remover aplicativos, realizar
ligaes (virtuais e no reais, obviamente), enviar e receber mensagens SMS e fazer
qualquer outra coisa. Yeeessss ...

Nesse tutorial ns vimos como executar um aplicativo Android no emulador que vem com o
SDK Android. No prximo tutorial veremos o que significa cada linha de cdigo que
escrevemos ao programar o jogo Jokenp do Desenvolvimento de jogos para Android
Parte 2.

J configuramos um monte de coisas, programamos o jogo Jokenp e mostramos para os


outros que somos programadores Android, mas e se nos perguntarem como
programamos? Vamos entender o que significam aqueles cdigos que fizemos?
Relembrando o que fizemos at agora, no Desenvolvimento de jogos para Android - Parte
2 ns programamos o jogo Jokenp. No Desenvolvimento de jogos para Android - Parte
3 eu mostrei como executar o jogo no emulador que vem com o SDK Android. Nesse
tutorial ns vamos aprender o que significa cada linha de cdigo e a lgica usada no
Jokenp.

Projeto Android e pastas editadas:

Antes de sabermos o que tem no cdigo do Jokenp, eu


mostrarei as pastas que mexemos e a funo delas em um projeto Android. As pastas

editadas foram src, res, drawable, layout e values, como mostrado na figura ao
lado. Segue uma explicao breve sobre a funo de cada uma delas no projeto Android.

src: contm todos os arquivos de cdigo fonte do aplicativo. Arquivos de cdigo


fonte, para quem no sabe, so os arquivos que contm cdigos em uma
linguagem de programao e que ditam toda a lgica do aplicativo. Esses arquivos
so escritos na linguagemJava;

res: contm todos os arquivos de recursos do aplicativo. Esses podem ser


arquivos de layout (disposio dos elementos na tela), arquivos de imagem, vdeo
e de efeitos sonoros;

drawable: contm arquivos de imagem e arquivos descritores de objetos que


mudam seu design visual (boto clicado e no clicado, por exemplo);

layout: contm arquivos XML que descrevem a disposio dos elementos nas
diferentes telas do aplicativo;

values: contm arquivos que definem constantes com valores pr-definidos pelo
programador.

Existem outras pastas importantes que no mexemos no jogo do Jokenp. Se voc quiser
saber mais sobre cada uma dessas pastas, d uma olhada aqui. No vamos nos
desconcentrar do objetivo do tutorial. =]

Arquivos editados e funo de cada um:


Os arquivos editados foram trs no total: JokenpoActivity.java, activity_jokenpo.xml e
strings.xml. Se voc no lembra onde eles esto, d uma olhada na figura acima. Vou
explicar de forma sucinta a funo de cada um deles. A ordem de explicao foi mudada
para vocs entenderem melhor o funcionamento do jogo.

strings.xml:
um arquivo que especifica os valores das constantes textuais que sero utilizadas no
cdigo. O nome do aplicativo e textos que fazem parte dos objetos da tela esto

especificados em cadeias de caracteres declaradas nesse arquivo. O que continha no


arquivo era:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Jokenpo</string>
<string name="action_settings">Settings</string>
<string name="opcoes">Escolha uma opo</string>
<string name="ultimaJogada">ltima Jogada</string>
<string name="jogadaPlayer">Voc</string>
<string name="resultado">Resultado</string>
<string name="jogadaPC">Computador</string>
</resources>

Na primeira linha,
apenas especificada qual verso do XML que o cdigo est escrito, conforme a W3C, e
em qual tipo de codificao o arquivo ser lido. Isso meio que padro, a no ser que
voc queira mudar a codificao. Eu recomendo no mudar, seno caracteres especiais
como '' e '' sero apresentados de forma errada na tela.

Cada linha que inicia com a tag string uma declarao de constante. Os nomes das
constantes esto entre aspas duplas e os valores delas esto entre a tag de abertura
(<tag>) e a tag de fechamento (</tag>).
No Jokenp, foram criadas as constantes app_name, action_settings, opcoes,
ultimaJogada, jogadaPlayer, resultado e jogadaPC. Essas constantes sero
utilizadas no arquivo activity_jokenpo.xml, quando criarmos a tela do jogo, e durante a
programao da lgica, no arquivo JokenpoActivity.java.

activity_jokenpo.xml:
um arquivo de layout, ou seja, especifica a disposio dos objetos grficos na tela do
celular ou tablet. Toda a tela do aplicativo tem um arquivo XML que descreve a posio e
formato dos objetos. possvel voc criar, limitar as bordas e posicionar cada objeto
diretamente no cdigo Java, porm esse um trabalho cansativo e desnecessrio. A
edio de um objeto feita no cdigo Java como, por exemplo, a incluso de uma opo
em um box, aps o usurio clicar em um boto da tela. Como no jogo teve somente uma
tela, ento existe somente esse arquivo na pasta layout. No arquivo tinha:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andr
oid"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".JokenpoActivity" >

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/button2"
android:layout_centerHorizontal="true"
android:text="@string/opcoes"
android:textSize="30sp" />

<Button
android:id="@+id/button1"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_above="@+id/textView2"
android:layout_toLeftOf="@+id/button2"
android:background="@drawable/pedra" />

<Button
android:id="@+id/button2"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_above="@+id/textView2"

android:layout_centerHorizontal="true"
android:background="@drawable/papel" />

<Button
android:id="@+id/button3"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_above="@+id/textView2"
android:layout_toRightOf="@+id/button2"
android:background="@drawable/tesoura" />

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/ultimaJogada"
android:textSize="30sp" />

<TextView
android:id="@+id/textView3"

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_toLeftOf="@+id/imageView2"
android:text="@string/jogadaPlayer" />

<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true"
android:text="@string/resultado" />

<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_toRightOf="@+id/imageView2"
android:text="@string/jogadaPC" />

<ImageView
android:id="@+id/imageView1"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_below="@+id/textView4"
android:layout_toLeftOf="@+id/imageView2" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_below="@+id/textView4"
android:layout_centerHorizontal="true" />

<ImageView
android:id="@+id/imageView3"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_below="@+id/textView4"
android:layout_toRightOf="@+id/imageView2" />
</RelativeLayout>

Nesse cdigo, so especificados vrios objetos que fazem parte de um layout, que
especificado na tag RelativeLayout. Ele nos d a liberdade de incluir os objetos onde
bem entendemos, desde que seja especificada a posio dele na tela. Alguns atributos
interessantes dessa tag so android:layout_width e android:layout_height que
especificam o tamanho do layout. Nesse caso, ambos foram atribudos com
match_parent, que deixa claro que estamos lidando com toda a rea da tela do aparelho.
A tag Button informa que foi adicionado um boto na tela, a tag TextView uma etiqueta
textual e a tag ImageView uma simples imagem. Dessa forma, adicionamos um total de
trs botes, cinco etiquetas de texto e trs imagens.
Quanto aos atributos, muitos se repetem entre os objetos. Vou explicar cada um deles:

"android:id": um nome que o programador d para que esse objeto possa ser
referenciado nos arquivos Java;

"android:layout_width" e android:layout_height: especificam a largura e a


altura do objeto, respectivamente;

android:centerHorizontal e android:centerVertical: especificam se o objeto


est centralizado horizontalmente e verticalmente na tela, respectivamente;

android:text: especifica o texto que ser mostrado ao usurio. Nesse


caso, todos fazem referncia a uma constante criada no arquivo strings.xml;

android:textSize: especifica o tamanho da fonte do texto;

android:above e android:below: especificam se o objeto est acima ou


abaixo de outro objeto, respectivamente;

android:toLeftOf e android:toRightOf: especificam se o objeto est


esquerda ou direita de outro objeto, respectivamente;

android:background: especifica a imagem de fundo que vai em um objeto.


Essa imagem precisa estar localizada na pasta drawable.

Se voc for olhar bem, ver que existe uma etiqueta (TextView) central na tela (com id
igual a textView2) e todos os outros objetos so inseridos baseando-se na posio dessa
etiqueta. Tomando como base o significado de cada tag e atributo, no difcil entender
como eu modelei a tela do jogo. =]

JokenpoActivity.java:
um arquivo de cdigo fonte, ou seja, ali est toda a lgica do jogo implementada na
linguagem Java. Todo arquivo de cdigo fonte Java precisa ter a extenso .java e precisa
estar localizado em uma subpasta da pasta src. No caso desse jogo, foi necessrio
somente um arquivo de lgica. Esse arquivo tinha:
package com.santy.jokenpo;

import java.util.Random;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class JokenpoActivity extends Activity {


private Random numeroAleatorio;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_jokenpo);
numeroAleatorio = new Random();
Button pedra = (Button)findViewById(R.id.button1);

pedra.setOnClickListener(new OnClickListener() {
public void onClick(View v) {

findViewById(R.id.imageView1).setBackgroundResource(R.drawable.pedra
);

realizaJogadaPC(1);
}
});
Button papel = (Button)findViewById(R.id.button2);
papel.setOnClickListener(new OnClickListener() {
public void onClick(View v) {

findViewById(R.id.imageView1).setBackgroundResource(R.drawable.papel
);

realizaJogadaPC(2);
}
});
Button tesoura = (Button)findViewById(R.id.button3);
tesoura.setOnClickListener(new OnClickListener() {
public void onClick(View v) {

findViewById(R.id.imageView1).setBackgroundResource(R.drawable.tesou
ra);

realizaJogadaPC(3);

}
});
}

public void realizaJogadaPC(int jogadaPlayer) {


int jogadaPC;
jogadaPC = numeroAleatorio.nextInt(3) + 1;
if(jogadaPC==1) {

findViewById(R.id.imageView3).setBackgroundResource(R.drawable.pedra
);
if(jogadaPlayer==1)

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.empat
ou);
else if(jogadaPlayer==2)

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.vence
u);

else

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.perde
u);

}
else if(jogadaPC==2) {

findViewById(R.id.imageView3).setBackgroundResource(R.drawable.papel
);
if(jogadaPlayer==1)

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.perde
u);
else if(jogadaPlayer==2)

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.empat
ou);

else

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.vence
u);

}
else if(jogadaPC==3) {

findViewById(R.id.imageView3).setBackgroundResource(R.drawable.tesou
ra);
if(jogadaPlayer==1)

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.vence
u);
else if(jogadaPlayer==2)

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.perde
u);

else

findViewById(R.id.imageView2).setBackgroundResource(R.drawable.empat
ou);

}
}

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the


action bar if it is present.
getMenuInflater().inflate(R.menu.jokenpo, menu);
return true;
}
}

Nas primeiras linhas, que iniciam com a


palavra import, so inclusas algumas bibliotecas que especificam as funes dos objetos
que so utilizados no cdigo. No vou explicar hoje sobre linguagem Java, mas saibam
que esse um requisito para quem quer programar Android. Talvez eu faa tutoriais sobre
linguagem Java (o que vocs acham?).
Na linha onde tem public class, eu estou criando uma classe que descreve o
comportamento da aplicao. Nessa classe, existe um mtodo chamado onCreate, que
iniciado quando o usurio da aplicao clica no cone dela, l na tela principal do Android.

Na linha onde tem setContentView, ns falamos para a aplicao jogar na tela o layout
especificado no arquivo activity_jokenpo.xml. Fcil, no? ;D
As linhas que iniciam Button pedra, Button papel e Button tesoura eu especifiquei o
que acontece quando o usurio clica nos botes pedra, papel e tesoura, respectivamente.
Vocs podem ver que so bem parecidas as linhas de cdigo entre eles. Onde tem
findViewById, eu pego a referncia dos botes que especificamos no arquivo
activity_jokenpo.xml. Depois de eu selecionar o boto que eu escolhi em
findViewById, eu programo a funcionalidade dele. A funcionalidade desses trs botes
so similares: adicionar na tela a imagem da opo que o usurio fez na jogada e iniciar o
mtodo (subrotina) realizaJogadaPC.

O mtodo realizaJogadaPC recebe


como parmetro um valor inteiro (jogadaPlayer) que informa qual foi a opo que o
jogador escolheu: 1 caso for pedra, 2 caso for papel e 3 caso for tesoura. Inicialmente esse
mtodo realiza um sorteio entre trs nmeros: 1, 2 e 3. Logo aps ele verifica qual nmero
foi sorteado, coloca na tela a opo do computador (a que foi sorteada) e faz a verificao
entre a jogada do usurio e a do computador. Dependendo do resultado, ele mostra se o
jogador perdeu, se ganhou ou se houve empate.
Existem algumas linhas de cdigo que eu no expliquei porque eu achei
desnecessrio, alm de algumas que no valem a pena eu perder tempo explicando. Parte
dessas linhas so cdigo geradas pelo prprio Eclipse, quando voc cria uma aplicao e
parte eu adicionei, como o caso da varivel para nmeros aleatrios numeroAleatorio.
Mas, como vocs podem ver, a essncia do programa est explicada: se o jogador clicar
em pedra, o aplicativo mostra a escolha do jogador na tela, faz um sorteio para definir a
opo do computador, mostra a opo dele na tela e d o resultado final com base na
escolha do jogador e do computador.

Aqui terminamos mais um tutorial de desenvolvimento de jogos na plataforma Android.


Voc j parou para pensar em tudo o que voc aprendeu? Bastante coisa, n?
Nesse tutorial ns aprendemos como funciona o ncleo do jogo Jokenp que
programamos no segundo tutorial. No prximo, saberemos como incluir efeitos sonoros
nos nossos jogos. ;D

A incluso de efeitos sonoros e msicas de fundo so importantssimas no


desenvolvimento de jogos eletrnicos. Muitos jogos so reconhecidos pelas suas msicas
de fundo. Posso dar os exemplos de uma das msicas da trilha do The Legend of Zelda e
do efeito sonoro de vitria da srie Final Fantasy. Vamos incluir agora mesmo os efeitos
sonoros no Jokenp. *_*
No tutorial anterior ns vimos como a lgica do Jokenp foi programada na
linguagem Java. Vimos tambm como a tela principal do jogo foi modelada em um arquivo
XML. Nesse tutorial eu vou mostrar para vocs como fcil incluir efeitos sonoros e
msicas de fundo no seu jogo que executa na plataforma Android. Vamos l?

Classe MediaPlayer:

Ent
o pessoal, iniciando o tutorial, eu vou falar sobre um dos pontos positivos da linguagem
Java e da maioria das linguagens orientadas a objetos. Se voc precisa programar algo
que padro em vrios aplicativos, pode ter certeza que j existe isso implementado para
voc. No nosso caso, usaremos uma classe que l e toca vrios tipos de arquivos de som
no Android. Apresento a vocs a classe MediaPlayer.

Figura 1 - Diagrama de Estados da classe MediaPlayer


A Figura 1 mostra o diagrama de estados da classe MediaPlayer. Ali vocs vero que uma
msica pode estar no estado iniciada (Started) e pode passar para o estado reproduo
concluda (PlaybackCompleted), por exemplo. Nesse tutorial ns no aplicaremos cada
um desses estados, mas saibam que vocs podem pausar a msica (quando o telefone
toca, por exemplo) chamando o mtodo pause enquanto a msica est sendo tocada
(Started).

A classe MediaPlayer suporta vrios tipos de arquivos


de udio, entre eles podemos listar os arquivos MP3, WAVE, MIDI, AAC e mais alguns
(veja toda a lista aqui). O que vocs acham de colocarmos esse aprendizado em
prtica? \o

Tocando os efeitos no Jokenp:


Primeiramente, precisamos adicionar no projeto do Android uma pasta chamada raw.
Para isso, clique com o boto direito do mouse na pasta res, selecione New e clique em
Folder. D o nome da pasta a ser criada de raw e clique em Finish. Aps isso ser
criada uma nova pasta chamada raw dentro da pasta res. A Figura 2 mostra certinho o
procedimento.

Figura 2 - Criando a pasta "raw"

Aps ter sido criada a pasta raw, adicione nela os


arquivos MP3 compactados nesse arquivo que eu disponibilizei para vocs testarem.
Asmsicas contidas aqui so livres para serem usadas em qualquer jogo. Eu tirei essas
msicas desse site. Quando vocs forem fazer o jogo de vocs com outras msicas,
atentem aos direitos autorais delas. Para adicionar essas msicas em raw, basta arrastar
os arquivos MP3 para a pasta raw dentro do prprio Eclipse.
Aps isso, atualize o projeto com esses arquivos adicionados. Para isso abra o menu
superior Project e clique em Clean .... Na janela que abrir, selecione a opo Clean all
projects e clique em OK. A Figura 3 mostra a explicao dada em sequncia de cliques.

Figura 3 - Atualizando o projeto Android


Agora basta abrir os arquivos MP3 e toc-los quando quisermos. Coloquei dois arquivos
de efeito sonoro: um toca quando o jogador ganha do PC e o outro toca quando o jogador
perde. Estamos no momento de voltar a mexer nos cdigos Java.

Abra o arquivo JokenpoActivity.java dentro da pasta src. Sero adicionadas nesse


arquivo as seguintes linhas de cdigo.
MediaPlayer m = MediaPlayer.create(this,R.raw.win);
m.start();
Na primeira linha estamos abrindo um arquivo MP3 contido na pasta raw e na segunda
estamos dando o play no arquivo aberto.
Como queremos tocar o mesmo som sempre quando o jogador ganha, ento, em todo o
cdigo, onde estiver a linha:
findViewById(R.id.imageView2).setBackgroundResource(R.drawable.venc
eu);
adicione, logo abaixo, as linhas:
MediaPlayer m = MediaPlayer.create(this,R.raw.win);
m.start();
Como essas linhas sempre sero adicionadas dentro de uma estrutura de seleo (if),
ento ser necessrio que voc inclua chaves antes e depois delas. Ficar exatamente
dessa forma:
{
findViewById(R.id.imageView2).setBackgroundResource(R.drawable.venc
eu);
MediaPlayer m = MediaPlayer.create(this,R.raw.win);
m.start();
}
Para que seja tocado um efeito sonoro tambm quando o jogador perde, em todo o cdigo,
adicione as linhas:
MediaPlayer m = MediaPlayer.create(this,R.raw.lose);
m.start();

logo abaixo da linha:


findViewById(R.id.imageView2).setBackgroundResource(R.drawable.perd
eu);
Atente-se ao fato de que essas linhas tambm precisam estar dentro de um mesmo bloco
limitado por chaves, ficando:
{
findViewById(R.id.imageView2).setBackgroundResource(R.drawable.perd
eu);
MediaPlayer m = MediaPlayer.create(this,R.raw.lose);
m.start();
}
Aps voc adicionar essas linhas, o jogo est pronto para ser executado.
Percebeu os sons que tocam quando voc ganha e quando voc perde? =]
Vale lembrar que no adicionamos os efeitos sonoros que tocam quando o jogador
empata. Mas acho que vocs esto aptos para incluir esse efeito a partir de agora. ;D
Caso, no seu jogo, voc precise pausar ou continuar uma msica de fundo, por exemplo,
d uma olhada melhor nos mtodos da classe MediaPlayer e no diagrama que eu
apresentei na Figura 1.

Com isso, conclumos mais um tutorial de desenvolvimento de


jogos para plataforma Android. Aprendemos como incluir efeitos sonoros e msicas de
fundo em um jogo. Noprximo tutorial eu iniciarei o desenvolvimento de jogos com a
utilizao de um motor grfico muito bom: o Cocos2d-X.