Técnicas de Programação II

Documentos relacionados
Introdução a Programação de Jogos

Introdução à Engenharia ENG1000

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Font size Animation FACULDADE DE TECNOLOGIA SENAC PELOTAS

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas:

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: insira as propriedades escolhidas aqui FACULDADE DE TECNOLOGIA SENAC PELOTAS

Exemplo Threads com Swing:

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Animation: Paint and thread FACULDADE DE TECNOLOGIA SENAC PELOTAS

LPII Programando uma Cálculadora Simples Módulo III

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Resize Shape Basic Shape FACULDADE DE TECNOLOGIA SENAC PELOTAS

Prof. Fernando V. Paulovich 25 de julho de SCC Programação Orientada a Objetos

HABILITANDO A IDE DO ECLIPSE

Dr. Sylvio Barbon Junior. Departamento de Computação - UEL. 1 o Semestre de 2015

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

ENG1000 Introdução à Engenharia

Introdução a Programação de Jogos

Is Event Dispatcher Threade (Animation)

Tipos, Literais, Operadores

Tipos, Literais, Operadores

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação Gráfica Parte 2 Versão em Java 2006 PUCPR Tutoria de Jogos 1º Ano

Biblioteca Gráfica. Adriano Cruz. 28 de Abril de 2015

JAVA APLICAÇÕES GRÁFICAS Propriedade Utilizada: FontSizeAnimation

Threads. Leonardo Gresta Paulino Murta

package br.com.cadastro.visao;

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Crie dois pacotes: jogo e imagens Coloque as imagens da cobra, da fruta e da parede no pacote imagens Crie uma nova classe chamada Cobra no pacote

Instituto Superior de Engenharia de Lisboa

LINGUAGEM DE PROGAMAÇÃO II Criando uma Classe

Jogos Eletrônicos. Aula 07 Estruturas de Repetição e Imagens. Edirlei Soares de Lima

Criando um Joguinho 2D. Prof. Fellipe Aleixo

Desenhando primitivas

Utilizando Threads em Java

Técnicas de Programação II

Sistemas Operacionais

Programação Gráfica Parte 3 Versão em Java 2006 PUCPR Tutoria de Jogos 1º Ano

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

E-book gerado especialmente para Adriano Louzada Bollas -

1) Responda de acordo com os conceitos de orientação a objetos (0,5).

Jogos Eletrônicos. Aula 06 Estruturas Condicionais e Interação. Edirlei Soares de Lima

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Exemplo com SWING 1: Fazer uma aplicação, em Java, que tenha, na tela, uma JProgressBar, um JLabel e um JButton.

Análise e Projeto Orientados por Objetos

// quando o estado do Sujeito muda

Adding User Interaction

APÊNDICE D O Projeto do javaplay

Threads. O que é uma Thread? Paralelismo

Orientação a Objetos AULA 09

Threads em Java. Java Threads. Java Componentes: JVM JVM:

MANIPULAÇÃO DE EVENTOS

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Módulo Lógica Programação com aplicações em Java. Projeto khouse Profissionalizante Profª Larissa Brandão

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

Introdução ao HTML5 Canvas

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada por Objectos 2007/2008

Tratamento de Exceção. Programação Orientada a Objetos Java (Rone Ilídio)

Linguagem Algorítmica OO. Linguagem Algorítmica

J2ME. Prof. Marcos R Macedo

Reproduzir sons em Java. import java.net.url; import javax.swing.*; import javax.sound.sampled.*; public class ReproduzSons {

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Linguagem de Programação III

Lição 4 Fundamentos da programação

Algoritmos I Aula 13 Linguagem de Programação Java

Múltiplas Linhas de Execução Java (Threads)

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Programação Estruturada e Orientada a Objetos

Aula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

// quando o estado do Sujeito muda

Java e sua Sintaxe. Estrutura mínima de um programa em Java: public class Exemplo { }

Seleção Múltipla Laços (while, do-while, for) AULA 05

Aula Prática Criando Views e Controles

Vector Java. Empregado.java

Programação Concorrente com Thread Java. Luiz Affonso Guedes Sistemas Distribuidos

PROGRAMAÇÃO ORIENTADA A OBJETOS JAVA

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

Java Applet. Vitor Vaz da Silva

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados

Encerrando Introdução a Objetos e Classes Redefinição de Métodos (1)

Vetores Unimensionais

Interfaces e Classes Internas

Introdução a Computação

Linguagem de Programação II Implementação

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

Sintaxe da linguagem Java

Linguagem de Programação Visual

Aula 1 POO 1 Prática. Profa. Elaine Faria UFU

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA. Fazer desaparecer da tela do jogo a espaçonave inimiga quando um tiro acertá-la.

MsC. João Maria MsC. Liviane Melo

AULA 6 - ARRAYS. Array de 10 elementos

Interfaces Gráficas (GUIs) em Java usando Swing Parte I - O básico

Computação Gráfica Aula 1 - Primitivas gráficas em duas dimensões. Alexandre de Barros Barreto - Ms

Variáveis Compostas. Vanessa Braganholo

Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga

Introdução ao Desenvolvimento de Jogos em Java Corrigido e ampliado em 20/Fev/2009

Transcrição:

Técnicas de Programação II Aula 05 Java 2D Edirlei Soares de Lima <edirlei.lima@uniriotec.br>

Java 2D Java 2D é uma API da linguagem Java que fornece funcionalidades básicas para o desenho de objetos gráficos 2D. Prove um conjunto de funções para a renderização de formas geométricas básicas (linhas, arcos, retângulos, etc.) e imagens.

Java 2D Programa Base package Java2D; import java.awt.color; import java.awt.graphics; import java.awt.graphics2d; import javax.swing.jpanel; CanvasPanel.java public class CanvasPanel extends JPanel implements Runnable public CanvasPanel() setdoublebuffered(true); setfocusable(true); load(); new Thread(this).start(); @Override public void paintcomponent(graphics g) super.paintcomponent(g); draw(g);...

Java 2D Programa Base... CanvasPanel.java @Override public void run() double btime, dtime = 0; btime = System.currentTimeMillis(); while(true) update(dtime/1000); repaint(); try Thread.sleep(1); catch (InterruptedException e) System.out.println(e.getMessage()); dtime = (System.currentTimeMillis() - btime); btime = System.currentTimeMillis();...

Java 2D Programa Base... private void load() setbackground(color.black); CanvasPanel.java private void update(double dt) private void draw(graphics g) Graphics2D g2d = (Graphics2D)g; g2d.setcolor(color.white); g2d.drawstring("hello World!", 360, 300);

Java 2D Programa Base package Java2D; MainFrame.java import javax.swing.jframe; import javax.swing.swingutilities; public class MainFrame extends JFrame public MainFrame() settitle("java 2D"); setdefaultcloseoperation(jframe.exit_on_close); add(new CanvasPanel()); setsize(800, 600); setlocationrelativeto(null);...

Java 2D Programa Base... MainFrame.java public static void main(string[] args) SwingUtilities.invokeLater(new Runnable() @Override public void run() new MainFrame().setVisible(true); );

Java 2D Hello World private void load() setbackground(color.black); private void draw(graphics g) Graphics2D g2d = (Graphics2D)g; g2d.setcolor(color.white); g2d.drawstring("hello World!", 360, 300);

Java 2D Coordenadas de Tela 0 200 800 x 100 (200,100) 600 y

Método draw É método draw é executado sempre que um novo frame precisa ser renderizado. Ele é executado continuamente para a renderização dos frames que serão exibidos na tela. Todas as funções para desenho de objetos gráficos deve ser executadas no método draw. private void draw(graphics g) Graphics2D g2d = (Graphics2D)g; g2d.setcolor(color.white); g2d.drawstring("hello World!", 360, 300);

Método load É método load é executado apenas uma vez no momento que o programa é iniciado. A função é geralmente usada para: Carregar recursos (imagens, áudio, etc.) Inicializar variáveis Definir configurações private void load() setbackground(color.black);

De Volta ao Hello World private void load() setbackground(color.white); private void draw(graphics g) Graphics2D g2d = (Graphics2D)g; g2d.setcolor(color.black); g2d.drawstring("hello World!", 360, 300);

Método update(double dt) O método update(double dt)é continuamente executado em loop enquanto o programa estiver aberto. O parâmetro dt indica o tempo que se passou desde a última vez que essa função foi chamada (usualmente um valor bem pequeno) A função é geralmente usada para: Animação Cálculos de física Inteligência artificial de inimigos Calcula o deslocamento em X de forma independente da velocidade de execução do programa private void update(double dt) px = px + (100 * dt);

De Volta ao Hello World private double px = 0; private void load() setbackground(color.black); private void update(double dt) px = px + (100 * dt); private void draw(graphics g) Graphics2D g2d = (Graphics2D)g; g2d.setcolor(color.white); g2d.drawstring("hello World!", (int)px, 300);

Classe Graphics2D A classe Graphics2D (que é derivada da classe Graphics), contem diversas funções dedicadas a operações gráficas: Desenho de linhas, formas geométricas, texto, imagens, etc. É possível consultar a lista completa de funções das classes Graphics2D e Graphics nos seguintes endereços: http://docs.oracle.com/javase/7/docs/api/java/awt/graphics2d.html http://docs.oracle.com/javase/7/docs/api/java/awt/graphics.html

Classe Graphics2D Desenhando formas geométricas básicas: Método para desenhar formas geométricas (contornos): void draw(shape s) Método para desenhar formas geométricas (preenchidas): void fill(shape s)

Classe Graphics2D Desenhando formas geométricas básicas: Retângulo: Exemplo: Rectangle2D.Double(x, y, width, height) g2d.draw(new Rectangle2D.Double(300, 250, 200, 100)); g2d.fill(new Rectangle2D.Double(300, 250, 200, 100));

Classe Graphics2D Desenhando formas geométricas básicas: Elipse: Exemplo: Ellipse2D.Double(x, y, width, height) g2d.draw(new Ellipse2D.Double(350, 250, 100, 100)); g2d.fill(new Ellipse2D.Double(350, 250, 100, 100));

Classe Graphics2D Desenhando formas geométricas básicas: Linha: Exemplo: Line2D.Double(x1, y1, x2, y2) g2d.draw(new Line2D.Double(300, 300, 500, 300));

Classe Graphics2D Desenhando formas geométricas básicas: Polígono: Exemplo: void fillpolygon(polygon p) int x1points[] = 350, 450, 400; int y1points[] = 300, 300, 200; g2d.fillpolygon(new Polygon(x1Points, y1points, 3));

Classe Graphics2D Desenhando formas geométricas básicas: Modificando a cor das formas geométricas: Exemplo: void setcolor(color c) g2d.setcolor(new Color(0, 255, 0)); g2d.fill(new Rectangle2D.Double(300, 250, 200, 100));

Exemplo 1 Primitivas Geométricas private void draw(graphics g) Graphics2D g2d = (Graphics2D) g; g2d.setcolor(new Color(0, 134, 0)); g2d.fill(new Rectangle2D.Double(100, 100, 600, 400)); int x1points[] = 120, 400, 680, 400; int y1points[] = 300, 120, 300, 480; g2d.setcolor(new Color(252, 252, 0)); g2d.fillpolygon(new Polygon(x1Points, y1points, 4)); g2d.setcolor(new Color(0, 0, 140)); g2d.fill(new Ellipse2D.Double(280, 180, 240, 240));

Exemplo 1 Primitivas Geométricas

Tipo Image Jogos não são criados somente com formas geométricas básicas. Normalmente a arte do jogo é definida por um conjunto de imagens. Java oferece uma classe para armazenar imagens chamada Image. Image img; Podemos carregar uma nova imagem através do comando: img = new ImageIcon(this.getClass(). getresource("image.png")).getimage(); Podemos desenhar uma imagem através do comando: g2d.drawimage(im, 200, 200, this);

Tipo Image Exemplo: private Image hamster; private void load() setbackground(color.black); hamster = new ImageIcon(this.getClass(). getresource("hamster.png")).getimage(); private void draw(graphics g) Graphics2D g2d = (Graphics2D) g; g2d.drawimage(hamster, 200, 200, this); http://www.inf.puc-rio.br/~elima/intro-eng/hamster.png

Tipo Image

Java 2D Interação pelo Teclado private boolean[] key_states = new boolean[256]; private class KeyboardAdapter extends KeyAdapter @Override public void keyreleased(keyevent e) key_states[e.getkeycode()] = false; @Override public void keypressed(keyevent e) key_states[e.getkeycode()] = true;

Java 2D Interação pelo Teclado private void load() addkeylistener(new KeyboardAdapter()); private void update(double dt) if (key_states[keyevent.vk_right]) px = px + (100 * dt); if (key_states[keyevent.vk_up]) py = py - (100 * dt);... private void draw(graphics g) Graphics2D g2d = (Graphics2D) g; g2d.fill(new Ellipse2D.Double(px, py, 100, 100));

Projeto: Space Shooter Jogo simples: Space Shooter 1. Controle da nave pelo teclado; 2. Mantendo a nave na tela; 3. Geração de estrelas; 4. Turbo para a nave;

Projeto: Space Shooter Continuação? Trabalho 2! 1. Implementar a estrutura do jogo usando classes; 2. Atirar com a nave (usando array de tiros); 3. Gerar inimigos (usando array de inimigos); 4. Detectar colisão (nave/inimigos); 5. Detectar colisão (tiros/inimigos); 6. Controle de vidas e pontuação; 7. Etc

Exercícios Lista de Exercícios 06 Java 2D http://uniriodb2.uniriotec.br