SlideShare a Scribd company logo
Criando meu 1º game com
Android
by Daniel Baccin
DESAFIO: Palestrar sobre jogos!
DESAFIO: Palestrar sobre jogos!
Felipe Torres
DESAFIO: Palestrar sobre jogos!
CHALLENGE ACCEPTED
IMAGE: MASHABLE, WILL FENSTERMAKER
IMAGE: MASHABLE, WILL FENSTERMAKER
Criando meu 1º game com android
Criando meu 1º game com android
Criando meu 1º game com android
Criando meu 1º game com android
Criando meu 1º game com android
Criando meu 1º game com android
Criando meu 1º game com android
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.
com/apk/res/android"
package="br.com.kenuiapps.jumper" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
…
</application>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.
com/apk/res/android"
package="br.com.kenuiapps.jumper" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
…
</application>
AndroidManifest.xml
Criando meu 1º game com android
Criando meu 1º game com android
Criando meu 1º game com android
<application
…
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
…
</application>
AndroidManifest.xml
<application
…
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
…
</application>
AndroidManifest.xml
<ListView/>
<TextView/><ImageView/>
<SurfaceView/>
<ListView/>
<TextView/><ImageView/>
<SurfaceView/>
public class Game extends SurfaceView{
/*
* Aqui implemetamos a mecânica do jogo
*/
}
public class MainActivity extends Activity {
Game game;
@Override
protected void onCreate(Bundle savedInstanceState) {
…
setContentView(R.layout.activity_main);
FrameLayout container = (FrameLayout) findViewById(R.id.container);
game = new Game(this);
container.addView(game);
}
public class MainActivity extends Activity {
Game game;
@Override
protected void onCreate(Bundle savedInstanceState) {
…
setContentView(R.layout.activity_main);
FrameLayout container = (FrameLayout) findViewById(R.id.container);
game = new Game(this);
container.addView(game);
}
<FrameLayout xmlns:android="http://schemas.android.
com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container"/>
activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.
com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container"/>
activity_main.xml
public class MainActivity extends Activity {
Game game;
@Override
protected void onCreate(Bundle savedInstanceState) {
…
setContentView(R.layout.activity_main);
FrameLayout container = (FrameLayout) findViewById(R.id.container);
game = new Game(this);
container.addView(game);
}
Criando meu 1º game com android
Loop Principal
● Pontuação
● nº de vidas
● nível ● se bateu em algo
● inimigos
public class Game extends SurfaceView
implements Runnable {
/*
* Thread separada da principal !!!
*/
}
public class Game extends SurfaceView
implements Runnable {
...
@Override
public void run() {
while (isRunning){
...
}
}
@Override
public void run() {
while (isRunning){
/*
* desenhar os componentes
*/
}
}
@Override
public void run() {
while (isRunning){
Canvas canvas = holder.lockCanvas();
/*
* desenhar os componentes
*/
holder.unlockCanvasAndPost(canvas);
}
}
Canvas
Canvas
Background
PássaroCanos
PontuaçãoGame over
Background
PássaroCanos
PontuaçãoGame over
private Bitmap background;
public Game(Context mainActivity) {
super(mainActivity);
tela = new Tela(mainActivity);
Bitmap back = BitmapFactory.decodeResource(
getResources(),
R.drawable.background);
background = Bitmap.createScaledBitmap(
back,
tela.getLargura(),
tela.getAltura(),
false);
}
private Bitmap background;
public Game(Context mainActivity) {
super(mainActivity);
tela = new Tela(mainActivity);
Bitmap back = BitmapFactory.decodeResource(
getResources(),
R.drawable.background);
background = Bitmap.createScaledBitmap(
back,
tela.getLargura(),
tela.getAltura(),
false);
}
private Bitmap background;
public Game(Context mainActivity) {
super(mainActivity);
tela = new Tela(mainActivity);
Bitmap back = BitmapFactory.decodeResource(
getResources(),
R.drawable.background);
background = Bitmap.createScaledBitmap(
back,
tela.getLargura(),
tela.getAltura(),
false);
}
private Bitmap background;
public Game(Context mainActivity) {
super(mainActivity);
tela = new Tela(mainActivity);
Bitmap back = BitmapFactory.decodeResource(
getResources(),
R.drawable.background);
background = Bitmap.createScaledBitmap(
back,
tela.getLargura(),
tela.getAltura(),
false);
}
private Bitmap background;
public Game(Context mainActivity) {
super(mainActivity);
tela = new Tela(mainActivity);
Bitmap back = BitmapFactory.decodeResource(
getResources(),
R.drawable.background);
background = Bitmap.createScaledBitmap(
back,
tela.getLargura(),
tela.getAltura(),
false);
}
private Bitmap background;
public Game(Context mainActivity) {
super(mainActivity);
tela = new Tela(mainActivity);
Bitmap back = BitmapFactory.decodeResource(
getResources(),
R.drawable.background);
background = Bitmap.createScaledBitmap(
back,
tela.getLargura(),
tela.getAltura(),
false);
}
public class Tela {
private final DisplayMetrics metrics;
public Tela(Context context) {
WindowManager windowsManage =
(WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display defaultDisplay = windowsManage.getDefaultDisplay();
metrics = new DisplayMetrics();
defaultDisplay.getMetrics(metrics);
}
public int getAltura(){
return metrics.heightPixels;
}
public int getLargura() {
return metrics.widthPixels;
}
}
public class Tela {
private final DisplayMetrics metrics;
public Tela(Context context) {
WindowManager windowsManage =
(WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display defaultDisplay = windowsManage.getDefaultDisplay();
metrics = new DisplayMetrics();
defaultDisplay.getMetrics(metrics);
}
public int getAltura(){
return metrics.heightPixels;
}
public int getLargura() {
return metrics.widthPixels;
}
}
public class Tela {
private final DisplayMetrics metrics;
public Tela(Context context) {
WindowManager windowsManage =
(WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display defaultDisplay = windowsManage.getDefaultDisplay();
metrics = new DisplayMetrics();
defaultDisplay.getMetrics(metrics);
}
public int getAltura(){
return metrics.heightPixels;
}
public int getLargura() {
return metrics.widthPixels;
}
}
public class Tela {
private final DisplayMetrics metrics;
public Tela(Context context) {
WindowManager windowsManage =
(WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display defaultDisplay = windowsManage.getDefaultDisplay();
metrics = new DisplayMetrics();
defaultDisplay.getMetrics(metrics);
}
public int getAltura(){
return metrics.heightPixels;
}
public int getLargura() {
return metrics.widthPixels;
}
}
Criando meu 1º game com android
@Override
public void run() {
while (isRunning){
Canvas canvas = holder.lockCanvas();
canvas.drawBitmap(background, 0, 0, null);
holder.unlockCanvasAndPost(canvas);
}
}
Criando meu 1º game com android
Background
PássaroCanos
PontuaçãoGame over
@Override
public void run() {
while (isRunning){
Canvas canvas = holder.lockCanvas();
canvas.drawBitmap(background, 0, 0, null);
passaro.desenhaNo(canvas);
holder.unlockCanvasAndPost(canvas);
}
}
public class Passaro {
public void desenhaNo(Canvas canvas){
canvas.drawCircle(x, y, RAIO, COR);
}
}
public class Passaro {
public void desenhaNo(Canvas canvas){
canvas.drawCircle(x, y, RAIO, COR);
}
}
X
Y
(0,0)
Background
Pássaro
-cai()
Canos
PontuaçãoGame over
@Override
public void run() {
while (isRunning){
Canvas canvas = holder.lockCanvas();
canvas.drawBitmap(background, 0, 0, null);
passaro.desenhaNo(canvas);
passaro.cai();
holder.unlockCanvasAndPost(canvas);
}
X
Y
(0,0)
public class Passaro {
...
public void cai() {
y += 5;
}
}
Criando meu 1º game com android
Background
Pássaro
-cai()
-pula()
Canos
PontuaçãoGame over
public class Game extends SurfaceView
implements Runnable, OnTouchListener
{
/*
* Agora podemos capturar toques na tela
*/
}
public class Game extends SurfaceView implements
Runnable, OnTouchListener
{
...
@Override
public boolean onTouch(View v, MotionEvent event) {
passaro.pula();
return false;
}
...
}
public class Game extends SurfaceView implements
Runnable, OnTouchListener
{
...
@Override
public boolean onTouch(View v, MotionEvent event) {
passaro.pula();
return false;
}
...
}
public class Passaro {
...
public void pula() {
y -= 150;
}
}
Criando meu 1º game com android
Background
Pássaro
-cai()
-pula()
Canos
PontuaçãoGame over
@Override
public void run() {
while (isRunnig){
Canvas canvas = holder.lockCanvas();
canvas.drawBitmap(background, 0, 0, null);
passaro.desenhaNo(canvas);
passaro.cai();
canos.desenhaNo(canvas);
holder.unlockCanvasAndPost(canvas);
public class Cano {
public void desenhaNo(Canvas canvas){
canvas.drawRect(x1, y1, x2, y2, COR);
}
}
public class Cano {
public void desenhaNo(Canvas canvas){
canvas.drawRect(x1, y1, x2, y2, COR);
}
}
(x1, y1)
public class Cano {
public void desenhaNo(Canvas canvas){
canvas.drawRect(x1, y1, x2, y2, COR);
}
}
(x1, y1)
(x2, y2)
public class Cano {
public void desenhaNo(Canvas canvas){
canvas.drawRect(x1, y1, x2, y2, COR);
}
}
(x1, y1)
(x2, y2)
Background
Pássaro
-cai()
-pula()
Canos
-move()
PontuaçãoGame over
@Override
public void run() {
while (isRunnig){
Canvas canvas = holder.lockCanvas();
canvas.drawBitmap(background, 0, 0, null);
passaro.desenhaNo(canvas);
passaro.cai();
canos.desenhaNo(canvas);
canos.move();
holder.unlockCanvasAndPost(canvas);
}
}
public class Cano {
...
public void move(){
posicao -= 5;
}
}
Criando meu 1º game com android
Background
Pássaro
-cai()
-pula()
Canos
-move()
Pontuação
Game over
Background
Pássaro
-cai()
-pula()
Canos
-move()
Pontuação
-aumenta()
Game over
Criando meu 1º game com android
Criando meu 1º game com android
Criando meu 1º game com android
pontuacao.aumenta();
public class Pontuacao {
private int pontos = 0;
public void aumenta() {
pontos++;
}
...
}
public class Pontuacao {
private int pontos = 0;
public void aumenta() {
pontos++;
}
...
}
@Override
public void run() {
while (isRunnig){
Canvas canvas = holder.lockCanvas();
...
pontuacao.desenhaNo(canvas);
...
holder.unlockCanvasAndPost(canvas);
}
}
public class Pontuacao {
…
public void desenhaNo(Canvas canvas) {
canvas.drawText(String.valueOf(pontos), 100, 100, BRANCO);
}
}
Criando meu 1º game com android
Background
Pássaro
-cai()
-pula()
Canos
-move()
Pontuação
-aumenta()
Game over
Background
Pássaro
-cai()
-pula()
Canos
-move()
Pontuação
-aumenta()
Game over
-temColisao()
temColisao()
Criando meu 1º game com android
temColisao()
temColisao! horizontal!
temColisao! vertical!
Se distância do centro do circulo até o
retangulo
for Igual ao Raio
Se distância do centro do circulo até o
retangulo
for menor que o Raio
public class VerificadorDeColisao {
private Passaro passaro;
private List<Cano> canos;
...
}
public boolean temColisao() {
for (Cano cano: canos){
if(cano.temColisaoHorizontal(passaro)
|| cano.temColisaoVertical(passaro)){
return true;
}
}
return false;
}
@Override
public void run() {
while (isRunning){
Canvas canvas = holder.lockCanvas();
...
if(verificadorDeColisao.temColisao()){
gameOver.desenhaNo(canvas);
isRunning = false;
}
holder.unlockCanvasAndPost(canvas);
}
}
@Override
public void run() {
while (isRunning){
Canvas canvas = holder.lockCanvas();
...
if(verificadorDeColisao.temColisao()){
gameOver.desenhaNo(canvas);
isRunning = false;
}
holder.unlockCanvasAndPost(canvas);
}
}
Criando meu 1º game com android
Background
Pássaro
-cai()
-pula()
Canos
-move()
Pontuação
-aumenta()
Game over
-temColisao()
Sprites
Sprites
public class Passaro {
public void desenhaNo(Canvas canvas){
canvas.drawCircle(x, y, RAIO, COR);
}
}
public class Passaro {
public void desenhaNo(Canvas canvas){
Bitmap bp = BitmapFactory.decodeResource(context.getResources(), R.drawable.passaro);
passaro = bp.createScaledBitmap(bp, RAIO, false);
canvas.drawBitmap(passaro, RAIO, altura, null);
}
}
public class Passaro {
public void desenhaNo(Canvas canvas){
Bitmap bp = BitmapFactory.decodeResource(context.getResources(), R.drawable.passaro);
passaro = bp.createScaledBitmap(bp, RAIO, false);
canvas.drawBitmap(passaro, RAIO, altura, null);
}
}
public class Cano {
public void desenhaNo(Canvas canvas){
Bitmap bp = BitmapFactory.decodeResource(context.getResources(), R.drawable.cano);
cano = Bitmap.createScaledBitmap(bp, LARGURA, alturaDoCano, false);
canvas.drawBitmap(cano, posicao, alturaDoCano, null);
}
}
public class Cano {
public void desenhaNo(Canvas canvas){
Bitmap bp = BitmapFactory.decodeResource(context.getResources(), R.drawable.cano);
cano = Bitmap.createScaledBitmap(bp, LARGURA, alturaDoCano, false);
canvas.drawBitmap(cano, posicao, alturaDoCano, null);
}
}
Criando meu 1º game com android
public class Passaro {
public void desenhaNo(Canvas canvas){
Bitmap bp = BitmapFactory.decodeResource(context.getResources(), R.drawable.joao);
passaro = bp.createScaledBitmap(bp, RAIO, false);
canvas.drawBitmap(passaro, RAIO, altura, null);
}
}
Criando meu 1º game com android
Criando meu 1º game com android
Criando meu 1º game com android
Criando meu 1º game com android
Criando meu 1º game com android
Referências
● http://www.casadocodigo.com.br/products/livro-games-android
● http://gamedev.stackexchange.com/questions/89/2d-gaming-libraries-
frameworks-engines-for-android
● http://www.tecmundo.com.br/video-game-e-jogos/79428-mercado-games-
mobile-bater-us-45-bi-2018-ultrapassar-consoles.htm
● http://mashable.com/2014/03/20/flappy-bird-launch-again/#jEraRnXf4qqQ
Oportunidades
rh@casamagalhaes.com.br
https://github.com/danielbaccin/jumper
http://pt.slideshare.net/baccin
daniel.baccin@gmail.com

More Related Content

PDF
Phonegap for Android
PDF
Android Wear Essentials
PDF
Create Splash Screen with Java Step by Step
PDF
Creating custom views
PDF
The 2016 Android Developer Toolbox [MOBILIZATION]
PDF
The 2016 Android Developer Toolbox [NANTES]
PDF
2010 bb dev con
PDF
W-JAX 09 - Lift
Phonegap for Android
Android Wear Essentials
Create Splash Screen with Java Step by Step
Creating custom views
The 2016 Android Developer Toolbox [MOBILIZATION]
The 2016 Android Developer Toolbox [NANTES]
2010 bb dev con
W-JAX 09 - Lift

What's hot (7)

DOCX
Fractal proj report 2
PPTX
Crush Candy with DukeScript
KEY
Introduction to Game Programming Tutorial
PDF
mobl
PDF
Scala Under the Hood / ScalaSwarm
PDF
Top 10 php classic traps confoo
PDF
Dirty Durham: Dry cleaning solvents leaked into part of Trinity Park | News
Fractal proj report 2
Crush Candy with DukeScript
Introduction to Game Programming Tutorial
mobl
Scala Under the Hood / ScalaSwarm
Top 10 php classic traps confoo
Dirty Durham: Dry cleaning solvents leaked into part of Trinity Park | News
Ad

Viewers also liked (20)

PDF
Al7 ma19tepa0009 sequence-03
PPT
Développement des jeux vidéo Mobile
PDF
Android game development
PPTX
Build your first android mobile app
PPTX
L'univers Android
PPTX
Android 1
PPTX
Coder des jeux en 2D ou 3D sur mobile Android, IPhone ou iPad
PPTX
Before starting android game development
PDF
Produit scalaire sur un R-ev
PDF
S4 cours chap2 - produit scalaire-orthogonalité
PDF
Introduction to android (and mobile) game development
PPTX
Android Studio, premier contact
PPT
Initiation Android Niveau Débutant
PPTX
Android game development
PPSX
A. Attou Commande scalaire MAS
PDF
Android studio 2.0
PPTX
Creating the first app with android studio
PDF
In01 - Programmation Android - 07 - techniques avancées
PDF
Android studio
ZIP
Android Application Development
Al7 ma19tepa0009 sequence-03
Développement des jeux vidéo Mobile
Android game development
Build your first android mobile app
L'univers Android
Android 1
Coder des jeux en 2D ou 3D sur mobile Android, IPhone ou iPad
Before starting android game development
Produit scalaire sur un R-ev
S4 cours chap2 - produit scalaire-orthogonalité
Introduction to android (and mobile) game development
Android Studio, premier contact
Initiation Android Niveau Débutant
Android game development
A. Attou Commande scalaire MAS
Android studio 2.0
Creating the first app with android studio
In01 - Programmation Android - 07 - techniques avancées
Android studio
Android Application Development
Ad

Similar to Criando meu 1º game com android (11)

PDF
Developing games for Series 40 full-touch UI
PPTX
Beginning android games
PDF
Building Android games using LibGDX
PDF
Intro to Building Android Games using libGDX
PDF
Getting Started with 3D Game Development on Nokia Series 40 Asha Phones
PDF
Creating Games for Asha - platform
PDF
Implementing a Simple Game using libGDX
PDF
Introduction to 2D Game Development on Nokia Series 40 Asha Phones
PDF
Tools for developing Android Games
PPTX
Game Development for Nokia Asha Devices with Java ME #2
PPTX
Criando jogos para o windows 8
Developing games for Series 40 full-touch UI
Beginning android games
Building Android games using LibGDX
Intro to Building Android Games using libGDX
Getting Started with 3D Game Development on Nokia Series 40 Asha Phones
Creating Games for Asha - platform
Implementing a Simple Game using libGDX
Introduction to 2D Game Development on Nokia Series 40 Asha Phones
Tools for developing Android Games
Game Development for Nokia Asha Devices with Java ME #2
Criando jogos para o windows 8

Recently uploaded (6)

DOC
证书学历UoA毕业证,澳大利亚中汇学院毕业证国外大学毕业证
PDF
6-UseCfgfhgfhgfhgfhgfhfhhaseActivity.pdf
DOC
Camb毕业证学历认证,格罗斯泰斯特主教大学毕业证仿冒文凭毕业证
PDF
Lesson 13- HEREDITY _ pedSAWEREGFVCXZDSASEWFigree.pdf
PPTX
ASMS Telecommunication company Profile
PPTX
Introduction to Packet Tracer Course Overview - Aug 21 (1).pptx
证书学历UoA毕业证,澳大利亚中汇学院毕业证国外大学毕业证
6-UseCfgfhgfhgfhgfhgfhfhhaseActivity.pdf
Camb毕业证学历认证,格罗斯泰斯特主教大学毕业证仿冒文凭毕业证
Lesson 13- HEREDITY _ pedSAWEREGFVCXZDSASEWFigree.pdf
ASMS Telecommunication company Profile
Introduction to Packet Tracer Course Overview - Aug 21 (1).pptx

Criando meu 1º game com android