Técnicas de Programação II

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

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: Resize Shape Basic Shape FACULDADE DE TECNOLOGIA SENAC PELOTAS

HABILITANDO A IDE DO ECLIPSE

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

ENG1000 Introdução à Engenharia

Is Event Dispatcher Threade (Animation)

Tipos, Literais, Operadores

Tipos, Literais, Operadores

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

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

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

Criando um Joguinho 2D. Prof. Fellipe Aleixo

Desenhando primitivas

Técnicas de Programação II

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.

Adding User Interaction

Threads. O que é uma Thread? Paralelismo

Orientação a Objetos AULA 09

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

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

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

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){

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

Vetores Unimensionais

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