Minicurso: Android com Java - Jogos. Bem Vindos!



Documentos relacionados
Prof. Jhonatan Fernando

Computação II Orientação a Objetos

API's e Aplicações para Android

Programação para Android. Aula 06: Activity, menus e action bar

Programação para Dispositivos Móveis

Introdução ao Android

CURSO DE PROGRAMAÇÃO EM JAVA

Desenvolvimento de um aplicativo básico usando o Google Android

( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO

Android Básico Hello World!

Java para Desktop. Introdução à Plataforma Java JSE

Programação online em Java

2 Orientação a objetos na prática

Java. Marcio de Carvalho Victorino

Introdução ao IDE Netbeans (Programação Java)

EA998/MC933 Guido Araujo e Sandro Rigo

Programação para Dispositivos Móveis

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação para a Plataforma Android Aula 7. Mul$mídia

Guião de Introdução ao Eclipse IDE Índice

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

Programação de Computadores - I. Profª Beatriz Profº Israel

Android: Ciclo de vida da Activity

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Programação Orientada a Objetos (DPADF 0063)

Geração Automática de Código Android Eficiente a partir de Modelos UML

Java Básico. Aula 1 por Thalles Cezar

Programação Orientada a Objetos em Java

Jogo do NEEC. Primeiramente, criamos uma nova Actividade. File > New > Class

NetBeans. Conhecendo um pouco da IDE

Minicurso introdutório de desenvolvimento para dispositivos Android. Cristiano Costa

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br

Minicurso - Android Fábio Silva / João Paulo Ribeiro

ANDROID APPLICATION PROJECT

Introdução ao Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Keeper of Knowledge. Capítulo 2 Classes em Java

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Desenvolvimento de aplicações na plataforma Google Android

Introdução ao Android. SECAP 2014 Prof. Rone Ilídio - UFSJ

Prof. Esp. Adriano Carvalho

Programa de Dispositivos Móveis

Objetivos: Entender o funcionamento dos programas Java via linha de comando

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Sobre o Professor Dr. Sylvio Barbon Junior

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Primeiro programa em Java (compilação e execução)

Programação de Computadores - I. Profª Beatriz Profº Israel

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

Laboratório I Aula 2

Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013

Programação para Dispositivos Móveis. Activities

O que é o Android? O que é o Android

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

Prototype, um Design Patterns de Criação

Um pouco do Java. Prof. Eduardo

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

Módulo 07 Características Avançadas de Classes

INSTITUTO FEDERAL DE EDUCAÇÃO CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TÉCNICO EM INFORMÁTICA DISCIPLINA:

EA998/MC933 Guido Araujo e Sandro Rigo

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Lógica de Programação

Para criar uma animação precisamos de uma imagem e que ela contenha alguns frames. O número de frames é uma escolha sua.

Introdução ao Android SDK. Prof. Me. Hélio Esperidião

Java : Comunicação Cliente-Servidor.

Técnicas de Programação II

CONTEÚDO (técnico) COMPLETO DO TREINAMENTO INTENSIVO PARA ANDROID Universidade Android

OOP - Java. Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Desenvolvimento para Android Prá9ca 2. Prof. Markus Endler

Java 2 Standard Edition Como criar classes e objetos

Linguagem de Programação III

Encapsulamento de Dados

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Desenvolvimento de um aplicativo básico usando o Google Android

Android OLÁ MUNDO MÓVEL. Prof. Dr. Joaquim assunção.

CURSOS ANDROID. Prof: Igor Portela

OBJETIVO Criação e execução de um projeto Android dentro da IDE IntelliJ.

Configurar o Furbot no Eclipse

Desenvolvimento para Android

Projeto de Software Orientado a Objeto

THREADS EM JAVA. George Gomes Cabral

Desenvolvimento Android. Pontapé inicial...

AULA 2. Minicurso PET-EE UFRN

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

1. Apresentação Objetivos

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

CONVENÇÃO DE CÓDIGO JAVA

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

LINGUAGEM ORIENTADA A OBJETOS

Transcrição:

Minicurso: Android com Java - Jogos Bem Vindos!

Minicurso: Android com Java - Jogos Organização Capítulo I Uma Nova Linguagem Motivação Programação Java com Eclipse AndroidOS

Minicurso: Android com Java - Jogos Organização Capítulo II O Android Contra-Ataca Diretrizes gerais Elementos de um jogo Sprites e Texturas Física Efeitos Mapas Áudio Input Implementando os elementos em Android

Minicurso: Android com Java - Jogos Organização Capítulo III O Retorno de Java Utilizar o conhecimento da Aula 2 Desenvolver um jogo simples Shooter

Minicurso: Android com Java - Jogos Organização Capítulo I Uma Nova Linguagem Motivação Programação Java com Eclipse AndroidOS

Java / Android - Motivação Google Play Store Visibilidade Monetização Distribuição Suporte Oficial, via APIs Comunidade Nova IDE: Android Studio (early access preview) http://developer.android.com/distribute/index.html

Java / Android - Motivação Problemas: Pirataria Tamanho de Telas (e Resoluções) Versionamento

Minicurso: Android com Java - Jogos Organização Capítulo I Uma Nova Linguagem Motivação Programação Java com Eclipse AndroidOS

Java / Android Programação Java Finally some action! Prática: Hello World com Eclipse / ADT! Abrir Eclipse com o Plugin ADT Criar um projeto de Java

Java / Android Programação Java Código para Hello World: public class MinhaClasseFeliz { public static void main(string args[]) { System.out.println("Hello, World!"); } } Ok, o que acabamos de fazer?

Java / Android Programação Java Um pouco de Java... Programa.java COMPILADOR ByteCod e Programa.class you are here JVM JVM JVM... Binary Binary Binary * Windows Linux

Java / Android Programação Java Um pouco de Java Não trata BINÁRIO; trata BYTECODE Linguagem Orientada a Objetos Executa em uma JVM (Java Virtual Machine) Write once, run everywhere

Java / Android Programação Java Um pouco de Java Compilador + Bibliotecas = JDK (Java Development Kit) Diversas IDEs (Integrated Development Environment) disponíveis, mas usaremos o Eclipse Free Suporte oficial via ADT Fácil configuração para Máquina Virtual ou Device para testes e execução do software Aceita (e possui) diversos plugins úteis (e inúteis também)

Java / Android Programação Java Mais um pouco Orientação a Objetos Uma classe equivale a algo no mundo real Instâncias de uma classe são diferentes aparições desse algo Cada classe é definida com propriedades e ações que caracterizam e modificam uma instância (ou não)

Java / Android Programação Java Mais um pouco Orientação a Objetos Alguns princípios e regras Information Hiding: Esconder o acesso direto às variáveis internas. Usar métodos que abstraem o acesso e a modificação. Mapeação Direta: Cada classe representa somente um elemento do mundo real. Interfaces: Usar Interfaces sempre que possível. Porém, mantê-las o mais sucinta possível.

Java / Android Programação Java Mais mais um pouco Cada.java define somente UMA Classe Código organizado por Packages Em cada Package, vários.java

Java / Android Programação Java Mais mais um pouco Programação implementando Classes Interface: define os métodos, mas não implementa! Também pode definir constantes. Definido num.java separado de sua implementação. Classe: pode implementar uma interface ou ser autônoma. Possui a definição e implementação de todos os métodos e variáveis utilizadas pela classe. Caso implemente uma interface, deve importar o.java correspondente. Lembre-se: 1.java = 1 classe OU 1 interface

Java / Android Programação Java Mais mais um pouco Programação implementando Classes Criando Interfaces: [modificadores] Interface NomeDaClasse [extends Interface]* { [definições] } Criando classes: [modificadores] Class NomeDaClasse [extends, implements Classe]* { [definições / implementações] } Instanciando classes (criando Objetos): vari = new NomeDaClasse( [argumentos] ); Chama construtor!

Java / Android Programação Java Mais mais mais um pouco Programação elementos importantes Definição: Variáveis: [modificadores] tipo nome_variável Métodos: [modificadores] tipo_retorno nome_método([argumentos]) Bloco: { [código] } (Alguns) Modificadores: private, public, protected, static, final

Java / Android Programação Java Modificador Classe Package Subclasses Mundo public Sim Sim Sim Sim protected Sim Sim Sim Não -oculto- Sim Sim Não Não private Sim Não Não Não Outros modificadores: static: variável / método independe da instância final: variável só pode ser modificada uma vez (constante)

Java / Android Programação Java Mais mais mais mais um pouco Programação elementos importantes Controle: Condição: if ( [exp booleana]) Laços: for ([ini]; [check]; [inc]) { [código] }; for (Tipo var : oarray) { [código] }; while ([exp booleana]) { [código] }; do { [código] } while ( [exp booleana] );

Java / Android Programação Java Mais mais mais mais mais um pouco Programação algumas convenções de programação Classes e Arquivos: UmaClasseOuArquivo Métodos: ummétodo( [argumentos] ) Variáveis: umavariável Constantes: UMA_CONSTANTE Usem nomes do que faz, não como faz Um código é mais lido que escrito Testem!

Java / Android Programação Java Mais mais mais mais mais mais mais mais mais mais mais... OK, CHEGA! Vamos a um exemplo...

Java / Android Programação Java Mapa de Classes para nosso Jogo Shooter Como abstrair? Que elementos utilizaremos? Algum elemento pertence a outro? Algum elemento é uma especialização de outro? Dica: montar o Mapa de Classes antes da implementação!

Java / Android Programação Java Informações necessárias de um Personagem Posição Pontuação Vida Ações necessárias de um Personagem Andar Atirar Dano / Morrer

Java / Android Programação Java Possível implementação de Dados: Posição: dois inteiros (X e Y) Pontuação: inteiro Vida: inteiro que varia de 0 a 100. Se == 0 morre Porém! Lembre-se dos princípios de Orientação a Objetos! Deixar as informações escondidas e usar funções para recuperar quando necessário. Usar funções que abstraem o significado de cada variável para modificação = GETTERS e SETTERS

Java / Android Programação Java Exemplo de Interface e Classe para uma classe Personagem: public interface IPersonagem { public int getpositionx(); public int getpositiony(); public void movetox(int newx); public void movetoy(int newy); public void shoot(); public void addscore(int addedscore); public int getscore(); public void damage(int damageamount); public int gethealth; } Lembre-se: Interfaces só definem os métodos (ações) ou constantes!

Java / Android Programação Java Classe: public class Personagem implements IPersonagem { private int posx, posy; private int sideturned; private int health; public Personagem() { [código] } public int getpositionx() { [código] } public int getpositiony() { [código] } public void movetox(int newx) { [código] } public void movetoy(int newy) { [código] } public void shoot() { [código] } public void addscore(int addedscore) { [código] } public int getscore() { [código] } public void damage(int damageamount) { [código] }

Classe: Java / Android Programação Java public class Personagem implements IPersonagem { private int posx, posy; propriedades private int sideturned; (properties) private int health; public Personagem() { [código] } public int getpositionx() { [código] } public int getpositiony() { [código] } construtor (constructor) public void movetox(int newx) { [código] } public void movetoy(int newy) { [código] } public void shoot() { [código] } métodos (métodos) public void addscore(int addedscore) { [código] } public int getscore() { [código] } public void damage(int damageamount) { [código] }

Java / Android Programação Java Outro exemplo: Item public interface IItem { public String getname(); public String setname(string newname); public String getinfo(); public String setinfo(string newinfo); public int getpositionx(); public int getpositiony(); public void setpositionx(int newposx); public void setpositiony(int newposy); }

Java / Android Programação Java public class Item implements IItem { private String name, info; private int posx, posy; public Item() { } public String getname() { } public String setname(string newname) { } public String getinfo() { } public String setinfo(string newinfo) { } public int getpositionx() { } public int getpositiony() { } public void setpositionx(int newposx) { } public void setpositiony(int newposy) { } } Essa Classe está correta? Vou trocar o Nome com frequência? Vou trocar eventualmente? Vou trocar a Informação com frequência? Vou trocar eventualmente?

Java / Android Programação Java public interface IItem { public String getname(); public String getinfo(); public int getpositionx(); public int getpositiony(); public void setpositionx(int newposx); public void setpositiony(int newposy); } public class Item implements IItem { private String name, info; private int posx, posy; public Item(String nome, String info) { } public String getname() { } public String getinfo() { } public int getpositionx() { } public int getpositiony() { } public void setpositionx(int newposx) { } public void setpositiony(int newposy) { } } Lembre-se: cada um desses códigos pertence a um arquivo.java SEPARADO

Java / Android Programação Java E se quiséssemos outros tipos de informações? Listas (itens que possui) Enumeráveis (estados: morto,vivo,imortal) Texturas / Imagens (uma sprite para o jogador) O Java (+ bibliotecas Android) possui algumas soluções: Listas ArrayList<tipo> Enumeráveis enum Texturas / Imagens bitmap (!=.bmp)

Java / Android Programação Java Expandindo Classes Temos duas classes usáveis: Personagem e Item Incompletas! Vamos colocar mais informações e ações! Usar os tipos discutidos + pesquisa na Internet para adicionar as seguintes informações: Adicionar informação de custo em moedas em um Item Definir uma variável de estado enumerável que representa o estado atual do personagem (normal, imortal, morto) Criar uma variável que contenha todos os Item que um Personagem possui

Minicurso: Android com Java - Jogos Organização Capítulo I Uma Nova Linguagem Motivação Programação Java com Eclipse AndroidOS

Java / Android Android O Sistema Operacional Android é um Linux com múltiplos usuários onde cada app é um usuár Cada processo possui sua própria Virtual Machine Data sharing é possível com: Ter dois processos com mesmo ID Adicionar permissions no app Seguro! Um aplicativo Android não possui exatamente uma main

Java / Android Android you are here

Java / Android Android Um app pode possuir 4 tipos de componentes Activities* Services Content Providers Broadcast Recievers

Java / Android Android Activities Janela de Desenho (tela inteira ou não) Cada aplicativo pode ter diversas activities Cada activity deve ser o mais independente das de mais possível Geralmente é definido uma activity para ser a main activity É possível abrir activities de outro app, caso seja explicitamente definido assim Pode possuir subelementos: Fragments e Loaders

Lifecycle: Java / Android Android Activities

Java / Android Android Activities Recriação de Atividades Sistema matou um aplicativo hidden Salva e recupera estado atual com um bundle

Java / Android Android Activities Ordem de chamada para Atividade A: Para criação: oncreate(), onstart(), onresume() Para destruição: onpause(), onstop(), ondestroy() Pausar: onpause() Retomar: onresume() Esconder: onpause(), onstop() Abrir novamente: onrestart(), onstart(), onresume() Abrir nova atividade B: A.onPause(), B.onCreate(), B.onStart(), B.onResume(), A.onStop(

Java / Android Android Activities Activities se organizam em Tasks Geralmente, 1 task = 1 app Cada task possui uma Back Stack

Java / Android Android Services Faz operações no background Uma vez começada, não necessariamente pára se o usuário trocar de app Podem ser independentes ou bind (activities, services, content providers) Por default, executa na main thread do app que o iniciou Executa sempre somente uma instância

Java / Android Android Content Providers Cuidam do acesso a estruturas de dados entre apps Não explicitar nada ninguém acessa os dados de seu app Usado para pegar dados do sistema (como a lista de contatos)

ava / Android Android Broadcast Reciever Responde a anúncios feitos que ecoam pelo sistema Exemplos de anúncios: Tela desligada Bateria baixa Ligar / Desligar aparelho Geralmente, fazem executar outro componente

Outros elementos importantes: Views Threads Listeners Intents Java / Android Android

Java / Android Android Views UI completa e nativa Diversos componentes prontos para uso Fácil de estender

Java / Android Android Threads Unidade de execução básica de uma instância de VM Cada app possui uma main thread Podem ser criadas novas threads para trabalhos específicos Problema: sincronização Ex: carregar assets de um jogo enquanto desenha uma animação

Java / Android Android Listeners São interfaces do View com um único método de callback Chamado quando o View designado sofrer algum evento O evento depende do tipo de Listener onclick() OnLongClick() Genérico

Java / Android Android Intents Mensagens ou Chamadas de Sistema Estrutura de Dados que possui uma descrição abstrata da operação a ser feita (ou já feita) Intent filters definem o que uma activity, service e broadcast reciever podem receber como inte

Java / Android - Android Novo Projeto Criar novo Android Project Partes importantes de um projeto Como usar o Eclipse Criando uma UI Criando e Usando uma Máquina Virtual

Java / Android Android Partes importantes de um projeto: Manifest (xml) R (java) Sources Layout Strings